学生学籍管理信息系统.docx

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

学生学籍管理信息系统.docx

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

学生学籍管理信息系统.docx

学生学籍管理信息系统

 

大理学院数学与计算机学院

《数据库系统设计》课程设计报告

 

班级:

学号:

XXXXXXX

姓名:

XXXXXXX

系统名称:

学生学籍管理信息系统

总分:

 

1、需求分析

学生学籍管理工作包括学生档案、学籍、成绩、升学等内容的管理;面对大量的学生数据、报表,手工处理方式已经很难跟上现代化的步伐。

随着计算机技术及网络通讯技术的飞速发展,许多学校已经有了较好的计算机应用甚至网络硬件建设基础。

因此为提高学校管理工作的现代化、科学化水平,保证信息处理的即时化、准确化,开发一套对学生学籍进行管理的软件是极其重要的。

1.1系统功能

1.1.1本系统应完成的主要功能

(1)学生档案的管理,即录入、修改、查询、输出学生档案信息,这些信息包括学生基本情况、学生简历情况、学生奖励情况、学生处分情况、学生家庭信息、学生体检情况。

(2)学生成绩管理,录入修改、查询、输出学生入校成绩,各学期、各门课程的成绩信息,并支持按年级、班级等条件的统计、查询、报表输出。

1.1.2本系统功能需求

(1)按系汇总各专业各年级的学生总数及其中的男、女生数,并统计全校总人数。

要求:

当任意输入系部名称、专业名称和年级均可返回相应信息。

(2)按系汇总各年龄段的学生人数及其中的男、女生数。

要求:

当任意输入系部名称、年龄时,均可返回相应信息。

(3)按系统计各地区的学生人数。

要求:

当任意输入系部名称、地区名称时,均可返回相应学生人数。

(4)按系统计学生中的党员、团员人数。

要求:

当任意输入系部名称时,均可返回该系的学生党员和团员人数。

(5)按系统计各民族的学生人数。

要求:

当任意输入系部名称、民族时,均可返回相应信息。

(6)按学年根据学生变更数据自动修改班级总人数(提示:

用触发器实现)、系部总人数、学校总人数。

(7)统计各门课程的成绩分布情况:

其中:

1)(90-100、80-90、70-80、60-70、0-59)的人数及各自占实际考试人数的百分比数。

2)统计缺考人数。

3)统计及格、不及格人数。

(8)统计每个学生的综合测评总成绩:

1)总成绩=平均分*0.7+德体分*0.3

2)综合测评的排名。

3)根据总成绩评定奖学金等级(特等、一等、二等、三等)。

4)按学年根据学生学习情况确定升、留级人选(补考三门(以上)不及格或毕业补考一门(以上)不及格)。

(9)学生成绩查询(分别按学号、姓名、班级、课程、开设学期),显示信息自定。

(10)更改信息时,相关表的相应记录也应随之更改。

(如:

留级、补考等)

(11)触发器的应用:

如:

假设已存在“学生”、“成绩”、“课程”三个表,其中“学生”表包括学号,姓名等字段,“成绩”表包括学号,课程代码,成绩等字段,“课程”表包括课程代码,课程名称等字段。

当向“学生”表中添加一条新的学生信息后,在“成绩”表中添加该学生所学课程信息,并确保课程代码字段的取值是“课程”表中的已有数据。

(12)子查询的应用:

查找“计应041”班高于“计应042”班总评成绩最高分的学生记录。

(13)创建如下视图并显示对应的数据:

1)V_学生成绩:

包括学生姓名、课程名称、成绩

2)V_班级人数:

包括班级名称、系别、专业名称、班级人数

1.2分析过程

1.2.1本系统的数据流图

(1)学生学籍管理信息系统数据流图

(2)学生档案管理数据流图

(3)学生学籍管理数据流图

(4)学生成绩管理数据流图

(5)系统管理数据流图

1.2.2数据字典

(1)数据字典的用途

进行详细的数据收集和数据分析所获得的主要结果

(2)数据字典的内容

▪数据结构

▪数据项

▪数据流

▪数据存储

▪处理过程

(3)表关系说明

1)学生表

字段名

数据类型

含义说明

约束情况

sno

Char(10)

学号

主关键字

sname

Char(10)

姓名

可为空

ssex

Char

(2)

性别

可为空

sage

int

年龄

可为空

smz

Char(10)

民族

可为空

sjg

Char(10)

籍贯

可为空

szzmm

Char(10)

政治面貌

可为空

sdepart

Char(10)

系部

可为空

smajor

Char(10)

专业

可为空

sgrade

Char(10)

年级

可为空

sclass

int

班级

可为空

srxcj

smallint

入校成绩

可为空

ssfby

Char(10)

是否毕业

可为空

sbyrq

datetime

毕业日期

可为空

2)课程表

字段名

数据类型

含义说明

约束情况

cno

int

课程号

主关键字

cname

char(10)

课程名

可为空

cyear

Char(10)

开设学年

可为空

cterm

Char(10)

开设学期

可为空

3)成绩表

字段名

数据类型

含义说明

约束情况

sno

int

学号

主关键字

cno

int

