202308-啊对对队 实验七 综合软件项目案例
项目 | 内容 |
---|---|
班级博客链接 | 2023春软件工程2020级计算机科学与技术 |
本次作业要求链接 | 实验七 综合软件项目案例 |
团队名称 | 啊对对队 |
团队课程学习目标 | 1.练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途;2.掌握软件项目的数据库逻辑结构设计方法;3.掌握软件项目的软件结构设计方法;4.理解面向对象软件开发过程。 |
本次作业在哪些方面帮助团队实现学习目标 | 学习和巩固软件开发相关知识,掌握了软件项目的数据库逻辑结构设计方法和软件项目的软件结构设计方法,对优秀案例进行学习和总结,利用StarUML绘图,更好的理解项目。 |
团队博客链接 | 啊对对队 |
团队项目Github仓库地址链接 | https://github.com/lifengbin1/lfb |
一、实验目的与要求
(1)练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途。
(2)掌握软件项目的数据库逻辑结构设计方法。
(3)掌握软件项目的软件结构设计方法。
(4)理解面向对象软件开发过程。
二、实验内容与步骤
任务一:
将高校学生管理软件部署在Tomcat服务器,在浏览器输入:http://localhost:8080/Student 分别以管理员、教师、学生三类用户登录系统并对不同用户功能进行操作,其中管理员功能合并了教务员的职能。
对原项目bug进行修复并美化页面
1.学生信息修改界面选择照片无法显示问题:
修改:通过原生js监听文件变更获取文件,使用文件生成blob本地路径,修改对应imgDOM元素的src的值为blob路径,解决。
2.学生信息修改照片提交无法上传问题:
修改:原因是因为项目运行时的环境中upload文件夹不存在,通过修改IPicture和PictureImpl里面的upload方法,实现动态创建upload文件夹,解决。
3.管理员添加班级课程页面访问错误问题:
修改:将该页面jsp文件中与java关键字冲突的变量名(jstl遍历定义变量名class与java关键字冲突)换为非java关键字的变量名即可,解决。
4.管理员添加学生/教师添加失败时依旧会将学生/教师的账号密码存入系统数据库问题:
修改:原因是因为没有对对应方法的返回结果做判断,判断学生/教师添加结果是否大于0,否的话调用OperatorImpl里面的delete方法传入当前的Operator对象即可,解决。
5.对页面进行美化:
对整体主题色进行修改,采用绿柔护眼主题色搭配
登录界面
以不同的身份登录,左侧菜单栏会有相应的功能,其中权限由数据库的privilege表和role表决定
- 以管理员身份登录
- 以学生身份登录
- 以教师身份登录
任务二:
绘制高校学生管理软件的用例图。
任务三:
理解项目需求简介,采用简易应用规格说明技术,讨论高校学生教务管理系统的软件需求列表,采用面向对象分析方法绘制高校学生管理软件的类图。
任务四:
绘制某一学生用户对象查询课程和成绩的顺序图;绘制教务员课程安排的顺序图。
任务五:
理解分析高校学生管理软件中数据库表的物理结构,结合各表外键的定义,正确绘制数据库对应的E-R图。
任务六:
理解分析高校学生管理软件代码结构,结合MVC软件设计模式特点,采用面向对象设计方法绘制高校学生管理软件的类图。
分析dao包中各java文件的用途
dao包里面的接口定义方法,impl包里面的类负责继承dao包的接口并实现接口方法。
dao层即model层(数据处理层对数据库进行持久化操作(增删改查等),M层),jsp页面即view层(视图层(网页显示),V层) ,servlet层即controller层(控制层(为前台提供获取数据的接口),C层)。
ICla2Sub接口负责对数据库的cla2sub(班级选课表)表进行持久化操作(增删改查等),定义了各种方法,Cla2SubImpl类负责接口方法的具体实现;
IClasses接口负责对数据库的classes(班级表)表进行持久化操作(增删改查等),定义了各种方法,ClassesImpl类负责接口方法的具体实现;
ILogin接口定义了登录方法,LoginImpl负责实现接口登录方法的具体逻辑;
IMajor接口负责对数据库的major(专业表)表进行持久化操作(增删改查等),定义了各种方法,MajorImpl类负责接口方法的具体实现;
IOperator接口负责对数据库的operator(账号表)表进行持久化操作(增删改查等),定义了各种方法,OperatorImpl类负责接口方法的具体实现;
IPicture接口定义了三个方法check()用于检查学生是否进行更新照片操作(增删改查等),upload()用于实现对学生的照片上传到服务器,delete()用于删除学生之前的照片,具体逻辑由PictureImpl类实现;
IPrivilege接口负责对数据库的privilege(网页侧边栏的功能权限表)表进行持久化操作(增删改查等),定义了各种方法,PrivilegeImpl1类负责接口方法的具体实现;
IRole接口负责对数据库的role(角色表)表进行持久化操作(增删改查等),定义了各种方法,RoleImpl类负责接口方法的具体实现;
IScore接口负责对数据库的score(课程分数表)表进行持久化操作(增删改查等),定义了各种方法,ScoreImpl类负责接口方法的具体实现;
IStudent接口负责对数据库的student(学生表)表进行持久化操作(增删改查等),定义了各种方法,StudentImpl类负责接口方法的具体实现;
ITeacher接口负责对数据库的teacher(教师表)表进行持久化操作(增删改查等),定义了各种方法,TeacherImpl类负责接口方法的具体实现;
任务七:
任务7:结合实际教务管理系统的使用体验,分别为高校学生管理软件的教务员和学生设计开发满足用户实际需求的功能。如为教务员开发统计各门课程成绩平均分、各分数段人数统计、绘制成绩分布图等功能。
功能1:
以管理员身份登录查看【全体】学生成绩,以扇形、条形、折线统计图的方式显示,并对【所有课程】进行平均分的计算,其中折线统计图根据当前页数据动态变化,条形统计图是对【全体】学生数据的统计,扇形统计图是【全体】学生成绩各分段占比(分段为0-20、20-40、40-60、60-80、80-100)
功能2:
以教师身份登录查看【本班】学生成绩,以扇形、条形、折线统计图的方式显示,并对【本班】各课程进行平均分的计算,其中折线统计图根据当前页数据动态变化,条形统计图是对【本班】所有数据的统计,扇形统计图是【本班】所有成绩各分段占比(分段为0-20、20-40、40-60、60-80、80-100)
功能3:
以学生身份登录查看【自己】所选课程成绩,以扇形、条形、折线统计图的方式显示,并对【自己】所有课程分进行平均分的计算,其中折线统计图根据当前页数据动态变化,条形统计图是对【自己】所有成绩数据的统计,扇形统计图是【自己】所有成绩各分段占比(分段为0-20、20-40、40-60、60-80、80-100)
功能4:
以管理员身份可以使用Excel批量添加学生信息
功能5
使用监听器统计当前在线人数
功能6
对原项目[top.jsp]中的[个人中心]选项进行完善,管理员登录无[个人中心]选项,教师登录显示[教师个人中心],学生登录显示[学生个人中心],并实现点击跳转到对应的页面(我的资料页面)
功能7
使用websocket网络编程实现学生与学生、学生与老师聊天询问功能,离线时也能接收到消息,可开多窗口聊天:
聊天记录,使用浏览器本地存储,只要不删除本地存储的数据下次登录可以显示历史聊天记录:
学生可以与学生聊天也可以联系老师:
老师可以和本班的学生聊天:
任务八:
在2023-5-22至2023-6-10之间制定实验七任务的进度计划表和任务人员分工,任务实施期间记录完成各项任务实际花费的时间。
任务进度进度计划表
时间 | 任务完成情况 |
---|---|
2023-5-22至2023-5-24 | 任务1完成 |
2023-5-25至2023-5-26 | 任务2完成 |
2023-5-27至2023-5-29 | 任务3完成 |
2023-5-30至2023-5-31 | 任务4完成 |
2023-6-1至2023-6-2 | 任务5完成 |
2023-6-3至2023-6-4 | 任务6完成 |
2023-6-5至2023-6-8 | 任务7完成 |
2023-6-9 | 任务8完成 |
2023-6-10 | 任务9完成 |
任务人员分工
小组成员 | 任务分配 |
---|---|
赵嘉旺 | 任务5,任务8,任务9 |
李锋斌 | 任务2,任务3,任务4 |
杨炜 | 任务1,任务6,任务7 |
各项任务实际花费时间
任务 | 实际花费时间 |
---|---|
任务1 | 4h |
任务2 | 2h |
任务3 | 2h |
任务4 | 2h |
任务5 | 2h |
任务6 | 3h |
任务7 | 8h |
任务8 | 1h |
任务9 | 3h |
任务九:
完成《实验七 综合软件项目案例》团队博文作业。
三、实验总结
实验总结与心得体会
成员 | 总结与体会 |
---|---|
赵*旺 | 本次实验是我第一次参与到一个大型项目的开发工作中,收获颇丰,本次实验中,我们遇到了诸多困难,但经过大家不断地思考和讨论,学会了彼此之间的支持和帮助在课程相应的指导下,合理分派任务并且与组内成员充分交流和协作,提高了项目开发效率和团队合作越来越协调。通过此次实验,我更加深入地了解了关于软件开发的流程、方法和重要意义,同时也明白了实际软件开发工作中所需要的实战经验,此次实验第一次接触MVC设计模式,感受到了它的可扩展性和高内聚低耦合的特点,同时也更加熟练地运用了各UML图谱的绘制技巧,尤其是在分工协作和问题解决方面,有了更有益的锻炼。 |
杨* | 通过本次实验,我深入学习了软件开发过程中所需要用到的UML建模技术、面向对象分析方法、MVC设计模式等,让我们对软件设计和开发方面的知识有了更深入的了解和实践。在任务完成的过程中,我们充分发挥了团队协作的优势,不仅分工明确、相互配合,更是在任务实施期间记录完成各项任务实际花费的时间,为后续的项目管理提供了有力的参考。此外,通过任务7的扩展功能开发,我们也深刻地认识到了软件开发的重要性。在开发过程中,我不仅需要考虑功能实现的问题,还要注重用户体验和系统性能等方面。这些体验和优化需要与开发团队密切作,例如,我们为教务员开发了统计各门课程成绩平均分、各分数段人数统计、绘制成绩分布图等功能,这使得教务管理更加便利和高效。总之,本次实验不仅让我更加深入地了解了软件设计和开发方面的知识,还让我更进一步认识到了团队协作和项目管理的重要性,这对我们今后的工作和学习有着极大的借鉴意义。 |
李*斌 | 在任务1中,我们成功将高校学生管理软件部署在Tomcat服务器上,测试了系统不同用户功能的操作,这让我更具体地感受到系统设计和开发的成果。在任务3中,我们采用面向对象分析方法,绘制了高校学生管理软件的类图,这让我对软件开发的整个流程有了更加深刻的理解。同时,我们还通过任务6,对系统进行了更深入的设计,让我更加深入地了解到MVC设计模式的运用和如何进行面向对象的设计。最后,我的团队完成了任务7的扩展功能开发,我们为教务员开发了统计各门课程成绩平均分、各分数段人数统计、绘制成绩分布图等功能,这让我意识到在软件开发过程中有时需要从用户体验和系统性能等方面考虑开发内容,让软件更具有实用性和高效性,通过本次实验,我不仅学到了软件设计和开发方面的知识,还深刻认识到了团队协作和项目管理的重要性,这对我今后的工作和学习都将有着重要的影响。 |