欢迎微信扫一扫互相交流学习哦!
项目git源码:https://gitee.com/oklongmm/biye
1 绪论
1.1 提出和现状
在我国高校实践教学改革的形势下,课程实践教学前景广阔。在国外,有些高校已经具有了根据本校实际教学情况而自己开发的实训教学平台,或者购买专业商家开发的相类似软件。而国内高校针对软件教学,实训教学平台建设相对起步较晚,一些相关教学软件并不完善,而且需要花大价钱购买,因此,开发适合本校、本专业自己的实训教学平台是非常有必要的[1]。
该项目是中北大学软件学院根据发展的长远战略,并围绕软件学院实训基地建设的要求,体现“面向未来”的设计思想,建设一个行业示范、大方合理、有现代感、功能完备、安全可靠、可持续发展、设施先进、绿色环保、投资合理的现代化实训示范基地,以培养规范化的、适合工程化项目的、具备专业技术技能的实用型人才为目标,实现测评、人才培养、企业扶植等功能。切实为中北大学软件学院发展提供一个高品质的运行环境,为学生实习提供方便、快捷、舒适的学习环境,并为管理人员提供安全、高效的管理手段。
1.2 产生和环境
课程设计跟踪管理系统的产生是因为目前高校扩招后,在校学生日益增多。如果仍然通过传统的纸上操作方式来实现,既浪费大量人力物力,又浪费时间。同时在人为的手工统计中会不可避免的出现失误,因此,需要通过借助计算机系统,让课程设计的学生只要在计算机中输入自己的个人基本信息,然后选择课设题目来替换手工操作成为高效管理的必然趋势。该系统能够为学生提供方便的业务选择,也能够提高高校对学生和教学管理的效率。
本系统软件主要包括实训课题管理子模块、课题跟踪子模块、及实训设计审核子系统。《中北大学软件课程设计过程系统》是《中北大学软件实训基地暨软件开发技术支撑平台建设项目》中很重要的一部分内容。此项目是中北大学软件学院根据的长远战略,伴随无纸化办公的快速实现,信息的自动处理、分析以及网络式的信息交互越来越被人们认知和使用。使用计算机来管理学生的基本信息是现在各个高校都在认真进行的工作,也是高校教学管理工作和任务的重要内容。通过计算机管理相比传统手工方式更加节约资源,并且,随着课设学生业务管理自主权的增加,使教学更加透明和公平。
2 可行性分析
2.1 项目意义
中北大学软件学院在校学生3000多人,不管是院领导还是老师,对于学生的管理比较艰难。在每学期的课程设计,学生要选择自己的课题,还要及时上交周期性任务和课题进展状况,最后还要实训结题。在这么多的年级、班级,一个老师要有可能负责多个班级学生的实训课题,对于学生的学习指导、综合管理和实训课设结题评分很难公平公正实现。在这个实训课程设计过程中,老师、班长、学生,相互信息反馈比较费时间,最后对于学生课题统计和实训文档材料的管理也需要人工手处理。如果使用了实训跟踪系统,对于以上所描述的课程设计缺点将有所改善,实现了公平、公正、高效率,因此需要开发实训跟踪管理系统。
该系统适应了学生自主选题、自主安排时间的迫切需要,使学生有了更大的选择空间;同时,方便了老师的统一管理,简化了实训选题的流程,打破了以前死板的固定选择模式,也方便了教师对实训学生管理、成绩统计,更进一步使教学的重点向高质量、高目标的方向转移。
2.2 项目需求
2.2.1 业务问题
(1) 在实训过程中,学生不能按流程来做方案,以至于不能按时结束。
(2) 学生的文档及成果不是很理想,没有规范化。
(3) 选题、上机实验、作业等费时来实施和管理。
(4)现阶段发布课题的步骤比较繁琐时效性不强。
(5)学生选题后在操作过程中,和老师的交流不便,老师对学生进行的过程不得而知。
(6)学生上机实训过程中,实现阶段化管理比较困难,学生容易偷懒。
(7)文档不规范,学生的电子版文件在上交和存储时过程繁琐,给老师带来很多不便。
2.2.2 问题分析
(1)学生自己控制能力比较低,对待实训事件没有兴趣,缺乏动力。
(2)学生对于实训内容不是很清楚,以至于不知道做些什么或者怎么去做,且他们的实践能力比较差。
(3)教师工作多,比较繁忙,不能及时通知和管理学生。
2.2.3 问题解决
通过网上管理,学生和老师都能及时网上登陆发布进展和作业.实训系统方便学生的管理,给计算机爱好者提供了实践的编程机会,提高了学生的动手思考能力,加快社会的信息化发展水平。
2.2.4 角色用例
此产品的用户包括用户管理员、实训教师、实训学生、实训负责人,每个角色都有权限控制。学生需要管理员后天统一添加之后才能登陆,需要提供自己的学号,每人只有一个账号;老师同样也是,提供教师编号,方可访问和操作此系统;对于实训负责人需要权限控制,一些基本数据不可以随便更改,主要是审核和查看最后实训结果的统计汇总。管理员是对用户的角色权限管理和添加。如图2.1所示。
图2.1 用户角色用例图
2.2 主要功能
实训跟踪系统主要包括老师编制实训信息、实训课题内容、审核学生课题申请、编制实训任务、批改学生实训任务作业,学生可以申请课题、选择课题、查看任务、提交作业、负责人可以查看实训报表、审核实训信息,管理员数据管理、权限管理,实现对学生实训的跟踪管理和教育。
3 项目规划
3.1 项目总体周期
项目的总体任务是需求和编码,测试阶段找专业同学测试,其中项目可行性分析3天,项目需求分析3天,项目设计3天 ,编码 30天,测试(周国媚)10天,部署1天,共计50天。我担任全部开发和项目管理工作。在开发的后期几段,邀请四名个同学作为用户,分别代表老师与系统管理员,学生,项目负责人这三个角色。开发过程中每个角色在不同位置进行演示,讨论不足。
3.2 项目组织结构
此系统的结构主要分为登陆管理模块、实训过程管理模块、师生交流管理模块,其中交流模块是可选做的。如图3.1所示。
用户判断识别 |
用户注册 |
用户授权 |
选题子系统 |
跟踪子系统 |
审核子系统 |
在线交流系统 |
疑问讨论管理 |
系统留言 |
交流管理(可选) |
实训跟踪系统 |
登陆管理系统 |
实训过程管理系统 |
图3.1系统结构图
3.3 项目管理
本系统开发采用敏捷研发管理Scrum,每2周一个周期迭代,每日遇到的问题,我会自己记录下来和其他同学讨论,然后再去问自己明天需要完成什么任务,每两周都要有可以演示的系统产出物展示并找模拟用户收集反馈。过程中还用到用户体验驱动的方式完善需求,Git作配置管理,每日及时上传项目文件,实施自动化部署和测试等。Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周[2]。
4 需求分析
4.1 外围接口
此系统是《中北大学软件实训基地暨软件开发技术支撑平台建设项目》的一个子项目,因此需要实现很多外围接口,以便系统之间相互访问,查询数据。经过小组研究讨论,发现有些技术和设计比较复杂,考虑我们总体研发时间,就做简单的设计。
本项目外围接口有知识库管理系统、实验室预约系统、学生考勤系统、在线考试系统、查询服务系统等。知识库管理系统可以为实训跟踪管理系统提供实训过程中文件存储及管理,实训跟踪系统可以显示知识库管理系统提供查询的信息;实验室管理系统可以提供查询和预定为实训跟踪管理系统,实训跟踪系统可以通过实验室管理系统显示成功预约的信息;实训跟踪管理系统的考勤信息上传到学生考勤系统,学生考勤信息可以反馈到实训过程跟踪管理系统显示,学生考勤系统也可以支持查询等管理的接口;在线考试系统把考试时间和结果的等信息反馈给实训跟踪系统来显示,实训跟踪管理系统可以查询考试信息等详情在在线考试系统;实训跟踪管理系统可以把提交的考试作业信息上传到考试系统,在线考试系统可以提供在线审批接口。如图4.1所示。
图4.1外围接口图
4.2 业务模型
本系统是由实训课题管理模块,实训课题跟踪模块,实训设计审核模块,实训课题选题模块,其模块之间的关系如图4.2 所示。
图4.2 内部接口图
课题管理模块给实训审核模块提供任课老师的实训课题和学生自己申报的课题项目(选作),课题跟踪模块需要实训审核模块的实训信息,实训课题选题模块需要实训审核模块的实训课题信息。而实训审核需要课题选题的选题信息。对于实训的交流模块可以选作。
4.3 整体要求
本系统为B/S结构,系统页面以业务操作的方便性来构建,各个子系统都采用统一的用户权限管理,所有的查询页面需要分页显示(除非特别提出),所有的信息都需要经用户登录以后才能查询(除非特别提出)。系统需要提供简介的用户验证提示,对于所有删除要求再一次确定提示,并且删除返回到原来界面,用户查询需要保留原来的查询字段。界面的整体风格如图4.3所示。
图4.3 界面设计图
4.4 概要设计
实训过程跟踪系统,主要事件包括任课老师创建课设,任课老婆是修好课设,学生修改选题信息,任课老师从新发布课设, 任课老师修改任务,对于的业务流程如图4.4所示。
图4.4 业务流程图
实训的基本流程描述如下:
- 任课老师提交实训课题及相关要求。
- 实训负责人查看提交的实训课题信息,审核是否通过。
- 学生根据任课老师的要求从系统选择实训审核通过的课题。
- 任课老师定义学习过程和相关任务。
- 学生根据学习过程的要求提交作业。
- 任课老师审批学生提交的作业。
- 如果课程设计已经完成,学生提交测试报告。
- 老师进行课程设计验收并提交验收报告。
4.4.1 课题管理模型范围
(1). 实训老师创建实训
1). 业务流程
任课老师创建实训的业务流程如图4.5所示。
图4.5 创建课题流程图
2). 业务描述
实训老师:创建实训课设包括实训基本信息、课题信息、课题项目信息、实训阶段时间设置。
实训学生:上报课题申报时,须填写组长和组员信息;提交以后可以在审核前修改信息;其选择课题需由每个本人选择,组长需创建自己的小组(小组名必填)。
学生选题原则:要求课题尽量平均班级每个小组,学生选题确认后不能修改,如有特殊情况,实训老师可以删除学生已选课题,学生可以重新选择。
项目可选做部分:对于学生申请自己的项目功能,系统动态通知功能。
(2).实训老师修改实训信息
实训信息修改主要包括:实训基本信息、课题信息、实训阶段信息,提交信息管理员审核后修改无需再审核。其修改的信息为确认信息,系统默认执行。
老师修改实训信息时间为在实训开始和实训结题之间的阶段。其他时间不与处理。
(3).实训学生修改已选课题
学生修改课题必须是实训老师删除学生已选课题,学生才可再次选题。修改时间必须为实训任务发布前。
4.4.2 跟踪管理模型范围
(1).实训老师创建任务
1.业务流程
任课老师创建任务事件的产生的业务流程如图4.5所示。
图4.5 任务发布流程图
2. 业务描述
实训老师:根据实际课设来创建任务,设定学生规定完成时间。
实训学生:每个小组的每个学生必须都要及时提交作业。作业暂时是以内容提交方式保存。
4.5 用例图
实训课程课题管理模块如图4.6所示。
图4.6 课题管理用例图
实训跟踪管理模块如图4.7 课题跟踪用例图所示。
图4.7 课题跟踪用例图
实训用户管理模块如图4.8所示。
图4.8 用户管理用例图
5 系统设计
5.1 开发技术
5.1.1 开发环境
数据库系统:Oracle 11g
开发语言:JAVA
开发工具:MyEclipse
服务器:Tomcat
5.1.2 J2EE开发框架简介
J2EE是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台。由于它们都遵循了J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上。为了推广并规范化使用J2EE架构企业级应用的体系架构,Sun同时给出了一个建议性的J2EE应用设计模型:J2EE Blueprints。J2EE Blueprints提供了实施J2EE企业级应用的体系架构、设计模式和相关的代码,通过应用J2EE Blueprints所描述的体系模型,能够部分简化架构企业级应用这项复杂的工作。J2EE Blueprints是开发人员设计和优化J2EE组件的基本原则,同时为围绕开发工作进行职能分工给出了指导性策略,以帮助应用开发设计人员合理地分配技术资源[3]。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能[4]。
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能[5]。
SQL Server由Microsoft开发和推广的关系数据库管理系统(DBMS),其主要目的是尽可能快地存储、管理和检索大量数据。它具有使用方便、可伸缩性好、与相关软件集成程度高等优点,可跨越多种平台使用。SQL Server的可伸缩性既可以适应很小的个人数据库,也可以适应大型的企业级的数据管理。而且故障切换和恢复这两种技术内置到了SQL Server系统中,使得SQL Server具有了高度的可用性[6]。
5.1.5 Tomcat服务器简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的[7]。
5.2 数据库设计
根据需求分析,选取oracle 11g作为数据库。本系统数据库中各个数据表的字段定义和说明如下。
UserInfo表,用于存放学生、老师、负责人及管理员的基本信息,如图5.1所示。
图5.1 UserInfo图
Work表,用于存放学生作业的基本信息,如图5.2所示。
图5.2 Work图
Task表,用于存放课设任务的基本信息,如图5.3所示。
图5.3 Task图
Curriculum表,用于存放实训课设的基本信息,如图5.4所示。
图5.4 Curriculum图
Cs_Project_Info表,用于存放学生选题项目的基本信息,如图5.5所示。
图5.5 Cs_Project_Info图
Project表,用于存放课设项目的基本信息,如图5.6所示。
图5.6 Project图
5.3 系统框架设计
本系统框架开发使用SSH的开发模型,struts2框架主要是对UI和Control之间页面取值和页面跳转,Hibernate框架是对数据库的JDBC的操作,Spring框架整合Hibe rnate和Struts2的配置文件、SessionFactory、事务处理、日志处理及注解的配置。
项目的开发模式是MVC,主要Java类存放的文件分配方式为action、service、dao、model、util、tool.静态类Constant放在zb.innovate.util中,分页的Page和过滤器SessionFilter类放在zb.innovate.tool中。Spring 的配置文件为applicationContex t.xml ,Struts2的配置文件放在struts.xml文件中。项目开发动态文件如图5.7所示。
图5.7项目开发结构图
在开发过程中,需要对jsp文件、css、js、images进合理存放,问了防止jsp文件的安全访问,除了login.jsp文件放在Webroot文件下,其他文件放在WEB-INF文件下。静态资源文件存放位置。如图5.8所示。
图5.8 项目静态结构文件图
6 编码实现
6.1 前台设计
本项目的登陆界面所有用户公用一个,只是登陆的角色不一样,且有用户的验证失败提示。登陆界面的代码中表单为testLogin.action,这是一个检查验证码的方法。如图6.1 登陆界面图所示。
图6.1 登陆界面图所示
管理员可以管理用户并且赋权。对于数据的前台列表主要通过struts2的iterator标签来便利数据,数据源为userList,如图6.2 用户管理图所示。
图6.2 用户管理图
教师创建课设,修改课设、删除课设和条件搜索课设。对于课程设计的修改界面,使用了html的iframe内置框架,把数据库的数据获取到返回到表单中.如图6.3 课题管理界面图所示。
图6.3 课题管理界面图
学生选题可以查看实训信息,选择实训课题。如图6.4 学生选题界面图所示。
图6.4 学生选题界面图
6.2 数据库连接
在spring的配置文件中,建立数据源,连接数据库,配置数据模型,代码如下所示。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="sch"/>
<property name="password" value="sch"/></bean>(此段bean主要是连接数据库)
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.Loca-
-lSes sionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties"><props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect </props></property>(设置hibernate的数据源。)
<property name="mappingResources">(设置数据源模型。)
<list><value>zb/innovate/model/PtUserinfo.hbm.xml</value>
<value>zb/innovate/model/Curriculum.hbm.xml</value>
<value>zb/innovate/model/PtProject.hbm.xml</value>
<value>zb/innovate/model/CsProjectInfo.hbm.xml</value>
<value>zb/innovate/model/CsTask.hbm.xml</value>
<value>zb/innovate/model/StWork.hbm.xml</value></list>
</property></bean>
在JAVA代码中,如何获取数据库连接,以及多数据的操作代码如下:
@Autowired
protected SessionFactory factory;(通过注解获取hibernate的session)
protected Session getSessions() { return factory.getCurrentSe ssion(); }(定义一个获取session的方法,以便后面方法使用。)
Query query = this.getSessions().createQuery("from Curriculum where tid = ? order by startTime desc");
query.setInteger(0, id);
page.setTotalSize(query.list().size());(获取分页的总数据数。)
query.setFirstResult((page.getNowPage()-1)*page.getPageNum());
query.setMaxResults(page.getPageNum());
ArrayList<Curriculum> curriculumList= (ArrayList<Curriculum>) query.list();(最后这点代码主要是如何获取数据,并且设置分页管理。)
6.3 数据处理
项目的逻辑代码主要是在Action中,通过Spring的依赖注入和注解的方式获取Service,通过调用Service层的方法处理业务逻辑。@Autowired private CurriculumService curriculumService;此代码是获取CurriculumService的对象实例通过注解的方式。@Autowired private ProjectService projectService;此代码是获取ProjectService 的对象实例通过注解的方式。public String listStaticCurriculum() {
PtUserinfo ptUserinfo = (PtUserinfo)this.getSession().get("user");if (ptUserinfo == null) {return SUCCESS;}page.setPageNum(14);curriculums = curriculumService.selectCho- -osedCurriculumInfo(ptUserinfo.getId(), page);return SUCCESS;}这段方法代码主要是获取课程设计统计信息。public String deleteCsProjectInfo() {curriculumServic- -e.deleteCsProjectInfo(cspid);return SUCCESS;}这段方法代码是删除课设信息。public String listGetCsProjectDetailByCurriculum() {if(null == csProjectInfo) {
csProjectInfo = new CsProjectInfo();csProjectInfo.setStudent(new Student());
csProjectInfo.setPtProject(new PtProject());}object=new HashMap<String ,String>();
object.put("sname", csProjectInfo.getStudent().getSname());object.put("sclass", csProjectInfo.getStudent().getClass_());object.put("ptitle", csProjectInfo.getPtProject- -().getTitle());object.put("groupName", csProjectInfo.getGroupName());
csProjectInfos = curriculumService.selectCSProjectDetailByCurriculumId(object, id, page);projects = projectService.selectProjectByCid(id);groups = (ArrayList<Grou- -p>)curriculumService.getGroupsByCid(id);curriculumId = id;return SUCCESS;}此段方法代码主要获取学生选题信息,并且可以支持分页和不同条件的查询。
登陆功能的是分为4个角色登陆,分别处理不同角色的登陆和用户信息存储。方法主要调用Service层的checkloginfan方法,反回布尔值,并且也对数据进行了验证处理。登陆逻辑方法代码如下。
public String Login() throws Exception {
if (userservice.checklogin(ptUserinfo.getLoname(), ptUserinfo.getLopassword(), ptUserinfo.getType())) {
PtUserinfo userinfo = userservice.selectUser(ptUserinfo.getLoname(), ptUserinfo.getType());String[] arrayTime = userinfo.getLotime().split("/");
userinfo.setLotime(arrayTime[0] + "年" + arrayTime[1] + "月"
+ arrayTime[2] + "日 " + arrayTime[3] + ":" + arrayTime[4]);
super.getSession().put("user", userinfo);
int type = Integer.parseInt(userinfo.getType());
switch (type) {
case 0:return "STUSUCCESS";
case 1:return "TEASUCCESS";
case 2:return "MANSUCCESS";
case 3:return "LEADERSUCCESS";
case 4:return SUCCESS;
} }
message = "您输入的帐号或者密码不正确,请重新输入。";return ERROR;
}
7 总结
实训跟踪系统的开发,是为了满足学校学生老师等角色的工作学习的需要,而进行开发的项目。项目主要是为方便学生选题,教师管理学生课设。项目的开始阶段,了解业务,完成项目的实际需求。项目的主要分为项目的需求、项目文档的编写、编码、界面设计,最后进行统一测试。
目前项目基本功能已经全部实现,在完成工作的任务的过程中,我定期讨论,研究项目开发中发现的问题。我们项目开发使用敏捷研发管理Scrum,每2周一个周期迭代,每日遇到的问题,我会自己记录下来和其他同学讨论,然后再去问自己明天需要完成什么任务,每两周都要有可以演示的系统产出物展示并找模拟用户收集反馈。
本系统采用java语言进行编写。该系统主要应用于网上师生进行信息的交互,代替了传统的手工处理方法。对于以上所描述的课程设计缺点将有所改善,实现了公平、公正、高效率,因此需要开发实训跟踪管理系统。该系统适应了学生自主选题、自主安排时间的迫切需要,使学生有了更大的选择空间;同时,方便了老师的统一管理,简化了实训选题的流程,打破了以前死板的固定选择模式,也方便了教师对实训学生管理、成绩统计,更进一步使教学的重点向高质量、高目标的方向转移。
项目的成果主要包括项目的需求分析文档、项目产品文件。项目基本可以试运行,实训学生可以选择课题、可以查看周期任务,任课老师可以发布实训内容、发布周期任务、查看学生选题情况和统计、可以分类检查学生的作业情况,实训的负责人可以审核实训,给出原因,管理员可以管理用户以及角色的赋权。项目有很好的前景,可以再扩展一些起的的功能和约束,是本系统更加的多更能化,公平化以及高效化。
到此,毕业设计即将完成,而大学生活也即将结束。通过这次毕业设计,我更进一步掌握了软件的需求设计、JAVA知识及其相关技术,也更深入了解和学习软件的开发过程以及软件的生命周期。