数据库课程设计——班级事务管理系统.doc
《数据库课程设计——班级事务管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计——班级事务管理系统.doc(37页珍藏版)》请在冰点文库上搜索。
淮北广播电视大学
数据库课程设计报告
2010级计算机科学与技术专业班
题目班级事务管理系统
学生王亮学号1034001205347
指导教师朱燕燕
2011年10月28日
目录
第一章数据库设计内容 3
1.1.课程设计任务与要求 3
1.1.1.任务 3
1.1.2.设计要求 3
1.1.3.运行环境 3
1.2需求分析 3
1.2.1.数据需求 3
1.2.2事物需求 4
1.2.3关系模式 4
1.3概念结构设计 5
1.3.1.E-R图 5
1.4.逻辑结构设计 6
1.4.1表结构 6
1.4.2数据库设计及完整性约束 8
1.4.3.数据库用户权限管理 9
第二章应用系统设计 10
2.1.需求分析 10
2.1.1数据需求 10
2.1.2事物需求 10
2.1.3关系模式 10
2.1.5数据字典 11
2.2.概念结构设计 13
2.3.详细设计 14
2.3.1流程图 14
2.4.运行界面 15
2.4.1管理员登陆界面 15
2.4.2管理员查询、添加、修改、删除学生基本信息表 15
2.4.3.成绩查询、添加、删除 19
2.4.4.课程的查询、添加、删除 21
2.4.5.学生详细信息的查询、添加、删除 23
2.4.6.普通用户登录界面 26
2.4.7.个人事务管理登录界面 26
2.4.8.生活委员管理特殊权限 27
2.4.9.个人事务事件管理界面 31
第三章课程设计结语 34
参考文献 35
第一章数据库设计内容
1.1.课程设计任务与要求
1.1.1.任务
班级事务管理系统
问题描述:
班级管理信息系统的任务是收集、存储、管理班级同学的相关信息,以及班级日常管理中的相关信息。
为班级信息公开、增进同学交流了解服务,同时加强班级管理、提高班级管理与服务的效率和质量。
1.1.2.设计要求
①、实现用户登录。
②、实现管理员管理班级事务。
(学生信息、成绩、课程、详细信息的增、删、改、查)
③、实现学生成绩查询。
④、实现个人事务管理。
⑤、实现生活委员班费管理。
1.1.3.运行环境
WindowsXP、SQLServer5.0、Myeclipse6.0、Tomcat5.5.28、IE浏览器、JDK
1.2需求分析
1.2.1.数据需求
班级事务管理系统需要完成功能主要有:
①学生基本信息的输入,包括学号、姓名、担任职务等。
②学生基本信息的添加、查询、修改、删除,包括学生学号、姓名、职务、角色等。
③学生成绩的添加、查询、修改、删除,包括学号、课程号、分数。
④课程的添加、删除,包括课程号、课程名、学分、任课老师。
⑤生活委员对班费的管理,包括班费的收入、支出。
⑥个人对本人事务的管理,包括时间和事件。
1.2.2事物需求
①管理员对学生事务管理部分,要求:
a、可以查询学生基本、详细信息、课程信息以及成绩。
b、可以对学生基本信息、详细信息进行添加、修改及删除操作。
c、可以对课程信息进行添加、删除操作。
d、可以对学生成绩进行添加、删除操作。
②生活委员对班费的管理,要求:
a、可以查询班费收入支出的详细信息。
b、可以对班费信息进行添加、修改、删除操作。
1.2.3关系模式
学生用户表(学号、姓名、密码、担任职务、角色)
课程表(课程号、课程名、学分、任课老师)
成绩表(主键、学号、课程号、成绩)
学生详细信息表(id、学生学号、出生日期、身份证号码、家庭往址、宿舍号、银行卡号)
生活委员事物表(ID、时间、活动地点、活动人数、消费前班费余额、消费金额、消费后班费余额、活动意义、活动结果)
其它管理页面(ID、时间、内容、结果)
1.3概念结构设计
1.3.1.E-R图
担任职务
密码
学号
角色
姓名
角色
姓名
ID
密码
ID
成绩管理
家庭住址
出生日期
学号
ID
身份证号
银行卡号
学生详细信息
查询
管理
学生基本信息
管理员
生活委员事务管理
课程名
课程管理
管理
角色
密码
姓名
学生
分数
课程号
学号
结果
事件
时间
查询
总余额
人数
消费金额
地点
个人事务管理
结果
课程号
时间
ID
意义
ID
任课老师
学分
1.4.逻辑结构设计
1.4.1表结构
1.4.2数据库设计及完整性约束
学生用户表:
createtableuser
(
idintauto_incrementprimarykey,
usernamevarchar(10),
userpassvarchar(20),
userjobvarchar(10),
userrolevarchar(10)
)
课程表:
createtablecourse
(
idintauto_incrementprimarykey,
cnamevarchar(20),
ccreditint,
cteachervarchar(20)
)
成绩表:
createtableSc
(
idintauto_incrementprimarykey,
uidint,
cidint,
sgradevarchar(5)
)
ALTERTABLEScADDCONSTRAINTfk_Sc_uidFOREIGNKEY(uid)REFERENCESuser(id);
ALTERTABLEScADDCONSTRAINTfk_Sc_cidFOREIGNKEY(cid)REFERENCEScourse(id);
学生详细信息表:
createtablestuinfo
(
idintauto_incrementprimarykey,
stuidint,
stubirthvarchar(20),
stuidentityvarchar(30),
stuaddrvarchar(200),
studormvarchar(20),
stucardvarchar(20)
)
ALTERTABLEstuinfoADDCONSTRAINTfk_stuinfo_stuidFOREIGNKEY(stuid)REFERENCESuser(id);
生活委员事物表:
createtableshwy
(
idintauto_incrementprimarykey,
timevarchar(20),
addrvarchar(100),
stunumint,
startmoneydecimal,
expensedecimal,
endmoneydecimal,
actmeaningtext,
actresultvarchar(10)
)
其它管理页面:
createtableqita(
idintauto_incrementprimarykey,
qtimevarchar(20),
qcontenttext,
qresultvarchar(20)
)
1.4.3.数据库用户权限管理
该系统设置三种类型的用户
(1)管理员(admin)即系统管理员拥有对学生基本信息、详细信息、成绩、课程的管理权限。
(2)生活委员(shwy)可以对班级班费收入支出的详细信息进行管理;
(3)其他个人(qita)对个人事务事件进行管理。
第二章应用系统设计
2.1.需求分析
2.1.1数据需求
班级事务管理系统需要完成功能主要有:
①学生基本信息的输入,包括学号、姓名、担任职务等。
②学生基本信息的添加、查询、修改、删除,包括学生学号、姓名、职务、角色等。
③学生成绩的添加、查询、修改、删除,包括学号、课程号、分数。
④课程的添加、删除,包括课程号、课程名、学分、任课老师。
⑤生活委员对班费的管理,包括班费的收入、支出。
⑥个人对本人事务的管理,包括时间和事件。
2.1.2事物需求
①管理员对学生事务管理部分,要求:
a、可以查询学生基本、详细信息、课程信息以及成绩。
b、可以对学生基本信息、详细信息进行添加、修改及删除操作。
c、可以对课程信息进行添加、删除操作。
d、可以对学生成绩进行添加、删除操作。
②生活委员对班费的管理,要求:
a、可以查询班费收入支出的详细信息。
b、可以对班费信息进行添加、修改、删除操作。
2.1.3关系模式
学生用户表(学号、姓名、密码、担任职务、角色)
课程表(课程号、课程名、学分、任课老师)
成绩表(主键、学号、课程号、成绩)
学生详细信息表(id、学生学号、出生日期、身份证号码、家庭往址、宿舍号、银行卡号)
生活委员事物表(ID、时间、活动地点、活动人数、消费前班费余额、消费金额、消费后班费余额、活动意义、活动结果)
其它管理页面(ID、时间、内容、结果)
2.1.5数据字典
为了使各数据流,数据处理过程,存储过程不能反映其中的数据成,数据项目,数据特性,所以用数据字典来对数据流图中的各成份进行具体的定义,为系统的分析,设计及以后的实现提供供有关元素一致性定义和详细的描述:
①数据流字典
数据流名称:
管理员登录(P3)
来源:
管理员
去向:
查询学生基本信息
数据组成:
姓名+密码+登录权限
数据流名称:
学生个人登录
来源:
个人
去向:
查询个人信息
数据组成:
姓名+密码+登录权限
数据流名称:
生活委员登录
来源:
生活委员
去向:
班费管理
数据组成:
姓名+密码+登录权限
数据流名称:
所有学生基本信息查询
来源:
管理员
去向:
查询处理过程
数据组成:
学号|姓名|密码|担任职务|角色
数据流名称:
所有学生详细信息查询
来源:
管理员
去向:
查询处理过程
数据组成:
学生学号|出生日期|身份证号码|家庭往址|宿舍号|银行卡号
数据流名称:
成绩和课程查询
来源:
学生
去向:
查询处理过程
数据组成:
主键|学号|课程号|成绩
数据流名称:
班费管理查询
来源:
生活委员
去向:
查询处理过程(P3)
数据组成:
ID|时间|活动地点|活动人数|消费前班费余额|消费金额|消费后班费余额|活动意义|活动结果
数据流名称:
个人事务查询
来源:
学生
去向:
查询处理过程
数据组成:
ID|时间|内容|结果
2.2.概念结构设计
班费管理
个人事务管理
个人事务管理
课程管理
成绩管理
详细信息管理
基本信息管理
生活委员管理班费事宜
管理员管理班级事务
班级事务管理系统
2.3.详细设计
2.3.1流程图
更新页面
删除
删除
添加页面
查询基本信息
添加页面
详细信息查询
管理员
查询全部成绩
登录
添加页面
添加页面
删除
普通用户
添加页面
删除
个人事务管理页面
事务登录界面
班费管理页面
添加页面
删除
更新页面
成绩查询
个人页面
删除
课程查询
2.4.运行界面
2.4.1管理员登陆界面
2.4.2管理员查询、添加、修改、删除学生基本信息表
程序代码说明
package.dao;
importjava.io.UnsupportedEncodingException;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.LinkedList;
importjava.util.List;
import.bean.UserBean;
import.util.DBConnection;
publicclassStudentDao{
publicListqueryAllStudent(){
Listlist=newLinkedList();
Connectionconn=DBConnection.getConnection();
try{
PreparedStatementps=conn.prepareStatement
("select*fromuser");
ResultSetrs=ps.executeQuery();
while(rs.next()){
UserBeanstudent=newUserBean();
student.setId(rs.getInt("id"));
student.setUsername(rs.getString("username"));
student.setUserpass(rs.getString("userpass"));
student.setUserjob(rs.getString("userjob"));
student.setUserrole(rs.getString("userrole"));
list.add(student);
}
}catch(SQLExceptione){e.printStackTrace();
}finally{
try{conn.close();
}catch(SQLExceptione){e.printStackTrace();
}
}
returnlist;
}
publicUserBeanqueryById(intid){
Connectionconn=DBConnection.getConnection();
UserBeanstudent=null;
try{PreparedStatementps=conn.prepareStatement("select*fromuserwhereid=?
");
ps.setInt(1,id);
ResultSetrs=ps.executeQuery();
while(rs.next()){
student=newUserBean();
student.setId(rs.getInt("id"));
student.setUsername(rs.getString("username"));
student.setUserpass(rs.getString("userpass"));
student.setUserjob(rs.getString("userjob"));
student.setUserrole(rs.getString("userrole"));
}
}catch(SQLExceptione){e.printStackTrace();
}finally{
try{conn.close();
}catch(SQLExceptione){e.printStackTrace();
}
}
returnstudent;
}
publicintupdateStuInfo(UserBeanstu){
Connectionconn=DBConnection.getConnection();
UserBeanstudent=null;
intflag=0;
try{PreparedStatementps=conn.prepareStatement
("updateusersetusername=?
userpass=?
userjob=?
userrole=?
whereid=?
");
ps.setString(1,stu.getUsername());
ps.setString(2,stu.getUserpass());
ps.setString(3,stu.getUserjob());
ps.setString(4,stu.getUserrole());
ps.setInt(5,stu.getId());
flag=ps.executeUpdate();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
returnflag;
}
publicintdeleteInfo(intid){
Connectionconn=DBConnection.getConnection();
UserBeanlb=null;
intflag=0;
try{
PreparedStatementps=conn.prepareStatement
("deletefromuserwhereid=?
");
ps.setInt(1,id);
flag=ps.executeUpdate();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
returnflag;
}
publicintaddStudentInfo(UserBeanub){
intflag=0;
Connectionconn=DBConnection.getConnection();
PreparedStatementps;
Stringusername=ub.getUsername();
try{
username=newString(username.getBytes("ISO-8859-1"),"UTF-8");
}catch(UnsupportedEncodingExceptione1){
e1.printStackTrace();
}
try{
ps=conn.prepareStatement
("insertintouser
(username,userpass,userjob,userrole)values(?
?
?
?
)");
ps.setString(1,ub.getUsername());
ps.setString(2,ub.getUserpass());
ps.setString(3,ub.getUserjob());
ps.setString(4,ub.getUserrole());
flag=ps.executeUpdate();
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
returnflag;
}
}
2.4.3.成绩查询、添加、删除
程序代码说明:
package.dao;
importjava.io.UnsupportedEncodingException;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.LinkedList;
importjava.util.List;
import.bean.CoursBean;
import.bean.ScBean;
import.bean.UserBean;
import.util.DBConnection;
publicclassScDao{
publicListqueryAllSc(){
Listlist=newLinkedList();
Connectionconn=DBConnection.getConnection();
try{
PreparedStatementps=conn.prepareStatement
("select*fromsc");
ResultSetrs=ps.executeQuery();
while(rs.next()){
ScBeanscb=newScBean();
scb.setId(rs.getInt("id"));
scb.setUid(rs.getInt("uid"));
scb.setCid(rs.getInt("cid"));
scb.setSgrade(rs.getString("sgrade"));
list.add(scb);
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
returnlist