课程号

主关键字

score

smallint

成绩

可为空

4)奖惩表

字段名

数据类型

含义说明

约束情况

sno

int

学号

主关键字

rtype

Char(10)

类型

可为空

rdate

data

日期

可为空

5)班级表

字段名

数据类型

含义说明

约束情况

bh

int

编号

主关键字

yx

Char(20)

院系

可为空

mc

Char(10)

名称

可为空

rs

int

人数

可为空

6)教师表

字段名

数据类型

含义说明

约束情况

tno

int

教工号

主关键字

tname

Char(10)

姓名

可为空

tsex

Char(10)

性别

可为空

tprofess

Char(10)

职称

可为空

ttel

int

电话

可为空

2、数据库设计

2.1数据库概念设计

数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。

目标:

为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。

2.1.1表的建立

(1)学生表

(2)课程表

(3)成绩表

(4)奖惩表

(5)班级表

(6)教师表

2.1.2表的信息

(1)学生表

(2)课程表

(3)成绩表

(4)奖惩表

(5)班级表

(6)教师表

2.1.3E-R图

(1)学生实体包含学号,姓名,性别,年龄,民族,籍贯,专业,年级,班级,政治面貌,入校成绩以及是否毕业等属性。

(2)课程实体包含课程号,课程名,开设学年以及开设学期四个属性。

(3)成绩实体有学号,课程号和成绩3个属性。

(4)奖惩实体包括学号,类型以及日期三个属性。

(4)班级实体包括编号,院系以及名称三个属性。

(5)教师实体包括教工号,姓名,性别,职称,电话等属性。

(6)学生实体与课程实体是一个多对多(m:

n)的选修关系,学生,课程和和成绩3个实体也是一个多对多(m:

n:

p)的考试关系。

2.2数据库的逻辑设计

2.2.1关系模型

将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:

一个实体型转换为一个关系模式。

实体的属性就是关系的属性,实体的码就是关系的码。

对于实体型间的联系则有以下不同的情况:

(1)一个1:

1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的侯选码。

如果与某一端实体对应的关系模式合并,则需要在关系模式的属性中加入另一个关系模式的码和联系本身的属性。

(2)一个1:

n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的个各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

(3)一个m:

n联系转换为一个关系模式。

与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。

(4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。

与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。

(5)具有相同码的关系模式可合并。

将概念结构设计阶段设计好的基本E-R图转换为关系模型,如下所示:

1)学生(学号,姓名,性别,年龄,民族,籍贯,系部,专业,年级,班级,政治面貌,入校成绩,是否毕业,毕业日期)。

2)课程(课程号,课程名,开设学年,开设学期)。

3)成绩(学号,课程号,成绩)。

4)奖惩(学号,类型,日期)。

5)班级(编号,院系,名称)。

6)教师(教工号,姓名,性别,职称,电话)。

2.2.2创建视图

(1)V_学生成绩:

包括学生学号,姓名、课程名称、成绩

Createviewv_scoure

As

Selectsno,sname,cname,score

Fromstudent,coure,score

Wherestudent.sno=score.sno

(2)V_班级人数:

包括班级名称、系别、专业名称、班级人数

Createviewv_class

As

Selectcclass,sdepart,smajor,rs

Fromstudent,coure,score

2.2.3创建索引

(1)创建学生表的索引

学生表:

先点击右键,然后选择修改。

在弹出的界面中选择索引页面,索引名为index,类型为主索引,表达式为学号。

(2)创建课程表的索引

课程表:

先点击右键,然后选择修改。

在弹出的界面中选择索引页面,索引名为index1,类型为主索引,表达式为课程号。

(3)创建成绩表的索引

成绩表:

先点击右键,然后选择修改。

在弹出的界面中选择索引页面,索引名为index2,通索引,表达式为课程号;索引名为xh,类型为主索引,表达式为学号。

(4)创建奖惩表的索引

奖惩表:

先点击右键,然后选择修改。

在弹出的界面中选择索引页面,索引名为index3,类型为主索引,表达式为学号。

(5)创建班级表的索引

(6)创建教师表的索引

2.2.4数据表之间的逻辑关系

3、系统实现

3.1数据库访问

(1)数据访问类及实现代码

1)触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊过程。

一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。

由于本系统的触发器比较多,在这里我只写出了其中的一部分触发器,具体如下所示。

数据更新:

CREATETRIGGERstudentupdateONdbo.studentFORUPDATE

AS

UPDATESTUDENT

SETSNO=(SELECTSNOFROMINSERTED)

WHERESNO=(SELECTSNOFROMDELETED);

CREATETRIGGERcourseupdateONdbo.course/

FORUPDATE

AS

UPDATECOURSE

SETSNO=(SELECTCNOFROMINSERTED)

WHERESNO=(SELECTCNOFROMDELETED);

CREATETRIGGERscoreupdateONdbo.student

FORUPDATE

AS

UPDATESCORE

SETSNO=(SELECTSNOFROMINSERTED)

WHERESNO=(SELECTSNOFROMDELETED);

CREATETRIGGERstudent1ONdbo.major

FORUPDATE

AS

UPDATESTUDENT

