数据库课程设计之学生信息管理系统.docx

上传人:b****2 文档编号:3424813 上传时间:2023-05-05 格式:DOCX 页数:34 大小:2.15MB
下载 相关 举报
数据库课程设计之学生信息管理系统.docx_第1页
第1页 / 共34页
数据库课程设计之学生信息管理系统.docx_第2页
第2页 / 共34页
数据库课程设计之学生信息管理系统.docx_第3页
第3页 / 共34页
数据库课程设计之学生信息管理系统.docx_第4页
第4页 / 共34页
数据库课程设计之学生信息管理系统.docx_第5页
第5页 / 共34页
数据库课程设计之学生信息管理系统.docx_第6页
第6页 / 共34页
数据库课程设计之学生信息管理系统.docx_第7页
第7页 / 共34页
数据库课程设计之学生信息管理系统.docx_第8页
第8页 / 共34页
数据库课程设计之学生信息管理系统.docx_第9页
第9页 / 共34页
数据库课程设计之学生信息管理系统.docx_第10页
第10页 / 共34页
数据库课程设计之学生信息管理系统.docx_第11页
第11页 / 共34页
数据库课程设计之学生信息管理系统.docx_第12页
第12页 / 共34页
数据库课程设计之学生信息管理系统.docx_第13页
第13页 / 共34页
数据库课程设计之学生信息管理系统.docx_第14页
第14页 / 共34页
数据库课程设计之学生信息管理系统.docx_第15页
第15页 / 共34页
数据库课程设计之学生信息管理系统.docx_第16页
第16页 / 共34页
数据库课程设计之学生信息管理系统.docx_第17页
第17页 / 共34页
数据库课程设计之学生信息管理系统.docx_第18页
第18页 / 共34页
数据库课程设计之学生信息管理系统.docx_第19页
第19页 / 共34页
数据库课程设计之学生信息管理系统.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库课程设计之学生信息管理系统.docx

《数据库课程设计之学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计之学生信息管理系统.docx(34页珍藏版)》请在冰点文库上搜索。

数据库课程设计之学生信息管理系统.docx

数据库课程设计之学生信息管理系统

 

数据库原理课程设计报告

 

题目:

学生信息管理系统

学生姓名:

穆岭(徐清锋、冉丽华)

学号:

0908060070

班级:

计科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表

属性名

存储代码

类型

长度

是否可为空

主键否

备注

用户名

uname

VARCHAR

20

用户登录名

密码

upass

VARCHAR

30

用户登录密码

用户类型标识

bs

INT

用于标识是管理员还是学生

Student表

属性名

存储代码

类型

长度

是否可为空

主键否

备注

学号

sno

VARCHAR

20

学生学号

姓名

sname

VARCHAR

20

学生姓名

性别

sex

VARCHAR

2

性别

出生日期

birth

DATE

出生日期

电话

tel

VARCHAR

20

联系电话

QQ号

qq

VARCHAR

20

QQ号码

专业

sdept

VARCHAR

20

学生所在专业

班级

class

VARCHAR

20

所在班级

家庭地址

address

VARCHAR

50

学生家庭地址

Course表

属性名

存储代码

类型

长度

是否可为空

主键否

备注

课程号

cno

VARCHAR

20

课程编号

课程名

cname

VARCHAR

20

课程名

先行课

cpno

VARCHAR

20

先行课程

学分

credit

FLOAT

学分

教师姓名

tname

VARCHAR

20

教师姓名

SC表

属性名

存储代码

类型

长度

是否可为空

主键否

备注

学号

sno

VARCHAR

20

学号

课程号

cno

VARCHAR

20

课程编号

成绩

grade

FLOAT

课程成绩

绩点

point

FLOAT

课程绩点

(2)子模式设计:

即针对自己的设计模块的应用需定义什么样的视图表结构;并利用数据字典加以描述。

由于在查询学生成绩信息的时候要查询学生学号、姓名、课程号、课程名、学分、成绩、绩点、联系电话,这就需要涉及到三个表的连接,为了查询的方便,所以在进行设计的时候创建了一个Stu_Cou_SC视图表,表结构为Stu_Cou_SC视图(学号,姓名,课程号,课程名,学分,成绩,绩点,联系电话)

Stu_Cou_SC

属性名

存储代码

类型

长度

是否可为空

主键否

备注

学号

sno

VARCHAR

20

学生学号

姓名

sname

VARCHAR

20

学生姓名

课程号

cno

VARCHAR

20

课程编号

课程名

cname

VARCHAR

20

课程名

学分

credit

FLOAT

学分

成绩

grade

FLOAT

成绩

绩点

point

FLOAT

绩点

联系电话

tel

VARCHAR

20

联系电话

(3)画出系统功能模块图,并对各功能模块进行简单介绍。

在登录模块中,设置了两种登录类型,一种是管理员登录,一种是学生登录。

