学生成绩管理系统数据库设计书.docx

上传人:b****7 文档编号:11075607 上传时间:2023-02-24 格式:DOCX 页数:26 大小:249.42KB
下载 相关 举报
学生成绩管理系统数据库设计书.docx_第1页
第1页 / 共26页
学生成绩管理系统数据库设计书.docx_第2页
第2页 / 共26页
学生成绩管理系统数据库设计书.docx_第3页
第3页 / 共26页
学生成绩管理系统数据库设计书.docx_第4页
第4页 / 共26页
学生成绩管理系统数据库设计书.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统数据库设计书.docx

《学生成绩管理系统数据库设计书.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库设计书.docx(26页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统数据库设计书.docx

学生成绩管理系统数据库设计书

学生成绩管理系统数据库设计书

1、开发背景

信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。

计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。

基本上所有的具有一定数量数据的企事业单位或机关部门都开始使用计算机数据库来做管理。

当然几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学籍管理的工作量。

该课程设计要求设计一个成绩管理的数据库系统,数据库中要求包含学生的基本信息,学校所有专业信息,学校教师信息以及课程设置的信息。

同时还要设计它们之间的关系,如学生与课程关系和学生的成绩等,最后还要对一些数据进行查询,如查询学生成绩的各种集合等。

我们通过该课程设计,应该达到的目的是把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。

为了适应现代社会人们高度强烈的时间观念,成绩管理系统软件为教学办公室带来了极大的方便。

通过操作手册,使用者可以了解本软件的基本工作原理。

操作人员只需输入一些简单的汉字、数字,即可达到自己的目标。

现今学习成绩管理的繁索给具有强烈时间观念的行政人员带来了诸多不便,教学办公室缺少一种完善的学习成绩软件,为了对学生档案的管理方便,因此开发了本软件。

通过本系统软件,能帮助教研人员利用计算机,快速方便的对学生成绩管理进行管理、输入、输出、查找的所需操作,使散乱的人事档案能够具体化、直观化、合理化。

2、功能描述

本系统是一个学生管理系统,主要应用于大学的学生管理。

由于对系统的分析可能不够全面,只能是模拟一下学生管理系统。

每个学生都有一个学号,且没有相同的,所以可以以学号为帐号,密码先使用默认的每个学生身份证后6位数,这样,同学们就可以自行登陆学生管理系统了,并可以对密码进行更改。

老师也要进行登陆,所以,还要给分配老师帐号,密码,同样,老师可以自己更改密码。

输入帐号,密码,无误后,并可登陆了。

老师登陆后与学生登陆后有不同的权限。

学生登陆后,可以修改自己的登陆密码,可以查看个人信息,考完试后查看自己的考试成绩。

而老师则可以把学生的成绩输入进来,以便学生查询自己的考试成绩,老师也可查看学生的学籍,当然也可以修改自己的帐号密码。

另外,本系统还设立了唯一的一个管理员,他有的权限最高,可以对此系统所有用户、所有学生学籍以及学生成绩进行增删改查四种操作。

目前,对需求进行分析,能想到的基本功能就这些了,这些功能基本能够实现学生管理,对于系统的不足,我们将不断对其进行改进。

3、流程分析

图3-1添加功能结构图图3-2修改功能结构图

图3-3删除成绩功能结构图图3-4删除学籍功能结构图

 

 

图3-5删除用户功能结构图

 

数据字典

用户表

No=用户名

Password=密码

Rank=级别

学生信息表

Sno=学号

Sna=姓名

Class=班级

Birth=出生日期

Sex=性别

Add=地址

Tel=电话

学生成绩表

Sno=学号

Sna=姓名

Course=分数

Term=学期

Grade=年级

Note=备注

教师表

Tno=教师号

Tna=教师姓名

Course=所教课程名

程序结构

4、概念模型设计

根据系统数据流图和数据字典,得出系统的总体概念模型(E-R)如图2所示。

图2系统的总体概念模型

5.逻辑模型设计和优化

根据系统的总体概念设计模型、E-R图向关系模式的转化规则和数据库的范式理论,得到系统优化后的逻辑模型,如下表所示。

用户表:

user

字段名

类型

是否Null

大小

说明

no

varchar

No

50

用户名

password

varchar

Yes

50

用户密码

rank

int

Yes

4

用户等级

学生学籍表:

student

字段名

类型

是否Null

大小

说明

sno

varchar

No

50

学号

sna

varchar

Yes

50

姓名

class

varchar

Yes

50

班级

birth

Char

Yes

10

出生年月

sex

Char

Yes

10

性别

add

varchar

Yes

50

家庭住址

tel

char

Yes

50

电话号码

state

char

Yes

10

备注

学生成绩表:

score

字段名

类型

是否Null

大小

说明

sno

varchar

No

50

学号

sna

varchar

Yes

50

姓名

course

varchar

No

50

课程名

term

int

Yes

10

学期

grade

float

Yes

8

分数

notes

Int

Yes

4

备注

教师表:

teacher

字段名

类型

是否Null

大小

说明

tno

varchar

No

50

教师工号

tname

char

Yes

10

教师姓名

course

varchar

No

50

所教课程名

6.系统的实施运行界面

1、登陆界面。

系统运行后即可看到此界面,用户类型有学生、老师和管理员三种,默认为学生。

若是其他用户类型登陆就先点击下拉条选择相应类型,然后输入用户名和密码,验证正确后就可进入其相应界面了。

图6-1登陆界面

2、管理员相关功能界面

管理员的权限最高,可以对此系统所有用户、所有学生学籍以及学生成绩进行增删改查四种操作。

图6-2管理员相关功能界面

(1)

图6-2管理员相关功能界面

(2)

图6-2管理员相关功能界面(3)

3、学生登录界面

4、学生修改密码界面

学生登陆后点击账号菜单中的更改密码选项即可在此界面下进行修改密码操作了。

图6-3学生修改密码界面

5、管理员添加学生成绩界面

管理员登陆后点击成绩管理菜单中的添加成绩选项就可进行输入成绩的操作。

图6-4管理员添加学生成绩界面

6、教师添加学生成绩界面

教师登陆后点击成绩菜单中的添加成绩选项就可进行输入成绩的操作。

图6-5老师添加学生成绩界面

 

7、应用程序设计代码

publicvoidinsertuserwindow()

{

inti;

StringuserProperty[]={"请输入用户名:

","请输入密码:

","请输入等级:

"};

for(i=0;i<3;i++)

{

userInsertLabel[i]=newJLabel(userProperty[i]);

userInsertText[i]=newJPasswordField(50);

c.add(userInsertLabel[i]);userInsertLabel[i].setBounds(50,i*50+50,110,30);

c.add(userInsertText[i]);userInsertText[i].setBounds(170,i*50+50,130,30);

}

c.add(userConfirmButton);userConfirmButton.setBounds(80,220,60,40);

c.add(userCancelButton);userCancelButton.setBounds(180,220,60,40);

}

publicvoidinsertstudentwindow()

{

inti;

StringstudentProperty[]={"学号:

","姓名:

","班级:

","生日:

","性别:

","地址","电话:

","备注:

"};

for(i=0;i<8;i++)

{

studentInsertLabel[i]=newJLabel(studentProperty[i]);

studentInsertText[i]=newJTextField(50);

c.add(studentInsertLabel[i]);studentInsertLabel[i].setBounds(50,i*50+50,110,30);

c.add(studentInsertText[i]);studentInsertText[i].setBounds(170,i*50+50,130,30);

}

c.add(studentConfirmButton);studentConfirmButton.setBounds(80,(i+1)*50+50,60,40);

c.add(studentCancelButton);studentCancelButton.setBounds(180,(i+1)*50+50,60,40);

}

publicvoidinsertscorewindow()

{

inti;

StringscoreProperty[]={"学号:

","姓名:

","课程名:

","学期:

","成绩:

","备注:

"};

for(i=0;i<6;i++)

{

scoreInsertLabel[i]=newJLabel(scoreProperty[i]);

scoreInsertText[i]=newJTextField(50);

c.add(scoreInsertLabel[i]);scoreInsertLabel[i].setBounds(50,i*50+50,110,30);

c.add(scoreInsertText[i]);scoreInsertText[i].setBounds(170,i*50+50,130,30);

}

c.add(scoreConfirmButton);scoreConfirmButton.setBounds(80,400,60,40);

c.add(scoreCancelButton);scoreCancelButton.setBounds(180,400,60,40);

}

publicvoidmodifystudentwindow()

{

c.add(modifyStudentLabel);modifyStudentLabel.setBounds(50,50,200,30);

c.add(modifyStudentText);modifyStudentText.setBounds(300,50,130,30);

c.add(modifyStudentConfirmButton);modifyStudentConfirmButton.setBounds(100,150,60,40);

c.add(modifyStudentCancelButton);modifyStudentCancelButton.setBounds(250,150,60,40);

//当登陆时获取其用户名,在此处写sql语句修改其密码;

}

publicvoiduserButton()

{

try

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptionce)

{System.out.println("SQLException:

"+ce.getMessage());}

try

{

Connectioncon=DriverManager.getConnection("jdbc:

odbc:

xs");

Statementstmt=con.createStatement();

stmt.executeUpdate("insertintousersvalues('"+userInsertText[0].getText()+"','"+userInsertText[1].getText()+"','"+Integer.parseInt(userInsertText[2].getText())+"')");

stmt.close();

con.close();

}

catch(SQLExceptione)

{System.out.println("SQLException:

"+e.getMessage());}

}

publicvoidstudentButton()

{

try

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptionce)

{System.out.println("SQLException:

"+ce.getMessage());}

try

{

Connectioncon=DriverManager.getConnection("jdbc:

odbc:

xs");

Statementstmt=con.createStatement();

stmt.executeUpdate("insertintostudentvalues('"+studentInsertText[0].getText()+"','"+studentInsertText[1].getText()+"','"+studentInsertText[2].getText()+"','"+studentInsertText[3].getText()+"','"+studentInsertText[4].getText()+"','"+studentInsertText[5].getText()+"','"+studentInsertText[6].getText()+"','"+studentInsertText[7].getText()+"')");

stmt.close();

con.close();

}

catch(SQLExceptione)

{System.out.println("SQLException:

"+e.getMessage());}

}

publicvoidscoreButton()

{

try

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptionce)

{System.out.println("SQLException:

"+ce.getMessage());}

try

{

Connectioncon=DriverManager.getConnection("jdbc:

odbc:

xs");

Statementstmt=con.createStatement();

stmt.executeUpdate("insertintoscorevalues('"+scoreInsertText[0].getText()+"','"+scoreInsertText[1].getText()+"','"+scoreInsertText[2].getText()+"','"+scoreInsertText[3].getText()+"','"+Float.parseFloat(scoreInsertText[4].getText())+"','"+Integer.parseInt(scoreInsertText[5].getText())+"')");

stmt.close();

con.close();

}

catch(SQLExceptione)

{System.out.println("SQLException:

"+e.getMessage());}

publicvoidgetSno(inta)//修改功能核心代码

{

inti,b=0;

b=a;

//此处要删除原先的记录

if(b==0){insertstudentwindow();//调出学生学籍记录窗口

Stringsno=modifyStudentText.getText();

modifyStudentText.setText("");

if(modifyStudentText!

=null){

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptionce){System.out.println("SQLException:

"+ce.getMessage());}

try{

Connectioncon=DriverManager.getConnection("jdbc:

odbc:

xs");

Statementstmt=con.createStatement();

Stringsql;

sql="select*fromstudentwheresno='"+sno+"'";

ResultSetrs1;

rs1=stmt.executeQuery(sql);

while(rs1.next())

{

for(i=0;i<8;i++)

{

studentInsertText[i].setText(rs1.getString(i+1));

}

}

rs1.close();

stmt.close();

con.close();

}

catch(SQLExceptionf){System.out.println("SQLException:

"+f.getMessage());}

}}

if(b==1){insertscorewindow();

Stringsno=modifyStudentText.getText();

modifyStudentText.setText("");

if(modifyStudentText!

=null){

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptionce){System.out.println("SQLException:

"+ce.getMessage());}

try{

Connectioncon=DriverManager.getConnection("jdbc:

odbc:

xs");

Statementstmt=con.createStatement();

Stringsql;

sql="select*fromscorewheresno='"+sno+"'";

ResultSetrs2;

rs2=stmt.executeQuery(sql);

while(rs2.next())

{

for(i=0;i<6;i++)

{

scoreInsertText[i].setText(rs2.getString(i+1));

}

}

rs2.close();

stmt.close();

con.close();

}

catch(SQLExceptionf){System.out.println("SQLException:

"+f.getMessage());}

}}

if(b==2){insertuserwindow();

Stringno=modifyStudentText.getText();

modifyStudentText.setText("");

if(modifyStudentText!

=null){

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptionce){System.out.println("SQLException:

"+ce.getMessage());}

try{

Connectioncon=DriverManager.getConnection("jdbc:

odbc:

xs");

Statementstmt=con.createStatement();

Stringsql;

sql="select*fromuserswhereno='"+no+"'";

ResultSetrs3;

rs3=stmt.executeQuery(sql);

while(rs3.next())

{

for(i=0;i<3;i++)

{

userInsertText[i].setText(rs3.getString(i+1));

}

}

rs3.close();

stmt.close();

con.close();

}

catch(SQLExceptionf){System.out.println("SQLException:

"+f.getMessage());}

}}

}

publicvoidpwordButton()

{

try

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

catch(ClassNotFoundExceptionce)

{System.out.println("SQLException:

"+ce.getMessage());}

try

{

Connectioncon=DriverManager.getConnection("jdbc:

odbc:

xs");

Statementstmt=con.createStatement();

}

catc

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

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1