数据库课程设计之学生信息管理系统
数据库原理课程设计报告
题目: 学生信息管理系统
《
学生姓名:穆岭(徐清锋、冉丽华)
学号:00
班级:计科092
院系:计算机科学与信息学院
专业年级:计算机科学与技术2009级
、
2011年12月22日
·
一、需求分析
需包含内容为:
(1)问题描述:学生信息的管理是学校很重要的一项工作,而人工管理学生信息的话,无疑是一个很费时费力的事情,而且效率不高,容易出错,往往是学校进行学生工作的一个瓶颈问题,有一个学生信息管理的系统就能够帮助学校更好完成学生信息管理的工作,降低管理成本。所以我们组编写了一个学生信息管理系统,使其在学生管理工作中发挥更大的作用。
(2)系统功能描述:
本系统是一个学生信息管理系统,主要管理学生的基本信息,课程信息,以及学生选课成绩信息等,登录的模块有两种登录类型,分别是管理员登录和学生登录,如果是管理员登录的话,进入管理员界面,要求管理员界面中可以信息的学生基本信息、课程基本信息和学生选课成绩信息的管理设置;还有信息查询,在这块儿中可以进行学生基本信息的查询,课程信息的查询,以及选课成绩信息的查询;除此之外,要求设一个用户维护模块,在这个模块中管理员可以添加管理员用户或者是学生用户,可以修改密码,并且能够切换用户登录;接着是帮助,帮助中显示系统的版本;最后要求有一个推出系统按钮。如果是学生登录,那么学生可以进行学生信息的维护,可以进行登录密码的修改,基本信息的修改,以及切换用户登录;可以进行学生基本信息的查询,学生课程学习的查询,学生选课成绩信息的查询。接着是帮助,帮助中显示系统的版本;最后要求有一个推出系统按钮。其详细的操作框架流程在下面的图中可以见到。
.
操作流程框图:
存储的数据信息:
User表(用户名,密码,用户类型标识),用于存储登录用户信息;
Student表(学号,姓名,性别,出生日期,电话,QQ号,专业,班级,家庭地址),用于存储学生基本信息;
Course表(课程号,课程名,先行课,学分,教师姓名),用于存储课程基本信息;SC表(学号,课程号,成绩,绩点),用于存储学生选课成绩信息。
^
(3)有何安全性与完整性方面的要求。
安全性:如果是管理员登录系统:可以进行管理设置,包括(设置学生的基本信息、设置课程信息、设置学生成绩信息),设置各种信息的时候有添加,删除和修改等相应功能,然后是信息查询,包括(查询学生基本信息,查询课程信息、查询学生成绩信息),用户的维护,包括(添加用户,修改用户密码,切换用户登录),帮助,退出系统。如果是学生登录系统:可以修改自己的基本信息,修改个人登录密码,切换用户登录,同样可进行信息查询,包括(查询学生基本信息,查询课程信息、查询学生成绩信息),查看帮助,退出系统。
完整性:主要是在删除学生信息和课程信息的时候如果在选课信息中存在选课成绩信息的话,那么就不能直接进行相应信息的删除,在开发中要给出相应的信息提示,在进行各种添加、和更新操作之前也有进行相应的判断,如果原来的信息中已经有了所要添加的该条信息,怎不能添添加,并给出相应的提示,如果不存在所要更新的信息的时候也不能进行更新,并给出相应的提示。具体的完整性约束在编程中具体给出。
二、概念结构设计
画出系统整体的E-R模型;并对模型中所出现的实体及属性等信息加以说明。
概念模型
^
物理模型
三、逻辑结构设计
(1)模式设计:按系统整体E-R模型,写出关系模式;并利用数据字典加以描述。(如每个关系模式有何属性、属性的类型、属性值的长度、是否可取空值、是否为主码、有何约束条件等信息);
本系统的设计中主要涉及到四个表,分别是User表、Student表,Course表,SC表,在这四个表中,User表用于存储用户信息,Student表存储学生信息表,Course表存储课程信息,SC表存储学生选课的成绩信息。这四个表的结构如下:(
User表
< Student表.
Course表》
。
SC表\
!
(2)子模式设计:即针对自己的设计模块的应用需定义什么样的视图表结构;并利用数据字典加以描述。
'
由于在查询学生成绩信息的时候要查询学生学号、姓名、课程号、课程名、学分、成绩、绩点、联系电话,这就需要涉及到三个表的连接,为了查询的方便,所以在进行设计的时候创建了一个Stu_Cou_SC视图表,表结构为Stu_Cou_SC视图(学号,姓名,课程号,课程名,学分,成绩,绩点,联系电话)
联系电话
'
(3)画出系统功能模块图,并对各功能模块进行简单介绍。
在登录模块中,设置了两种登录类型,一种是管理员登录,一种是学生登录。
这两种登录有着不同的使用权限。管理员登录系统可以进行管理设置,信息查询和用户维护等操作,学生登录系统可以进行信息维护和信息查询等。
在管理设置模块中,用户可以进行学生信息的设置、课程信息设置、选课成绩信息的设置,在各个信息的设置中都可以进行添加、更新和删除操作。
:
在信息查询模块中,用户可以进行学生基本信息查询,课程信息查询以及学生选课成绩信息的查询。在各个查询中又设置有精确查询和模糊查询,使其查询更智能化。
在用户维护模块中,可以进行添加用户,修改用户登录密码,切换用户登录功能。
在学生登录后的信息维护模块中,学生统一可以修改登录密码,修改个人基本信息,和切换用户登录。
四、数据库的物理设计
)
在本系统的数据库设计阶段,我们为其建立了下面的三个索引字段,分别是基于Student表建立的Stusno以sno为升序索引,基于Course表建立的Coucno以cno 为升序索引,和基于SC表建立的SCno以sno为升序,以cno为降序的索引。对应的T-SQL语句如下:
/*创建索引字段*/
DROP INDEX;
CREATE INDEX Stusno ON Student(sno ASC);
DROP INDEX;
CREATE INDEX Coucno ON Course(cno ASC);
DROP INDEX;
¥
CREATE INDEX SCno ON SC(sno ASC,cno DESC);
五、数据库设计实现及运行
(1)数据库的创建
T-SQL语句:
CREATE DATABASE SIMS;
(2)数据表的创建
T-SQL语句:
/*用户表*/
`
DROP TABLE User;
CREATE TABLE User(
uname VARCHAR(20)NOT NULL,
upass VARCHAR(30)NOT NULL,
bs INT NOT NULL
);
/*学生表*/
·
DROP TABLE Student;
CREATE TABLE Student(
sno VARCHAR(20)PRIMARY KEY, sname VARCHAR(20)NOT NULL,
sex VARCHAR(2)NOT NULL,
birth DATE,
tel VARCHAR(20),
qq VARCHAR(20),
、
sdept VARCHAR(20)NOT NULL,
class VARCHAR(20)NOT NULL,
address VARCHAR(50)
);
/*课程表*/
DROP TABLE Course;
CREATE TABLE Course(
]
cno VARCHAR(20)PRIMARY KEY,
cname VARCHAR(20)NOT NULL,
cpno V ARCHAR(20),
credit FLOAT NOT NULL,
tname VARCHAR(20)NOT NULL
);
/*成绩表*/
…
DROP TABLE SC;
CREATE TABLE SC(
sno VARCHAR(20),
cno VARCHAR(20),
grade FLOAT,
point FLOAT,
PRIMARY KEY(sno,cno),
Foreign KEY (sno)REFERENCES Student(sno),【
Foreign KEY (cno)REFERENCES Course(cno) );
(3)视图的创建
T-SQL语句:
/*创建Stu_Cou_SC视图*/
DROP VIEW Stu_Cou_SC;
CREATE VIEW Stu_Cou_SC(sno,sname,cno,cname,credit,grade,point,tel)
AS
SELECT ,sname,,cname,credit,grade,point,tel
FROM Student s,Course c,SC sc
WHERE = AND =;
(4)各模块中的功能实现
a)功能界面(截图);
管理员登录模块功能截图
.
用户登录
添加学生信息
更新学生信息
删除学生信息
|
信息查询查询学信息
精确查询
(
模糊查询
用户维护
添加用户
:
修改密码
帮助
切换用户登录
(
弹出登录窗体选择学生登录学生登录功能截图
信息维护
信息查询
b)功能界面简单描述;
:
首先是运行程序,进入用户登录界面,登录是要进行身份验证,在这登录过程系统会通过数据库中的User表存储的数据进行验证,并判断用标识检查登录的类型。
当登录的类型是管理员登录时,登录成功后会进入管理员操作界面,在管理员登录界面中,管理员可以进行管理设置,如:设置学生基本信息,设置课程信息,设置成绩信息,每个设置都有相应的添加、更新、删除操作;接着是信息查询,在这儿可以查询学生的基本信息,查询课程信息,查询成绩信息,在每一种查询中都分别设置有精确查询和模糊查询等操作,模糊查询使得查询在查询的时候更加方便;还有就是用户维护操作,这里面管理员可以添加用户,修改登录密码,切换用户登录,最后是帮助中的关于和系统的退出。
当登录类型为学生登录时,登录成功后会进入学生操作界面,在此界面中学生可以在信息维护下修改登录密码,更新个人基本信息,切换用户登录;然后也可以查询学生基本信息,查询课程信息,查询成绩信息,同样查询中也设置有精确查询和模糊查询;最后也有帮助中的关于和系统的退出。
在界面的操作过程中,对一些在操作中可能是操作失误导致的错误进行了相应的提示,比如成绩的输入必须是字符型数字,出生日期是格式应为yyyy-MM-dd格式,如果输入格式不对,给出相应的提示,操作人员在给出
对应的正确操作,这使得该系统变得更加智能化。
c)T-SQL语句与宿主语言嵌套使用代码段
/*JAVA数据库的连接程序*/
private static final String DBDRIVER = ";
—
private static final String DBURL = "jdbc:;"
+ "DatabaseName=SIMS ";
private static final String DBUSER = "sa";
private static final String DBPASS = ""; arse(rs
.getString(4));
} catch (ParseException e) {
(this, "查询得到的日期格式不符合"
+ ());
;
}
String tel = (5);
String qq = (6);
String sdept = (7);
String sclass = (8);
String addr = (9);
(sno);
(sname);
<
(sex);
(birth);
(tel);
(qq);
(sdept);
(sclass);
(addr);
(stu);
—
}
if () == 0) {
(this, "没有查询到相关的数据!\n");
} else if () > 0) {
/*这段是对查询的结果进行显示的代码,这里省略*/ }
} catch (SQLException e) {
(this, "查询学生记录失败!查询异常:"
】
+ ());
} finally {
if (conn != null) {
();
}
}
/*使用模糊查询方式查询学生基本信息*/
String sql2 = "SELECT * FROM Student WHERE sno LIKE OR sname LIKE OR sdept
LIKE OR class LIKE ";
PreparedStatement pstmt = null;
try {
pstmt = (sql2);
(1, "%" + keyword + "%");
(2, "%" + keyword + "%");
(3, "%" + keyword + "%");
(4, "%" + keyword + "%");
ResultSet rs = ();
all = new ArrayList
while ()) {
stu = new Student(); arse(rs
.getString(4));
} catch (ParseException e) {
(this, "查询得到的日期格式不符合"
+ ());
}
String tel = (5);
String qq = (6);
String sdept = (7);
String sclass = (8);
String addr = (9);
(sno);
(sname);
(sex);
(birth);
(tel);
(qq);
(sdept);
(sclass);
(addr);
(stu);
}
if () == 0) {
(this, "没有查询到相关的数据!\n");
}else if () > 0) {
/*这段是对查询的结果进行显示的代码,这里省略*/
} catch (SQLException e) {
(this, "查询学生记录失败!查询异常:"
+ ());
}
六、课程设计心得
在本次课程设计课题安排以后,我们组决定使用JAVA语言来进行开发,确定之后,开始进行按照学习计划进行学习,选用《JAVA实战开发经典》这本书作为主教材,自己在网上找的一些视频和学习资料,根据这些资料自己动手写程序,在学习过程不断地进行练习,通过练习来慢慢熟悉JAVA的语法,慢慢的感觉到自己对JAVA学习有了一定兴趣,然后我坚持每天都写一点儿代码,保持着这种编程的感觉,这样边学边练的方式,使我学习的JAVA知识得到了巩固,在学习过程中遇到问题,我会自己先思考,如果不能解决,我的第一反应是就是要发挥网络的强大作用,在网上查找解决办法,这种方式提高了我自主学习的能力和自我解决问题的能力。
在此次课程设计的过程中,整体感觉都比较好,因为在此之前我们认真学习了一些JAVA数据库系统开发的例子,然后自己跟着动手写了一些东西,在数据库的常规使用上相对比较熟悉,所以在整个设计过程中没有遇到什么大的问题,遇到的问题主要是在一部分逻辑上,不过都很快得到了解决,T-SQL语句与宿主语言嵌套使用上基本没有遇到什么问题,都很顺利的得到了实现。
通过本次课程设计,我觉得学到的东西还是蛮多的,首先,这是我对JAVA 的相关语法使用更加熟练了,能够更好的运用JAVA来开发程序;其次,通过此次的课程设计,我觉得我的自学能力和解决问题的能力得到了提高,对编程中遇到错误是不在向以前那样不知怎么下手,现在都能找到恰当的方法找到错误的原因,然后加以改正,最后,我觉得最主要的一点是,通过此次课程设计,我对团队开发和对团队合作的重要性有了一些认识,也提高了我的团队合作精神。不足之处是在写本次系统之前由于没有把整个系统的构思的很完善,编写中做了一些小心的调整,但在这过程中让我们组有了更多自由发挥和交流的空间。
七、评语
在本次学生信息管理系统的课程设计中,穆岭同学主要负责:
1、本次课程设计的选题以及小组工作的分工;
2、对整个系统进行需求分析,建立大致的模型;
3、建立数据库的表结构,并作出相应的说明;
4、对开发界面进行整体构思(小组共同进行);
5、使用JAVA开发部分功能,主要是实现JAVA连接SQL Server数据库、
用户登录操作模块、用户维护模块、学生基本信息的添加、删除、更
新和查询操作模块以及各个模块的整合;
6、在系统基本完成的时候,对同组人员测试出的代码Bug进行修复。等模块的设计与实现,该同学学习较主动,能够积极查阅资料,基本完成所分配的
任务。所设计的系统具有一定的实用性,达到了数据库课程设计的要求。