这两种登录有着不同的使用权限。

管理员登录系统可以进行管理设置,信息查询和用户维护等操作,学生登录系统可以进行信息维护和信息查询等。

在管理设置模块中,用户可以进行学生信息的设置、课程信息设置、选课成绩信息的设置,在各个信息的设置中都可以进行添加、更新和删除操作。

在信息查询模块中,用户可以进行学生基本信息查询,课程信息查询以及学生选课成绩信息的查询。

在各个查询中又设置有精确查询和模糊查询,使其查询更智能化。

在用户维护模块中,可以进行添加用户,修改用户登录密码,切换用户登录功能。

在学生登录后的信息维护模块中,学生统一可以修改登录密码,修改个人基本信息,和切换用户登录。

四、数据库的物理设计

在本系统的数据库设计阶段,我们为其建立了下面的三个索引字段,分别是基于Student表建立的Stusno以sno为升序索引,基于Course表建立的Coucno以cno为升序索引,和基于SC表建立的SCno以sno为升序,以cno为降序的索引。

对应的T-SQL语句如下:

/*创建索引字段*/

DROPINDEXStudent.Stusno;

CREATEINDEXStusnoONStudent(snoASC);

DROPINDEXCourse.Coucno;

CREATEINDEXCoucnoONCourse(cnoASC);

DROPINDEXSC.SCno;

CREATEINDEXSCnoONSC(snoASC,cnoDESC);

五、数据库设计实现及运行

(1)数据库的创建

T-SQL语句:

CREATEDATABASESIMS;

(2)数据表的创建

T-SQL语句:

/*用户表*/

DROPTABLEUser;

CREATETABLEUser(

unameVARCHAR(20)NOTNULL,

upassVARCHAR(30)NOTNULL,

bsINTNOTNULL

);

/*学生表*/

DROPTABLEStudent;

CREATETABLEStudent(

snoVARCHAR(20)PRIMARYKEY,

snameVARCHAR(20)NOTNULL,

sexVARCHAR

(2)NOTNULL,

birthDATE,

telVARCHAR(20),

qqVARCHAR(20),

sdeptVARCHAR(20)NOTNULL,

classVARCHAR(20)NOTNULL,

addressVARCHAR(50)

);

/*课程表*/

DROPTABLECourse;

CREATETABLECourse(

cnoVARCHAR(20)PRIMARYKEY,

cnameVARCHAR(20)NOTNULL,

cpnoVARCHAR(20),

creditFLOATNOTNULL,

tnameVARCHAR(20)NOTNULL

);

/*成绩表*/

DROPTABLESC;

CREATETABLESC(

snoVARCHAR(20),

cnoVARCHAR(20),

gradeFLOAT,

pointFLOAT,

PRIMARYKEY(sno,cno),

ForeignKEY(sno)REFERENCESStudent(sno),

ForeignKEY(cno)REFERENCESCourse(cno)

);

(3)视图的创建

T-SQL语句:

/*创建Stu_Cou_SC视图*/

DROPVIEWStu_Cou_SC;

CREATEVIEWStu_Cou_SC(sno,sname,cno,cname,credit,grade,point,tel)

AS

SELECTs.sno,sname,o,cname,credit,grade,point,tel

FROMStudents,Coursec,SCsc

WHEREs.sno=sc.snoANDo=o;

(4)各模块中的功能实现

a)功能界面(截图);

管理员登录模块功能截图

用户登录

添加学生信息

更新学生信息

删除学生信息

信息查询

查询学信息

精确查询

模糊查询

用户维护

添加用户

修改密码

帮助

切换用户登录

弹出登录窗体选择学生登录

学生登录功能截图

信息维护

信息查询

b)功能界面简单描述;

首先是运行程序,进入用户登录界面,登录是要进行身份验证,在这登录过程系统会通过数据库中的User表存储的数据进行验证,并判断用标识检查登录的类型。

当登录的类型是管理员登录时,登录成功后会进入管理员操作界面,在管理员登录界面中,管理员可以进行管理设置,如:

设置学生基本信息,设置课程信息,设置成绩信息,每个设置都有相应的添加、更新、删除操作;接着是信息查询,在这儿可以查询学生的基本信息,查询课程信息,查询成绩信息,在每一种查询中都分别设置有精确查询和模糊查询等操作,模糊查询使得查询在查询的时候更加方便;还有就是用户维护操作,这里面管理员可以添加用户,修改登录密码,切换用户登录,最后是帮助中的关于和系统的退出。

当登录类型为学生登录时,登录成功后会进入学生操作界面,在此界面中学生可以在信息维护下修改登录密码,更新个人基本信息,切换用户登录;然后也可以查询学生基本信息,查询课程信息,查询成绩信息,同样查询中也设置有精确查询和模糊查询;最后也有帮助中的关于和系统的退出。

