资源描述
重庆科技学院
《JavaEE企业级开发技术》非标准答案考试试题
题 目: 学生选课成绩管理系统实现
学生姓名: 张XX 学 号: 2018XXXXXX
学 院: 智能技术与工程学院 专业班级: 计科XXX
完成日期:2019年 12月30日
成绩(百分制):
授 课 教 师:
试题题目:
试题内容及要求:
同学们根据观察自身生活环境,学习工作环境,身边的商业实体,建议自拟题目,设计一个软件系统,并实现。
系统实现具体要求如下:
1. 要有整个软件比较详细的系统功能说明。
2. 整个系统设计要有前端(UI设计)、业务层设计( Biz),控制层设计(Controller),数据持久层设计( DAO),及数据库设计( DB),数据库表不少于3张。
3. 要有详细的配置文件说明(Spring,MyBatis,SpringMVC,web 等)。
4. 系统整个界面美观,功能完备,能正常运行。
5. 形成完整的系统设计报告,报告格式规范。
备注:可供参考的系统题目
l 银行管理系统
l 图书管理系统
l 成绩管理系统
l 工资管理系统
l 商店销售系统
l 理发店客户管理系统
l 快递客户管理系统
评分
1
2
3
4
5
总分
目录
一 需求分析 4
(一) 项目设计目标 4
(二) 功能需求 4
二 概要设计 7
(一) 数据库设计 7
(二) 数据库实施 9
三 功能实现 13
(一) 模块设计 13
(二) 框架设计 14
(三) 编程实现 14
(四) 模块设计与实现 41
四 总结 47
一 需求分析
(一) 项目设计目标
本系统针对学生选课成绩进行管理,通过本系统对学生选课成绩管理进行有效管理。根据对学生选课管理系统的要求,制定简易学生管理系统。因为最终使用的用户都是普通的老师学生,并不具全都备良好地计算机使用水平,所以本系统的界面比较简洁、美观,使用也比较方便,操作几次就可以熟悉使用方式,不需要针对最终用户进行使用培训。
本系统可以达到以下目标:
(1)、灵活的人机交互界面,操作简单方便、界面简洁美观;
(2)、可以通过菜单、导航栏灵活的操作;
(3)、对学生选课成绩管理功能;
(4)、可以实现对信息的查询;
(5)、可以修改管理员密码;
(6)、系统最大限度的实现了易维护性和易操作性;
(7)、系统运行稳定、安全可靠。
(二) 功能需求
选课与成绩管理功能模块表:
模块名称:
登录模块
模块标识
Login
功能:
使用学号、教师账号、管理员帐号登录
输入:
学号或工号或admin
处理:
后端进行登录操作
输出:
登录成功跳转至对应的系统主页
失败后跳回登录页面并提示错误信息
表1.2.1
模块名称:
教师管理模块
模块标识
AdminTeacher
功能:
对教师信息进行管理
输入:
增加教师信息、删除教师信息、修改教师信息、查询教师信息
处理:
1、 可以添加新的教师信息 2、根据ID修改教师信息
3、根据ID删除教师信息 4、根据教师姓名查询教师信息
输出:
操作成功或失败进行提示
表1.2.2
模块名称:
学生管理模块
模块标识
AdminCourse
功能:
对学生信息进行管理
输入:
增加学生信息、删除学生信息、修改学生信息、查询学生信息
处理:
2、 可以添加新的学生信息 2、根据ID修改学生信息
3、根据ID删除学生信息 4、根据教师姓名查询学生信息
输出:
操作成功或失败进行提示
表1.2.3
模块名称:
课程管理模块
模块标识
AdminCourse
功能:
对课程信息进行管理
输入:
增加课程信息、删除教课程信息、修改课程信息、查询课程信息
处理:
1、 可以添加新的课程信息 2、根据ID修改课程信息
3、根据ID删除课程信息 4、根据教师姓名查询课程信息
输出:
操作成功或失败进行提示
表1.2.4
模块名称:
学生选课模块
模块标识
ChooseCourse
功能:
学生完成对课程的选择和取消
输入:
1、 如果没有选择该课程可以进行课程选择,如果已经选择了,只能取消课程
2、 查询课程
处理:
如果学生选择了课程,数据提交到后台,然后将数据写入数据库
输出:
操作成功或失败进行提示
表1.2.5
模块名称:
课表查询模块
模块标识
ClassTable
功能:
学生只能查询自己的课程表
输入:
查询自己的课程表
处理:
根据学生登录的账号,查询已选择的课程信息表
输出:
显示自己的课程表
表1.2.6
模块名称:
成绩查询模块
模块标识
StudengGrade
功能:
学生可以对自己各科的成绩进行查询
输入:
查询成绩
处理:
根据学生登录的账号,查询相关的成绩
输出:
显示自己的各科的成绩
表1.2.7
模块名称:
成绩管理模块
模块标识
TeacherGrades
功能:
教师可以查询选择了自己课程的学生信息以及成绩信息
输入:
输入相应的成绩
处理:
后台获取输入的成绩,然后更新数据库中学生对应的成绩
输出:
显示选择自己课程的所有学生的信息和成绩
表1.2.8
模块名称:
密码修改模块
模块标识
ChangePassword
功能:
每个账户都能修改自己的密码
输入:
输入原密码和新密码
处理:
后台获取用户输入的密码进行判断,如果成功就修改数据库信息
输出:
返回登录界面
表1.2.9
二 概要设计
(一) 数据库设计
1、 构成系统的实体
2、 系统总体E-R图
3、 E-R图转化成物理模型
4、 学生选课管理系统的数据字典
字段名
类型
是否主键
说明
adminId
varchar(20)
是
管理员ID
adminPassword
varchar(20)
否
管理员的密码
表2.1.1 系统管理员表
字段名
类型
是否主键
说明
couId
varchar(20)
是
课程ID
couName
varchar(20)
否
课程名
couTime
varchar(20)
否
课程时间
couPlace
varchar(20)
否
课程地点
couTeacherId
varchar(20)
否
课程任课老师的ID
couItem
varchar(20)
否
课程的学期
表2.1.2 课程信息表
字段名
类型
是否主键
说明
gradeCouId
varchar(20)
是
课程成绩ID
gradeCouName
varchar(20)
否
成绩对应的课程名
gradeCouTime
varchar(20)
否
成绩对应课程的时间
gradeTeacherId
varchar(20),
否
任课老师的ID
gradeCouItem
Varchar(20)
否
所属学期
gradeStuId
varchar
否
成绩对应的学生的ID
gradeTest
VARCHAR
否
分数
表2.1.3 成绩表
字段名
类型
是否主键
说明
stuId
varchar(20)
是
学生ID
stuName
varchar(20)
否
学生的密码
stuSex
varchar(2),
否
学生的性别
stuBirthday
varchar(20),
否
学生的生日
stuAddress
varchar(40)
否
学生的地址
stuMajor
varchar(20)
否
学生的专业
表2.1.4 学生信息表
字段名
类型
是否主键
说明
teaId
varchar(20)
是
教师ID
teaName
varchar(20)
否
教师姓名
teaSex
varchar(20)
否
教师的性别
teaBirthday
varchar(20)
否
教师的生日
teaAddress
varchar(20)
否
教师的地址
teaDep
varchar(20)
否
教师属于哪个系
teaPassword
varchar(20)
否
教师的密码
表2.1.5 教师信息表
(二) 数据库实施
1、 数据库脚本实现
drop table if exists admin;
drop index Relationship_7_FK on course;
drop index Relationship_4_FK on course;
drop index Relationship_2_FK on course;
drop table if exists course;
drop index Relationship_6_FK on grades;
drop table if exists grades;
drop index Relationship_5_FK on student;
drop index Relationship_3_FK on student;
drop index Relationship_1_FK on student;
drop table if exists student;
drop table if exists teacher;
/*=========================================================*/
/* Table: admin */
/*==========================================================*/
create table admin
(
adminId varchar(20) not null,
adminPassword varchar(20),
adminLimit varchar(2),
primary key (adminId)
)
type = InnoDB;
/*==========================================================*/
/* Table: course */
/*==========================================================*/
create table course
(
couId varchar(20) not null,
adminId varchar(20),
stuId varchar(20),
teaId varchar(20),
couName varchar(20),
couTime varchar(20),
couPlace varchar(20),
couItem varchar(20),
primary key (couId)
)
type = InnoDB;
/*==========================================================*/
/* Index: Relationship_2_FK */
/*=========================================================*/
create index Relationship_2_FK on course
(
adminId
);
/*=========================================================*/
/* Index: Relationship_4_FK */
/*==========================================================*/
create index Relationship_4_FK on course
(
stuId
);
/*==========================================================*/
/* Index: Relationship_7_FK */
/*==========================================================*/
create index Relationship_7_FK on course
(
teaId
);
/*========================================================*/
/* Table: grades */
/*==========================================================*/
create table grades
(
gradeCouId varchar(20) not null,
teaId varchar(20),
gradeCouName varchar(20),
gradeCouTime varchar(20),
gradeCouPlace varchar(20),
gradeTeacherId varchar(20),
gradeCouItem varchar(20),
gradeStuId varchar(20),
gradeTest float(3),
primary key (gradeCouId)
)
type = InnoDB;
/*==========================================================*/
/* Index: Relationship_6_FK */
/*==========================================================*/
create index Relationship_6_FK on grades
(
teaId
);
/*=========================================================*/
/* Table: student */
/*========================================================*/
create table student
(
stuId varchar(20) not null,
adminId varchar(20),
teaId varchar(20),
gradeCouId varchar(20),
stuName varchar(20),
stuSex varchar(2),
stuBirthday varchar(20),
stuAddress varchar(40),
stuMajor varchar(20),
stuPassword varchar(20),
primary key (stuId)
)
type = InnoDB;
/*=========================================================*/
/* Index: Relationship_1_FK */
/*=========================================================*/
create index Relationship_1_FK on student
(
adminId
);
/*=======================================================*/
/* Index: Relationship_3_FK */
/*======================================================*/
create index Relationship_3_FK on student
(
teaId
);
/*======================================================*/
/* Index: Relationship_5_FK */
/*========================================================*/
create index Relationship_5_FK on student
(
gradeCouId
);
/*=======================================================*/
/* Table: teacher */
/*======================================================*/
create table teacher
(
teaId varchar(20) not null,
teaName varchar(20),
teaSex varchar(2),
teaBirthday varchar(20),
teaAddress varchar(40),
teaDep varchar(20),
teaPassword varchar(20),
primary key (teaId)
)
type = InnoDB;
alter table course add constraint FK_Relationship_2 foreign key (adminId)
references admin (adminId) on delete restrict on update restrict;
alter table course add constraint FK_Relationship_4 foreign key (stuId)
references student (stuId) on delete restrict on update restrict;
alter table course add constraint FK_Relationship_7 foreign key (teaId)
references teacher (teaId) on delete restrict on update restrict;
alter table grades add constraint FK_Relationship_6 foreign key (teaId)
references teacher (teaId) on delete restrict on update restrict;
alter table student add constraint FK_Relationship_1 foreign key (adminId)
references admin (adminId) on delete restrict on update restrict;
alter table student add constraint FK_Relationship_3 foreign key (teaId)
references teacher (teaId) on delete restrict on update restrict;
alter table student add constraint FK_Relationship_5 foreign key (gradeCouId)
references grades (gradeCouId) on delete restrict on update restrict;
三 功能实现
(一) 模块设计
本系统一共有三大模块,管理员模块、教师模块、学生模块。其中管理员模块包括教师信息管理模块、学生信息管理模块、课程信息管理模块。教师模块包括成绩管理模块。学生模块包括课程选择模块、课表查询模块、成绩查询模块
1) 登录模块
① 登录模块:根据登陆者帐号判断其身份是管理员、教师还是学生
② 注销模块:注销会清除当前登录者的session信息,并退出系统
2) 管理员模块
管理员可以对教师信息、学生信息、课程信息进行增删改查。
3) 学生模块
学生可以进行课程选择、课表查询、成绩查询。
4) 教师模块
教师可以对选择自己课程的学生进行查询已经成绩的修改
(二) 框架设计
根据SSM的编程设计,首先进行前端页面搭建好,然后在根据数据库的设计中的实体,建立相应的实体类,创建实体MODEL文件,在建DAO文件,创建BIZ业务逻辑的实现类,在建立CONTROLLER文件,从而完成整个项目的框架代码。
(三) 编程实现
1、 数据库连接
(1)、db.properties文件,数据库连接的驱动器和地址。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=
(2)、applicationContext.xml文件,事务管理传播行为以及切面的配置。在事务的传播行为中,只有查询方法的事务为只读,添加、修改和删除的操作必须纳入事务管理。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"
>
<!-- 扫描除controller之外的包 -->
<context:component-scan base-package="com.cqust">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 扫描jdbc连接信息的properties文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 数据源 -->
<bean id="dataSource"
class="mons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 事务管理 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 整合mybatis -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置mybatis的配置文件位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- 配置扫描mybatis接口的实现,将其加入到ioc容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.cqust.mapper"></property>
</bean>
<!-- <context:component-scan base-package="com.itheima.service"/> -->
<!-- 配置sqlSession -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryBean"></constructor-arg>
<constructor-arg name="executorType" value="BATCH"></constructor-arg>
</bean>
<!-- 配置事务切入点 -->
<aop:config>
<aop:pointcut
expression="execution(* com.cqust.service..*(..))" id="txPointCut" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="txPointCut" />
</aop:config>
<!-- 配置事务属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" />
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
</tx:attributes>
</tx:advice>
</beans>
(3)Mybatis.xml配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 驼峰式命名规则 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<package name="com.cqust.model"/>
</typeAliases>
<mappers>
<mapper resource="com/cqust/mapper/AdminCourseMapper.xml"/>
<mapper resource="com/cqust/mapper/GradesMapper.xml"/>
</mappers>
</configuration>
2、 设计实体类
(1)、管理员实体类
package com.cqust.model;
public class Admin {
private String adminId;//管理员ID
private String adminPassword;//管理员密码
private String adminLimit;//管理员权限
public String getAdminId() {
return adminId;
}
public void setAdminId(String adminId) {
this.adminId = adminId;
}
public String getAdminPassword() {
return adminPassword;
}
public void setAdminPassword(String adminPassword) {
展开阅读全文