202302-踏马逐尘 实验七 综合软件项目案例
项目 | 内容 |
---|---|
课程班级博客链接 | 2023年春软件工程(2020级计算机科学与技术) |
这个作业要求链接 | 实验七 综合软件项目案例 |
团队名称 | 踏马逐尘 |
团队成员分工描述 | 孙* :负责博客的编写修改任务与E-R图的绘制; 阿* 曼:核心主力,负责Java项目新功能的设计以及类图创建 ; 后* : 负责顺序图的绘制以及项目黑盒测试; 杨 * 辽 :负责用例图的绘制以及查阅大量相关资料完善博客 。 |
团队的课程学习目标 | 练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途; 掌握软件项目的数据库逻辑结构设计方法; 掌握软件项目的软件结构设计方法; 理解面向对象软件开发过程,继续强化练习UML建模技术; 对整体项目做总体理解和分析; 在实验中加强团队合作,同时对项目的开发有更深的理解; |
这个作业在哪些方面帮助团队实现学习目标 | 对学生信息管理软件案例进行了更深的逻辑理解; 在项目开发中团队之间有很多的交流,增强了团队协作能力; 在项目开发中,拓宽了对JAVA开发的理解与认识,以及对StarUML软件工具绘制的学习认识。 将以前学习的技术以及知识付诸于实践,不断锻炼我们的专业能力,为以后学习增砖添瓦。 |
团队博客链接 | 踏马逐尘 |
团队项目Github仓库地址链接 | 踏马逐尘 |
任务1:将高校学生管理软件部署在Tomcat服务器,并以管理员、教师、学生三类用户登录系统
总登录页面
以管理员身份登录系统
以教师身份登录系统
以学生身份登陆系统
任务2:绘制高校学生管理软件的用例图
总用例图
管理员(admin)用例图
教师(teacher)用例图
学生(student)用例图
任务3:理解项目需求简介,采用简易应用规格说明技术,讨论高校学生教务管理系统的软件需求列表,采用面向对象分析方法绘制高校学生管理软件的类图
高校学生教务管理系统的软件需求列表:
- 学生管理:我的资料,查找学生,添加学生,查询学生,导入学生信息,导入学生照片
- 班级管理:同班同学,我的班级,添加班级,查询班级,添加班级课程,查询班级课程,班级课程表,导出班级成绩
- 教师管理:我的资料,添加教师,查询教师
- 成绩管理:查询成绩,学生成绩,查询成绩,成绩统计
- 课程管理:查询课程,我的课程,添加课程,查询课程
- 专业管理:添加专业,查询专业
我们可以采用面向对象分析方法来绘制类图。类图是一种表示系统静态结构的图形化工具,它包括类、接口、属性和方法等元素,并描述它们之间的关系。通过绘制类图,我们可以更好地理解软件系统的结构和功能。
Student类
Subject类
Score类
Classes类
Privilege类
Operator类
Teacher类
Role类
Major类
Cla2Sub类
类关系图
任务4:绘制某一学生用户对象查询课程和成绩的顺序图;绘制教务员课程安排的顺序图。
某一学生用户对象查询课程顺序图
某一学生用户对象查询成绩顺序图
教务员课程安排的顺序图。
任务5:理解分析高校学生管理软件中数据库表的物理结构,结合各表外键的定义,正确绘制数据库对应的E-R图。
任务6:理解分析高校学生管理软件代码结构,结合MVC软件设计模式特点,采用面向对象设计方法绘制高校学生管理软件的类图。
由于8大类关系太复杂,画在同一张图上显得杂乱。故只给出每一大类与其相关类的联系
cla2sub.servlet
classes.servlet
login.servlet
major.servlet
score.servlet
student.servlet
subject.servlet
teacher.servlet
任务3的类图是在需求分析创建的,用于描述系统的结构和组件之间的关系。源代码中的类定义和任务3的类图对应,包含了类的属性和方法的实现。
任务6的源代码是在设计阶段创建的,根据任务3的设计和类图进行实现。源代码中的类定义包含了类的属性和方法的定义和实现,与任务3的类图中的类对应关系保持一致。
-
ICla2Sub 是一个数据访问对象接口,用于定义与实体类 Cla2Sub 相关的数据库操作方法。它提供了添加、删除、更新、普通查询、分页查询和获取总页数等方法,用于对 Cla2Sub 实体类的数据进行持久化操作。
-
IClasses 是一个数据访问对象接口,用于定义与实体类 Classes 相关的数据库操作方法。它提供了添加、删除、更新、普通查询、分页查询和获取总页数等方法,用于对 Classes 实体类的数据进行持久化操作。
-
ILogin.java用于定义与登录相关的数据库操作方法。它包含了一个方法 login(),用于验证用户账号是否匹配。该方法接受两个参数,一个是 HttpServletRequest 对象,表示HTTP请求,另一个是 Operator 对象,表示要验证的用户。方法返回一个字符串,用于表示登录成功或失败的消息。这个接口可以被其他层(如服务层或控制器层)实现,用于实现用户登录验证的功能。
-
IMajor.java用于定义与实体类 Major 相关的数据库操作方法。它包含了添加、删除、更新、普通查询、分页查询和获取总页数等方法。这些方法允许对 Major 实体类进行数据库操作,包括添加、删除、更新数据,以及进行普通查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Major 对象进行持久化操作,并提供对数据库中 Major 数据的管理和访问的功能。
-
IOperator.java用于定义与实体类 Operator 相关的数据库操作方法。它包含了添加、删除、更新、普通查询、分页查询和获取总页数等方法。这些方法允许对 Operator 实体类进行数据库操作,包括添加、删除、更新数据,以及进行普通查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Operator 对象进行持久化操作,并提供对数据库中 Operator 数据的管理和访问的功能。
-
IPicture.java用于定义与学生照片相关的操作方法。它包含了更新学生信息时检查是否更新了照片、上传照片和删除旧照片等方法。这些方法允许对学生照片进行操作,包括检查是否更新了照片、上传新照片和删除旧照片等功能。这个接口与Servlet相关,使用了ServletConfig、HttpServletRequest和HttpServletResponse等类来处理请求和响应。通过实现该接口,可以实现对学生照片的上传、删除和更新等操作。
-
IPrivilege.java用于定义与实体类 Privilege 相关的数据库操作方法。它包含了添加、删除、更新、普通查询、分页查询和获取总页数等方法。这些方法允许对 Privilege 实体类进行数据库操作,包括添加、删除、更新数据,以及进行普通查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Privilege 对象进行持久化操作,并提供对数据库中 Privilege 数据的管理和访问的功能。
-
IRole.java用于定义与实体类 Role 相关的数据库操作方法。它包含了添加、删除、更新、普通查询、分页查询和获取总页数等方法。这些方法允许对 Role 实体类进行数据库操作,包括添加、删除、更新数据,以及进行普通查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Role 对象进行持久化操作,并提供对数据库中 Role 数据的管理和访问的功能。
-
IScore.java用于定义与实体类 Score 相关的数据库操作方法。它包含了添加、删除、更新、普通查询、分页查询和获取总页数等方法。这些方法允许对 Score 实体类进行数据库操作,包括添加、删除、更新数据,以及进行普通查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Score 对象进行持久化操作,并提供对数据库中 Score 数据的管理和访问的功能。
-
IStudent.java用于定义与实体类 Student 相关的数据库操作方法。它包含了添加、删除、更新、查询、分页查询和获取总页数等方法。这些方法允许对 Student 实体类进行数据库操作,包括添加、删除、更新数据,以及进行查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Student 对象进行持久化操作,并提供对数据库中 Student 数据的管理和访问的功能。
-
ISubject.java用于定义与实体类 Subject 相关的数据库操作方法。它包含了添加、删除、更新、查询、分页查询和获取总页数等方法。这些方法允许对 Subject 实体类进行数据库操作,包括添加、删除、更新数据,以及进行查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Subject 对象进行持久化操作,并提供对数据库中 Subject 数据的管理和访问的功能。
-
ITeacher.java用于定义与实体类 Teacher 相关的数据库操作方法。它包含了添加、删除、更新、查询、分页查询和获取总页数等方法。这些方法允许对 Teacher 实体类进行数据库操作,包括添加、删除、更新数据,以及进行查询、分页查询和获取总页数等功能。通过实现该接口,可以对 Teacher 对象进行持久化操作,并提供对数据库中 Teacher 数据的管理和访问的功能。
任务7:结合实际教务管理系统的使用体验,分别为高校学生管理软件的教务员和学生设计开发满足用户实际需求的功能。如为教务员开发统计各门课程成绩平均分、各分数段人数统计、绘制成绩分布图等功能。
功能1:导入学生信息
点击下载模板按钮,下载模板
模板内容
录入学生信息
点击上传按钮上传模板
导入数据时,将上传的数据进行核验,验证班级名是否在数据库中存在,若不存在,则导入失败。
功能2:下载导入结果信息
点击“点击下载”按钮下载导入结果信息
将导入失败的信息核对后重新上传
上传未导入学生的正确信息,导入成功
功能3:上传照片信息
选择需要上传的照片(可以多张上传)
上传成功
照片通过照片名与数据库中存放的文件名进行匹配,若不同则无法导入。
功能4:打印成绩单
点击“打印”按钮
显示结果(A4纸格式)
点击“转换PDF并下载”
显示结果
此功能教师端、管理员端、学生端都拥有,打印结果左上角显示xx端打印。
功能5:成绩统计
有数据视图,折线图,柱形图三种呈现形式
功能6:通知
管理员端可对教师端和学生端分别发送通知
教师端通知
学生端通知
功能7:系统维护
在系统管理中将教师端和学生端设为禁止
教师端
学生端
功能8:在线人数统计
github仓库上传新增功能的软件源代码
任务8:进度计划表和人员分工情况说明
进度计划表
任务名称 | 开始日期 | 结束日期 | 预计耗时(h) | 实际耗时(h) | 负责人 |
---|---|---|---|---|---|
完善Java项目代码并为项目设计新功能 | 2023-05-22 | 2023-06-02 | 20 | 15 | 阿* 曼 |
绘制高校学生管理软件的用例图 | 2023-06-03 | 2023-06-10 | 3 | 3.5 | 杨* 辽 |
绘制高校学生管理软件的类图 | 2023-06-03 | 2023-06-10 | 3 | 4 | 阿* 曼 |
绘制用户实现具体操作顺序图 | 2023-06-03 | 2023-06-10 | 3 | 3.5 | 后* |
绘制数据库对应的E-R图 | 2023-06-09 | 2023-06-09 | 1 | 1.5 | 孙* |
完成博客撰写 | 2023-06-08 | 2023-06-10 | 3 | 3 | 孙* |
成员分工
成员 | 工作内容 |
---|---|
孙* | 负责博客的编写修改任务与E-R图的绘制 |
阿* 曼 | 核心主力,负责Java项目新功能的设计以及类图创建 |
后* | 负责顺序图的绘制以及项目黑盒测试 |
杨* 辽 | 负责用例图的绘制以及查阅大量相关资料完善博客 |
总结实验学习心得
成员 | 心得体会 |
---|---|
孙* | 在本次实验中,我负责了博客的编写任务和E-R图的绘制。通过编写博客,我对整个实验七的任务和要求有了更清晰的认识,并对团队的进度和分工进行了规划和记录。在绘制E-R图的过程中,我深入理解了数据库表之间的关系和外键的定义,确保了数据库的正确设计。这次实验让我更加熟悉UML建模技术的应用,提高了我的软件设计能力。 |
阿* 曼 | 作为团队的Java项目设计负责人,我主要负责了新功能的设计和类图的创建。在设计新功能时,我与团队成员充分讨论和了解用户需求,确保功能的实用性和可行性。通过创建类图,我能清晰地看到各个类之间的关系和属性方法的定义,有效地实现了项目的模块化设计。这次实验提高了我的面向对象设计能力,使我更加熟悉MVC设计模式的应用。 |
后* | 在实验中,我负责了顺序图的绘制和项目的黑盒测试。通过绘制顺序图,我可以清楚地展示系统中各个对象之间的交互流程,帮助团队成员更好地理解系统的功能和实现细节。同时,我进行了项目的黑盒测试,测试了系统的功能是否符合预期,并发现并修复了一些潜在的问题。通过这次实验,我加深了对系统交互和测试的理解,提高了我的问题识别和解决能力。 |
杨* 辽 | 在本次实验中,我负责了用例图的绘制和博客的完善。通过绘制用例图,我对系统的功能和用户角色有了更清晰的认识,确保系统满足用户需求。同时,我查阅了大量相关资料,对软件项目开发过程中的各种概念和技术有了更深入的了解,并在博客中进行了详细的说明和总结。这次实验提高了我的信息查找和整理能力,让我对软件开发过程有了更全面的认识。 |
团队的学习目标得到了实现,每位成员通过自己的任务负责区域的工作,增强了对软件项目开发过程中各个阶段的理解和运用能力。我们通过紧密合作和相互协助,顺利完成了实验七的任务,并为团队的博客和项目仓库提供了相关资料和链接。这次实验对我们的学习和团队合作能力有了很好的提升。