《数据库课程设计(学生成绩管理系统).doc》由会员分享,可在线阅读,更多相关《数据库课程设计(学生成绩管理系统).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、正文:数据库原理与应用课程设计说明书题目: 班级事务管理系统 院 系: 经济与管理系 专业班级: 信息管理与信息系统 学 号: 学生姓名: 赵飞 指导教师: 苏红畏 2013年 12 月 25 日目录数据库原理与应用1一 概述2二 需求分析2三 概念模型设计4四 逻辑和物理结构设计5五 数据库的实施与维护7六 总结0一 概述1.1目的与要求班级管理信息系统的任务是收集、存储、管理班级同学的相关信息,以及班级日常管理中的相关信息。为班级信息公开、增进同学交流了解服务,同时加强班级管理、提高班级管理与服务的效率和质量。1.2设计环境Microsoft SQL Server 2000Microsof
2、t Visual C+ 6.0二 需求分析2.1 系统功能要求设计 级事务管理系统需要完成功能主要有:学生基本信息的输入,包括学号、姓名、担任职务等。学生基本信息的添加、查询、修改、删除,包括学生学号、姓名、职务、角色等。学生成绩的添加、查询、修改、删除,包括学号、课程号、分数。课程的添加、删除,包括课程号、课程名、学分、任课老师。生活委员对班费的管理,包括班费的收入、支出。个人对本人事务的管理,包括时间和事件。2.2 系统模块设计学生用户表(学号、姓名、密码、担任职务、角色)课程表(课程号、课程名、学分、任课老师)成绩表(主键、学号、课程号、成绩)学生详细信息表(id、学生学号、出生日期、身
3、份证号码、家庭往址、宿舍号、银行卡号)生活委员事物表(ID、时间、活动地点、活动人数、消费前班费余额、消费金额、消费后班费余额、活动意义、活动结果)其它管理页面(ID、时间、内容、结果)2.3 数据字典 三 概念模型设计.3.1. E-R图担任职务密码学号角色姓名角色姓名ID密码ID成绩管理家庭住址出生日期学号ID身份证号银行卡号学生详细信息查询管理学生基本信息管理员生活委员事务管理课程名课程管理管理角色密码姓名学生分数课程号学号结果事件时间查询总余额人数消费金额地点个人事务管理结果课程号时间ID意义ID任课老师学分四 逻辑和物理结构设计4.1由系统ER图转化而得到的关系模式如下:学生用户表(
4、学号、姓名、密码、担任职务、角色)课程表(课程号、课程名、学分、任课老师)成绩表(主键、学号、课程号、成绩)学生详细信息表(id、学生学号、出生日期、身份证号码、家庭往址、宿舍号、银行卡号)生活委员事物表(ID、时间、活动地点、活动人数、消费前班费余额、消费金额、消费后班费余额、活动意义、活动结果)其它管理页面(ID、时间、内容、结果)4.2 确定关系模型的存取方法在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。在实际设计中最常用的存取方法是索
5、引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面作用。4.3 确定数据库的存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。因为该成绩管理系统的数据量小,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。(1)创建学生基本信息表:create t
6、able user(id int auto_increment primary key,username varchar(10),userpass varchar(20),userjob varchar(10),userrole varchar(10)课程表:create table course(id int auto_increment primary key,cname varchar(20),ccredit int,cteacher varchar(20)成绩表:create table Sc(id int auto_increment primary key,uid int,cid
7、int,sgrade varchar(5)ALTER TABLE Sc ADD CONSTRAINT fk_Sc_uid FOREIGN KEY(uid) REFERENCES user(id);ALTER TABLE Sc ADD CONSTRAINT fk_Sc_cid FOREIGN KEY(cid) REFERENCES course(id);学生详细信息表:create table stuinfo(id int auto_increment primary key,stuid int,stubirth varchar(20),stuidentity varchar(30),stuad
8、dr varchar(200),studorm varchar(20),stucard varchar(20)ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_stuid FOREIGN KEY(stuid) REFERENCES user(id);生活委员事物表:create table shwy(id int auto_increment primary key,time varchar(20),addr varchar(100),stunum int ,startmoney decimal,expense decimal,endmoney dec
9、imal,actmeaning text,actresult varchar(10)其它管理页面:create table qita(id int auto_increment primary key,qtime varchar(20),qcontent text,qresult varchar(20)五 数据库的实施与维护5.1 数据库的实施:此阶段主要任务包括创建数据库,加载初始数据,数据库试运行,数据库的安全性和完整性控制数据库的备份与恢复,数据库性能的监督分析和改仅,数据库的重组和重构等。首先在数据库中建立一个学生成绩管理系统数据库,然后新建一个数据源。班级事务管理系统需要完成功能主要
10、有:学生基本信息的输入,包括学号、姓名、担任职务等。学生基本信息的添加、查询、修改、删除,包括学生学号、姓名、职务、角色等。学生成绩的添加、查询、修改、删除,包括学号、课程号、分数。课程的添加、删除,包括课程号、课程名、学分、任课老师。生活委员对班费的管理,包括班费的收入、支出。个人对本人事务的管理,包括时间和事件。管理员对学生事务管理部分,要求:a、可以查询学生基本、详细信息、课程信息以及成绩。b、可以对学生基本信息、详细信息进行添加、修改及删除操作。c、可以对课程信息进行添加、删除操作。d、可以对学生成绩进行添加、删除操作。生活委员对班费的管理,要求:a、可以查询班费收入支出的详细信息。b
11、、可以对班费信息进行添加、修改、删除操作。学生用户表(学号、姓名、密码、担任职务、角色)课程表(课程号、课程名、学分、任课老师)成绩表(主键、学号、课程号、成绩)学生详细信息表(id、学生学号、出生日期、身份证号码、家庭往址、宿舍号、银行卡号)生活委员事物表(ID、时间、活动地点、活动人数、消费前班费余额、消费金额、消费后班费余额、活动意义、活动结果)其它管理页面(ID、时间、内容、结果)班费管理个人事务管理个人事务管理课程管理成绩管理详细信息管理基本信息管理生活委员管理班费事宜管理员管理班级事务班级事务管理系统5.1.流程图更新页面删除删除添加页面查询基本信息添加页面详细信息查询管理员查询全
12、部成绩登录添加页面添加页面删除普通用户添加页面删除个人事务管理页面事务登录界面班费管理页面添加页面删除更新页面成绩查询个人页面删除课程查询5.2部分操作截图:5.3普通用户登录界面5.4个人事务管理登录界面5.5生活委员管理特殊权限程序代码说明:package .dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.LinkedList;import java.util.Lis
13、t;import .bean.ShwyBean;import .util.DBConnection;public class ActivityDao public List queryAllActivity()List list = new LinkedList();Connection conn = DBConnection.getConnection();try PreparedStatement ps = conn.prepareStatement(select * from shwy);ResultSet rs = ps.executeQuery();while (rs.next()
14、ShwyBean scb= new ShwyBean();scb.setId(rs.getInt(id);scb.setTime(rs.getString(time);scb.setAddr(rs.getString(addr);scb.setStunum(rs.getInt(stunum);scb.setStartmoney(rs.getDouble(startmoney);scb.setExpense(rs.getDouble(expense);scb.setEndmoney(rs.getDouble(endmoney);scb.setActmeaning(rs.getString(act
15、meaning);scb.setActresult(rs.getString(actresult);list.add(scb); catch (SQLException e) e.printStackTrace();finallytry conn.close(); catch (SQLException e) e.printStackTrace();return list;public int deleteArrInfo(int id)Connection conn = DBConnection.getConnection();ShwyBean lb=null;int flag=0;try P
16、reparedStatement ps = conn.prepareStatement(delete from shwy where id=?);ps.setInt(1, id);flag= ps.executeUpdate(); catch (SQLException e) e.printStackTrace();finallytry conn.close(); catch (SQLException e) e.printStackTrace();return flag;public int addArrInfo(ShwyBean cb) int flag = 0;Connection co
17、nn = DBConnection.getConnection();PreparedStatement ps;try ps = conn.prepareStatement(insertintoshwy(time,addr,stunum,startmoney,expense,endmoney,actmeaning,actresult) values(?,?,?,?,?,?,?,?);ps.setString(1, cb.getTime();ps.setString(2, cb.getAddr();ps.setInt(3, cb.getStunum();ps.setDouble(4, cb.get
18、Startmoney();ps.setDouble(5,cb.getExpense();ps.setDouble(6,cb.getEndmoney();ps.setString(7,cb.getActmeaning();ps.setString(8,cb.getActresult();flag=ps.executeUpdate();conn.close(); catch (SQLException e) e.printStackTrace();return flag;public ShwyBean queryById(int id)Connection conn = DBConnection.
19、getConnection();ShwyBean sb=null;try PreparedStatement ps = conn.prepareStatement(select * from shwy where id=?);ps.setInt(1, id);ResultSet rs = ps.executeQuery();while (rs.next() sb = new ShwyBean();sb.setId(rs.getInt(id);sb.setTime(rs.getString(time);sb.setAddr(rs.getString(addr);sb.setStunum(rs.g
20、etInt(stunum);sb.setStartmoney(rs.getDouble(startmoney);sb.setExpense(rs.getDouble(expense);sb.setEndmoney(rs.getDouble(endmoney);sb.setActmeaning(rs.getString(actmeaning);sb.setActresult(rs.getString(actresult); catch (SQLException e) e.printStackTrace();finallytry conn.close(); catch (SQLException
21、 e) e.printStackTrace();return sb;public int updateArrInfo(ShwyBean sb)Connection conn = DBConnection.getConnection();ShwyBean student=null;int flag=0;try PreparedStatement ps = conn.prepareStatement(updateshwysettime=?,addr=?,stunum=?,startmoney=?,expense=?,endmoney=?,actmeaning=?,actresult=? where
22、 id=?);ps.setString(1,sb.getTime() );ps.setString(2,sb.getAddr() );ps.setInt(3,sb.getStunum();ps.setDouble(4,sb.getStartmoney() );ps.setDouble(5,sb.getExpense() );ps.setDouble(6,sb.getEndmoney() );ps.setString(7,sb.getActmeaning();ps.setString(8,sb.getActresult() );ps.setInt(9, sb.getId();flag= ps.e
23、xecuteUpdate(); catch (SQLException e) e.printStackTrace();finallytry conn.close(); catch (SQLException e) e.printStackTrace();return flag;5.6个人事务事件管理界面程序代码说明:package .dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.
24、util.LinkedList;import java.util.List;import .bean.QitaBean;import .util.DBConnection;public class QitaDao public List queryAllQita()List list = new LinkedList();Connection conn = DBConnection.getConnection();try PreparedStatement ps = conn.prepareStatement(select * from qita);ResultSet rs = ps.exec
25、uteQuery();while (rs.next() QitaBean scb= new QitaBean();scb.setId(rs.getInt(id);scb.setQtime(rs.getString(qtime);scb.setQcontent(rs.getString(qcontent);scb.setQresult(rs.getString(qresult);list.add(scb); catch (SQLException e) e.printStackTrace();finallytry conn.close(); catch (SQLException e) e.pr
26、intStackTrace();return list;public int deleteQitaArrInfo(int id)Connection conn = DBConnection.getConnection();QitaBean lb=null;int flag=0;try PreparedStatement ps = conn.prepareStatement(delete from qita where id=?);ps.setInt(1, id);flag= ps.executeUpdate(); catch (SQLException e) e.printStackTrace
27、();finallytry conn.close(); catch (SQLException e) e.printStackTrace();return flag;public int addQitaArrInfo(QitaBean qb) int flag = 0;Connection conn = DBConnection.getConnection();PreparedStatement ps;try ps = conn.prepareStatement(insert into qita(qtime,qcontent,qresult) values(?,?,?);ps.setStrin
28、g(1, qb.getQtime();ps.setString(2, qb.getQcontent();ps.setString(3, qb.getQresult();flag=ps.executeUpdate();conn.close(); catch (SQLException e) e.printStackTrace();return flag;public QitaBean queryById(int id)Connection conn = DBConnection.getConnection();QitaBean qb=null;try PreparedStatement ps =
29、 conn.prepareStatement(select * from qita where id=?);ps.setInt(1, id);ResultSet rs = ps.executeQuery();while (rs.next() qb = new QitaBean();qb.setId(rs.getInt(id);qb.setQtime(rs.getString(qtime);qb.setQcontent(rs.getString(qcontent);qb.setQresult(rs.getString(qresult); catch (SQLException e) e.prin
30、tStackTrace();finallytry conn.close(); catch (SQLException e) e.printStackTrace();return qb;课程设计心得体会在本次课程设计的软件开发的过程中,不仅学到了很多知识,还认识了很多事情全面实践一个面向数据库的应用系统的开发过程,这样的项目对我们学过的数据结构,程序设计,数据库,软件工程等课程是一个综合性很高的实践。一些以前没有学得很杂实的课程的内容,由于需要在实践中运用,刚开始由于对理论知识掌握的不透彻,经过一段时间的钻研,对与这些知识点的相关的背景,概念和解决方案理解得更深了,小组之间合作也约有默契,越来越
31、轻松。慢慢熟悉了数据库设计的每一个过程。另外通过这次合作,还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。特别是小组成员之间互相一定要沟通好,这次设计,充分的认识到了合作的可贵。在开始编写程序的时候,看到别人的软件功能非常的详细,而且界面非常的漂亮,总希望自己的软件也非常的完善,但是,经过二个月的学习,发现编一个优秀的软件决不是一蹴而就的事情,需要长时间的积累和经验。由于我们的知识有限,经验不足及阅历不足,因此,在该系统的设计方面还有很多不足,比如功能过少,界面不够完美等问题,我们会在工作的使用过程中,根据工作的具体要求不断的改进,完善,争取使该系统慢慢趋向完美。参考文献1、数据库系统概论 作者:王珊 萨师煊 出版社:高等教育出版社;2006.2、Java Web应用程序设计;2010.3、Java语言程序设计作者:吕凤翥马皓 出版社:清华大学出版社;2008.
限制150内