在界面的操作过程中,对一些在操作中可能是操作失误导致的错误进行了相应的提示,比如成绩的输入必须是字符型数字,出生日期是格式应为yyyy-MM-dd格式,如果输入格式不对,给出相应的提示,操作人员在给出对应的正确操作,这使得该系统变得更加智能化。

c)T-SQL语句与宿主语言嵌套使用代码段

/*JAVA数据库的连接程序*/

privatestaticfinalStringDBDRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver";

privatestaticfinalStringDBURL="jdbc:

sqlserver:

//localhost:

1433;"

+"DatabaseName=SIMS";

privatestaticfinalStringDBUSER="sa";

privatestaticfinalStringDBPASS="";//密码为空

privateConnectionconn=null;

publicDatabaseConnection(){

try{

Class.forName(DBDRIVER);

}catch(ClassNotFoundExceptione){

JOptionPane.showMessageDialog(null,e.getMessage());

}

try{

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);

}catch(SQLExceptione){

JOptionPane.showMessageDialog(null,e.getMessage());

}

}

publicConnectiongetConnection(){

returnthis.conn;

}

publicvoidclose(){

if(this.conn!

=null){

try{

this.conn.close();

}catch(SQLExceptione){

JOptionPane.showMessageDialog(null,e.getMessage());

}

}

}

/*添加用户登录查询块*/

dbconn=newDatabaseConnection();//初始化连接类

conn=dbconn.getConnection();//获得连接

Stringsql="SELECTuname,upass,bsFROM[User]WHEREuname=?

ANDbs=?

";

PreparedStatementpstmt=null;

try{

pstmt=conn.prepareStatement(sql);

pstmt.setString(1,getName());

pstmt.setInt(2,user.getBs());

ResultSetrs=pstmt.executeQuery();

user.setUname(null);

user.setUpass(null);

user.setBs

(2);

while(rs.next()){

user.setUname(rs.getString

(1));

user.setUpass(rs.getString

(2));

user.setBs(rs.getInt(3));

}

}catch(SQLExceptione){

JOptionPane.showMessageDialog(this,e.getMessage());

}finally{

if(conn!

=null){

dbconn.close();

}

}

/*添加登录用户信息*/

PreparedStatementpstmt=null;

ResultSetrs=null;

Stringsql1="SELECT*FROM[User]WHEREuname=?

ANDbs=?

";;

try{

pstmt=conn.prepareStatement(sql1);

pstmt.setString(1,username);

pstmt.setInt(2,user.getBs());

rs=pstmt.executeQuery();

if(!

rs.next()){

Stringsql3="INSERTINTO[User](uname,upass,bs)VALUES(?

?

?

)";

inti=0;

pstmt=conn.prepareStatement(sql3);

pstmt.setString(1,username);

pstmt.setString(2,pass1);

pstmt.setInt(3,user.getBs());

i=pstmt.executeUpdate();

if(i>0){

JOptionPane.showMessageDialog(this,"用户添加成功");

jTextField1.setText(null);

jPasswordField1.setText(null);

jPasswordField2.setText(null);

jRadioButton1.setSelected(false);

jRadioButton2.setSelected(false);

this.setVisible(false);

}else{

JOptionPane.showMessageDialog(this,"用户添加失败");

}

}else{//在数据表中找到了改用户

JOptionPane.showMessageDialog(this,"对不起,该用户名已经存在,请使用其他用户名!

");

this.jPasswordField1.setText(null);

this.jPasswordField2.setText(null);

}

}catch(SQLExceptione1){

JOptionPane.showMessageDialog(this,"用户添加失败,数据库操作异常:

"+e1.getMessage());

}finally{

if(conn!

=null){

dbconn.close();

}

}

/*修改用户登录密码*/

Stringsql1="SELECT*FROM[User]WHEREuname=?

ANDupass=?

";

try{

pstmt=conn.prepareStatement(sql1);

pstmt.setString(1,uname);

pstmt.setString(2,passtr);

rs=pstmt.executeQuery();

if(!

rs.next()){

JOptionPane.showMessageDialog(this,"密码修改失败,输入的旧密码不正!

");

}else{

Stringsql2="Update[User]SETupass=?

WHEREuname=?

ANDupass=?

inti=0;

pstmt=conn.prepareStatement(sql2);

pstmt.setString(1,pass1);

pstmt.setString(2,uname);

pstmt.setString(3,passtr);

i=pstmt.executeUpdate();

if(i>0){

JOptionPane.showMessageDialog(this,"密码修改成功");

jPasswordField1.setText(null);

jPasswordField2.setText(null);

jPasswordField3.setText(null);

this.setVisible(false);

}else{

JOptionPane.showMessageDialog(this,"密码修改失败");

}

}

}catch(SQLExceptione1){

JOptionPane.showMessageDialog(this,"密码修改失败,数据库操作异常:

"+e1.getMessage());

}finally{

if(conn!

=null){

dbconn.close();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2