学生成绩管理系统数据库设计书.docx
《学生成绩管理系统数据库设计书.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库设计书.docx(25页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统数据库设计书
学生成绩管理系统数据库设计书
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();
}
catch(SQLExc