SETMNO=(SELECTMNOFROMINSERTED)

WHEREMNO=(SELECTMNOFROMDELETED);

CREATETRIGGERstudent2updateONdbo.depart

FORUPDATE

AS

UPDATESTUDENT

SETDMPNO=(SELECTDMPNOFROMINSERTED)

WHEREDMPNO=(SELECTDMPNOFROMDELETED);

数据删除:

CREATETRIGGERteach1updateONdbo.teacher

FORDELETE

AS

UPDATETEACH

SETTNO=NULL

WHERETNO=(SELECTTNOFROMDELETED);

CREATETRIGGERstu_majorupdateONdbo.major

FORDELETE

AS

UPDATESTUDENT

SETMNO=NULL

WHEREMNO=(SELECTMNOFROMDELETED);

CREATETRIGGERteacherupdateONdbo.depart

FORDELETE

AS

UPDATETEACHER

SETDMPNO=NULL

WHEREDMPNO=(SELECTDMPNOFROMDELETED)

2)java访问数据库及代码

packageDBCONN;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

publicclassConmysql{

//这是mysql的连接字符串

privatestaticStringurl="jdbc:

mysql:

//127.0.0.1:

3306/finaltest?

useUnicode=true&characterEncoding=UTF-8";

staticConnectionconn=null;//定义一个空连接,后面用

staticStatementstmt=null;//定义一个空查询语句,后面用

staticResultSetrs=null;//定义一个空的返回结果集,后面用

staticObjectresult;

publicstaticObjectexqutesql(Stringsql){

try{

//注册mssql驱动

Class.forName("com.mysql.jdbc.Driver");

//连接数据库

conn=DriverManager.getConnection(url,"root","root");

//准备查询语句

stmt=conn.createStatement();

Stringbeginsql="";

beginsql=sql.trim().substring(0,1);

//booleanexecute=stmt.execute(sql);

//判断sql的类型,是insert/select/delete/update

//注意:

只有select才能是executeQuery,其他三种都是executeUpdate

if(beginsql.equalsIgnoreCase("i")){

result=stmt.executeUpdate(sql);//

//System.out.println(result);//

}

if(beginsql.equalsIgnoreCase("s")){

result=stmt.executeQuery(sql);//保存查询结果到result,下同

}

if(beginsql.equalsIgnoreCase("d")){

result=stmt.executeUpdate(sql);

}

if(beginsql.equalsIgnoreCase("u")){

result=stmt.executeUpdate(sql);

System.out.println(result);

}

//System.out.println(tag);

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

//注意:

最后的时候要关闭所有连接,首先是stmt,然后是conn

//try{

//stmt.close();

//conn.close();

//}catch(SQLExceptione){

////TODOAuto-generatedcatchblock

//e.printStackTrace();

//}

}

returnresult;

}

}

(2)SQL语句

USE[xsxjgl]

GO

/******对象:

Table[dbo].[student]脚本日期:

05/07/201411:

07:

39******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

SETANSI_PADDINGON

GO

CREATETABLE[dbo].[student](

[sno][char](10)NOTNULL,

[sname][char](10)NULL,

[ssex][char]

(2)NULL,

[sage][int]NULL,

[smz][char](10)NULL,

[sjg][char](10)NULL,

[sdepart][char](30)NULL,

[smajor][char](30)NULL,

[sgrade][int]NULL,

[sclass][smallint]NULL,

[szzmm][char](10)NULL,

[srxcj][smallint]NULL,

[ssfby][char](10)NULL,

[sbyrq][datetime]NULL,

CONSTRAINT[PK_student]PRIMARYKEYCLUSTERED

[sno]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

SETANSI_PADDINGOFF

GO

/******对象:

Table[dbo].[rewardpunish]脚本日期:

05/07/201411:

07:

39******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

SETANSI_PADDINGON

GO

CREATETABLE[dbo].[rewardpunish](

[sno][int]NOTNULL,

[rtype][char](10)NULL,

[rdate][datetime]NULL

)ON[PRIMARY]

GO

SETANSI_PADDINGOFF

GO

/******对象:

Table[dbo].[class]脚本日期:

05/07/201411:

07:

39******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

SETANSI_PADDINGON

GO

CREATETABLE[dbo].[class](

[bh][int]NOTNULL,

[yx][char](20)NULL,

[mc][char](20)NULL,

[rs][int]NULL,

CONSTRAINT[PK_class]PRIMARYKEYCLUSTERED

[bh]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

SETANSI_PADDINGOFF

GO

/******对象:

Table[dbo].[teacher]脚本日期:

05/07/201411:

07:

39******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

SETANSI_PADDINGON

GO

CREATETABLE[dbo].[teacher](

[tno][int]NOTNULL,

[tname][char](10)NULL,

[tsex][char]

(2)NULL,

[tprofess][char](10)NULL,

[ttel][char](10)NULL,

CONSTRAINT[PK_teacher]PRIMARYKEYCLUSTERED

[tno]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

GO

SETANSI_PADDINGOFF

GO

/******对象:

Table[dbo].[score]

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

当前位置:首页 > 解决方案 > 学习计划

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

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