中国红 实验七 综合软件项目案例
实验七:综合软件项目案例 简单高校学生管理软件
项目 | 内容 |
---|---|
班级博客链接 | 2023春软件工程2020级计算机科学与技术 |
本次作业要求链接 | 实验七:综合软件项目案例 |
团队名称 | 中国红 |
团队的课程学习目标 | 完成综合软件项目案例,总结软件开发相关经验 |
这个作业在哪些方面帮助团队实现学习目标 | 1.通过实现并拓展综合软件项目案例,加深对开发过程各个环节的理解,提高开发能力; 2.练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途。; 3.理解面向对象软件开发过程。 4.通过博客阐述项目案例的分析,提高表达和交流能力。 |
团队博客链接 | 中国红 |
团队Github仓库地址链接 | zhong-guo-hong |
一、团队的课程学习目标:
(1)练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途;
(2)掌握软件项目的数据库逻辑结构设计方法;
(3)掌握软件项目的软件结构设计方法;
(4)理解面向对象软件开发过程。
二、实验资源说明
1.项目源代码
- (1).项目需求简介:高校学生进入学校后,需要建立个人学籍档案信息,并分专业、班级进行学习。各专业均设置相应的课程体系,并安排教师开展教学活动。学生在指定学习期内,完成规定的学习任务获得相应的学分后方可毕业。该项目是一个简单高校学生管理软件,实现对以上学习活动中专业(major)、班级(classes)、学生(student)、课程(subject)、成绩(score)、教师(teacher)的信息化管理。
- (2).项目设计简介:该项目是一款B/S结构的应用软件,采用MVC设计模式设计软件结构,其中:V层采用JSP技术开发、C层采用Servlet技术、M层采用JavaBean技术;数据库采用MySQL;Web服务器采用Tomcat。
- (3).项目用户类型及功能:系统有学生、教师、教务员和管理员四类操作用户。学生主要是查看课程和成绩;教师主要是查看课表、班级和学生信息、录入成绩;教务员录入学生、教师、课程信息,修改专业、班级信息,各班级排课,生成教学统计报表;管理员主要是用户信息维护和用户权限管理。
2.StarUML软件工具。
三、实验内容与步骤
1.任务1:
任务内容:将高校学生管理软件部署在Tomcat服务器,在浏览器输入:http://localhost:8080/Student/login.jsp
分别以管理员、教师、学生三类用户登录系统并对不同用户功能进行操作,其中管理员功能合并了教务员的职能。
- 任务一相关截图如下所示:
用户登录界面:
学生主界面:
教师主界面:
管理员主界面:
2.任务2:
任务内容:绘制高校学生管理软件的用例图。
用例图如下所示:
3.任务3:
任务内容:理解项目需求简介,采用简易应用规格说明技术,讨论高校学生教务管理系统的软件需求列表,采用面向对象分析方法绘制高校学生管理软件的类图。
在软件开发过程中,需求分析是非常重要的一环。通过对用户需求的理解,我们可以更好地设计系统架构和实现相应功能。
在高校学生教务管理系统中,主要涉及到学生、教师、教务员和管理员四类用户。他们需要进行不同的操作,如学生需要查看课程和成绩,教师需要查看课表、班级和学生信息、录入成绩,教务员需要录入学生、教师、课程信息,修改专业、班级信息,排课等,而管理员主要是用户信息维护和权限管理。
因此,在需求分析阶段,我们可以采用简易应用规格说明技术来讨论高校学生管理软件的软件需求列表,明确各个用户的需求,并整理出需求列表。需求列表包括以下内容:
学生需求:查看个人信息、查询课程信息、查询成绩
教师需求:查看个人信息、查看授课情况、查看班级和学生信息、录入成绩
教务员需求:管理学生信息、管理教师信息、管理课程信息、修改专业、班级信息、排课、生成教学统计报表
管理员需求:用户信息维护、用户权限管理
在明确了需求列表后,我们可以采用面向对象分析方法来绘制类图。类图是一种表示系统静态结构的图形化工具,它包括类、接口、属性和方法等元素,并描述它们之间的关系。通过绘制类图,我们可以更好地理解软件系统的结构和功能。
- 任务三中的类图如下所示:(如有图片看不清的问题,可以选中图片在新标签页打开)
4.任务4:
任务内容:绘制某一学生用户对象查询课程和成绩的顺序图;绘制教务员课程安排的顺序图。
- 绘制的顺序图如下所示:
学生查询课程的顺序图:
学生查询成绩的顺序图:
教务员课程安排的顺序图:
5.任务5:
任务内容:理解分析高校学生管理软件中数据库表的物理结构,结合各表外键的定义,正确绘制数据库对应的E-R图。
要求:在作业博客中提供E-R图,图名称自拟。
- 任务五绘制的E-R图如下:
6.任务6:
任务内容:理解分析高校学生管理软件代码结构,结合MVC软件设计模式特点,采用面向对象设计方法绘制高校学生管理软件的类图。
要求:
(1)在作业博客中提供所绘制类图,类图名称自拟,类图中每个类需要提供类名、属性及其方法名,并正确建立类关系。
- 任务六中的类图如下图所示:
(2)结合软件开发过程,总结任务3与任务6的类图与源代码中定义类的关系。
任务3中的类图描述了系统的抽象概念,包括基本实体类和业务逻辑类。而任务6中的类图则更加具体,描述了系统中MVC设计模式的三层架构,即控制器层、视图层和模型层。
在源代码中,基本实体类和业务逻辑类对应了dao包和service包下的Java文件,而控制器层、视图层和模型层分别对应了web包下的Java文件、jsp包下的JSP文件和bean包下的JavaBean文件。
源代码中每个Java文件都有一个对应的类,在该类中定义了属性和方法,并与其他类之间建立了关系,如继承、聚合、依赖等。
控制器层的Java文件中的类主要是Servlet,负责接收并响应客户端请求,调用模型层或服务层的方法来完成相应的逻辑处理,然后将处理结果返回给客户端。控制器层与模型层和视图层都有依赖关系。
视图层的JSP文件主要负责呈现数据给用户。视图层与控制器层和模型层之间都有依赖关系,其中视图层和控制器层是双向的依赖关系。
模型层的JavaBean文件主要是实体类或业务逻辑类,在该类中定义了属性和方法,并提供了操作数据库的方法。模型层与控制器层和视图层之间都有依赖关系,其中模型层和控制器层是双向的依赖关系。
(3)尝试分析dao包中各java文件的用途。
尝试分析dao包中各java文件的用途:
文件 | 用途 |
---|---|
ICla2Sub.java | 包含了班级与科目的基本数据库操作方法,如为班级添加科目,删除科目,修改科目等操作。 |
IClasses.java | 该文件是一个接口,定义了添加班级、删除班级、更新班级、查询班级等数据库操作方法。 |
ILogin.java | 该文件文件是一个接口,定义了登录,检查账号是否匹配的等数据库操作方法。 |
IMajor.java | 该文件文件是一个接口,定义了添加专业、删除专业、更新专业、查询专业等数据库操作方法。 |
IOperator.java | 定义了每类角色的具体信息如编号、密码。 |
IPicture.java | 该文件文件是一个接口,定义了上传学生照片,和删除旧照片等数据库操作方法。 |
IPrivilege.java | 该文件定义了每种角色的权限。 |
IRole.java | 该文件定义了用户的角色。 |
IScore.java | 该文件定义了添加成绩、删除成绩、更新成绩、查询成绩等数据库操作方法。 |
IStudent.java | 该文件文件是一个接口,是定义了添加学生、删除学生、更新学生、查询学生等数据库操作方法。 |
ISubject.java | 该文件定义了添加课程、删除课程、更新课程、查询课程等数据库操作方法。 |
ITeacher.java | 该文件定义了添加教师、删除教师、更新教师、查询教师等数据库操作方法。 |
7.任务7:
任务内容:结合实际教务管理系统的使用体验,分别为高校学生管理软件的教务员和学生设计开发满足用户实际需求的功能。如为教务员开发统计各门课程成绩平均分、各分数段人数统计、绘制成绩分布图等功能。
要求:
(1)每类用户至少实现一项功能,博客作业中提供功能测试界面截图。
(2)加分项:每多实现一项新功能,得10分,最高不超过50分。
(3)在github仓库上传新增功能的软件源代码,博客作业中提供链接地址。
- 任务七过程实现的相关截图如下所示:
功能一:为教务员开发统计各门课程成绩的平均分,最高分,最低分
功能二:教务员可以查看所有科目各个分数段的人数统计,从而检验教学质量
(所有成绩中,90—99之间有5人,80-89之间有2人,60~80之间有2人,60分一下有11人)
教务员也可以查看具体每个科目的各分数段的人数统计:
(如J2SE这门课共有四个学生,所给的各个成绩段各有一位学生)
功能三:绘制成绩分布图:
(所有科目的成绩分布图,更直观清晰地显示学生的成绩分布情况)
(还可查询具体某一科目的成绩分布图,如上图是J2SE这一科目的成绩分布图)
功能四:显示老师所教所有科目的得分情况:
(如该老师所教J2SE和C语言这两门科目,显示这两科目最高分,最低分以及平均分)
功能五:显示老师所教每门科目的各分数段的学生人数统计:
(该老师所教 C语言 的各分数段的学生人数统计,60分以下的1人,90~99分的1人)
功能六:学生登录的时候可显示当前当前登陆人数,和当前在线人数。
功能七:增加了学生成绩的排名功能,学生可以查看自己每门成绩的排名。
8.任务8:
在2023-5-22至2023-6-10之间制定实验七任务的进度计划表和任务人员分工,任务实施期间记录完成各项任务实际花费的时间。
要求:在博客作业提供进度计划表和人员分工情况说明。
任务用时表(单位:分钟min)
进度计划与任务内容 | 各任务实际花费时间 |
---|---|
将高校学生管理软件部署成功,实现不同用户操作 | 40 |
绘制高校学生管理软件的用例图 | 60 |
采用简易应用规格说明技术,绘制高校学生管理软件的类图 | 120 |
绘制某一学生用户对象进行查询的顺序图;绘制教务员课程安排的顺序图 | 100 |
理解分析数据库表的物理结构,结合各表外键定义,正确绘制其对应的E-R图 | 80 |
理解分析代码结构,结合MVC设计模式,绘制高校学生管理软件的类图 | 120 |
结合实际使用,分别为软件的教务员和学生设计开发满足用户实际需求的功能 | 200 |
撰写博客,反思与总结 | 50 |
进度计划表(时间在2023-5-22至2023-6-10之间)
时间 | 任务进度 |
---|---|
5.22-5.25 | 将高校学生管理软件部署成功;团队成员对项目做出基本规划 |
5.26-5.27 | 初步绘制类图;完成用例图的绘制 |
5.28-6.3 | 对实际功能进行需求分析;完成顺序图,E-R图的绘制 |
6.3-6.8 | 完成实际不同用户需求功能的开发;对类图进行最后的修改 |
6.8-6.10 | 分析类图、完善所有的图;截图并完成博客作业 |
人员分工情况
团队成员 | 分工 |
---|---|
杨国周 | 高校学生管理软件部署成功;结合实际使用,设计开发满足用户实际需求的功能;E-R图的绘制。 |
朱习良 | 类图中各种关系的确定,两种类图的绘制;用例图、顺序图的绘制;项目的各类测试;博客的修改与完善。 |
蒋宇轩 | 类图与E-R图的绘制;博客的进一步修改与完善;撰写新增功能的SQL语句 |
赵生龙 | 类图中各类关系的分析、类图的绘制;用例图和顺序图的相关绘制;撰写博客与修改。 |
9.任务9:
任务内容:完成《实验七 综合软件项目案例》团队博文作业:
已完成。
四、感受与心得
团队成员 | 心得体会 |
---|---|
杨国周 | 通过本次实验,我了解到UML建模技术在软件开发过程中起着非常重要的作用; 设计合理的数据库逻辑结构能够提高数据存储和管理的效率和可靠性,让团队在处理数据相关问题时更加得心应手; 软件项目的结构设计对确保软件系统具有良好的可靠性、可维护性和可扩展性也很重要; 通过和团队成员的合作和沟通,我体会到了面向对象软件开发的优点,同时也了解了如何合理分配任务并有效地协作完成。 |
朱习良 | 本次实验让我理解了UML建模技术在软件开发过程中为开发者提供了更清晰的各类对象之间的关系,同时也大大简化了复杂系统的整体设计和开发; 设计合理的数据库逻辑结构能够提高数据存储和管理的效率和可靠性,因此,开发者更需要熟练掌握数据库设计原理和操作技巧; 软件项目的结构设计也很重要,这包括组件划分、接口规范、分层设计等,掌握这些方法可以确保软件系统良好运行; 同时,理解什么是良好的面向对象设计,以及如何设计合适的类或接口,以促进模块化和代码复用也很重要; 通过与团队成员的沟通合作,我还学习到了如何有效地协作,分工明确,互相学习,一起更好地完成任务。 |
蒋宇轩 | 在本次实验中,我懂得了UML建模技术可以帮助团队在软件开发过程中进行需求分析和设计; 更加熟悉了进行数据库功能模块划分、数据结构设计、SQL语句编写等操作,以满足软件项目的各类需求; 理解面向对象软件开发过程,培养了自己编写高质量代码的能力,提高软件开发效率和质量; 通过团队间的合作,更好的体会到了团队协作的乐趣。 |
赵生龙 | 通过本次实验,我了解到UML建模技术在软件开发过程中起着非常重要的作用,这些图形工具可以被用来描述系统的不同方面; 其次,数据库逻辑结构设计也是一个非常重要的方面,它决定了数据存储与处理的效率和稳定性合理地选择不同类型的数据库和存储结构,充分利用索引和优化算法等方法,以确保数据在系统内流转的有效性和准确性; 软件项目的结构设计需要考虑各种任务的各种关系,包括它们之间的接口和依赖关系等; 同时在面向对象软件工程开发上有了更加全面和深入的实践,感谢团队的合作帮助我进步。 |
团队总体的心得体会:
本次实验对我们小组来说是一次非常有意义的实践,我们从如下方面进行了提升:
- 练习UML建模技术:主要包括用例图、类图、顺序图、状态图等建模方法。
- 掌握数据库逻辑结构设计:这部分的任务旨在让团队成员能够熟练运用数据库设计原理和工具,进行数据库功能模块划分、数据结构设计、SQL语句编写等操作,以满足软件项目对数据存储和管理的需求。
- 掌握软件结构设计:团队成员对软件系统整体架构有深入理解,并运用相关工具进行分层设计、组件划分、接口规范等操作,确保软件系统具备可靠性、可维护性和可扩展性等特点。
- 理解面向对象软件开发过程:团队成员了解及时规范的面向对象开发思想,培养团队成员编写高质量代码的能力,提高软件开发效率和质量。