Java学生成绩管理系统设计说明书.docx
《Java学生成绩管理系统设计说明书.docx》由会员分享,可在线阅读,更多相关《Java学生成绩管理系统设计说明书.docx(28页珍藏版)》请在冰豆网上搜索。
Java学生成绩管理系统设计说明书
1引言
1.1问题的提出
在我国,各大中小学校的各类信息管理系统并非一个新的课题。
大多数学校信息管理系统不完善,甚至有的学校根本就没有任何信息管理系统,所有的管理工作几乎都是靠手工完成。
特别是在西部贫困地区,学校的信息管理都依然靠手工操作,这十分落后,效率极低,成本很大,而且极易出错。
随着计算机技术不断地日新月异地发展,信息化是社会进程的必然趋势,学校的信息管理只有快,精,准,才能发挥其作用。
从人工操作改为计算机的自动化系统,人工操作必将被计算机代替。
1.2国内外研究的现状
信息技术的日益发展深入到社会的各个角落,学生宿舍管理也不例外,尤其作为高等院校的宿舍管理工作,是高校各项工作的一个重要组成部分,其管理水平的高低将直接影响到人才培养的质量。
随着高等教育的发展、高校规模的扩大、学生人数增加、学生宿舍各种信息的汇总、统计和分析等管理工作面临着诸多困难,管理工作也越来越繁重和琐碎。
因此宿舍管理的信息化、网络化越来越受到人们的重视,它既可以大大提高学生宿舍管理的绩效,也可以为学生解决后顾之忧。
同时随着计算机技术的普及和发展,管理的自动化已成为必然趋势。
因此,为了提高高校的整体管理水平,计算机在高等院校宿舍管理中的应用日益普及,这使得学生宿舍管理自动化的实现成为高校管理环节中的重要一环。
1.3任务与分析
本课题主要的目的是学生成绩管理系统,主要任务为建立学生信息管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。
高校学生的成绩管理工作量大、繁杂,人工处理非常困难。
学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。
学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
2.
程序的主要功能(或需求分析,正式说明书中请删除此内容)
2.1添加功能
添加一个学生的基本信息,包括student_ID,student_Name,student_Sex,born_Date,class_NO,tele_Number,ru_Date,address,comment。
2.2删除功能
能够对一个学生的信息进行删除按student_ID进行删除。
2.3显示功能
显示所有学生的主要信息包括student_ID,student_Name,student_Sex,result!
2.4查找功能
根据你键入的student_ID,显示其详细信息!
2.5修改功能
对学生的信息和成绩进行修改。
3程序运行平台
编程工具:
Netbeans
编程语言:
JAVA
数据库:
SQLSERVER2005
具体操作如下:
具体操作如下:
新建SutGradeManage项目,然后再编写相应的java文件,再编译,链接,执行等,用户就可登录进该系统进行相应的操作。
4总体设计
主函数
添加信息
删除信息
登陆系统
修改信息
显示信息
查找信息
图4.1系统总体框架图
5数据库设计(本节说明此程序使用的关键数据结构、类对象等)
数据库设计是要在一个给定的应用环境(DBMS)中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式、子模式,建立数据库和设计应用程序,满足用户的各种信息需求。
5.1数据库概念设计
在数据库设计中,先要对系统分析所得的数据字典中的数据存储进行分析,然后得出系统的关系模式,可以采用实体——联系图(简称E——R图)的方法进行数据结构的描述。
E——R图由实体、属性、联系三部分组成。
图<5.1.1>登录信息E-R图
图<5.1.2>学生信息E-R图
图<5.1.3>课程信息E-R图
5.2表结构
表1dbo.users表
字段
类型
约束
默认值
说明
userName
VARCHAR2(20CHAR)
PK
用户名
userPwd
VARCHAR2(20CHAR)
notnull
密码
userRight
VARCHAR2(20CHAR)
notnull
权限
表2dbo.student表
字段
类型
约束
默认值
说明
student_ID
CHAR(10BYTE)
PK
学号
student_Name
VARCHAR2(20CHAR)
notnull
姓名
student_Sex
CHAR(4CHAR)
性别
born_Date
CHAR(11BYTE)
出生日期
tele_Number
CHAR(15BYTE)
电话
class_NO
NUMBER
班号
address
VARCHAR2(20BYTE)
地址
comment
VARCHAR2(20BYTE)
注释
5.3视图
表3dbo.vi视图
字段
类型
是否可空
insertable
updatable
deletable
说明
Result
NUMBER
Yes
YES
YES
YES
成绩
student_ID
CHAR(10)
No
YES
YES
YES
学号
student_Name
VARCHAR2(80)
No
YES
YES
YES
姓名
student_Sex
CHAR(16)
Yes
YES
YES
YES
性别
born_Date
CHAR(11)
Yes
YES
YES
YES
出生日期
tele_Number
CHAR(15)
Yes
YES
YES
YES
电话
address
VARCHAR2(30)
No
NO
NO
NO
地址
comment
VARCHAR2(20)
Yes
YES
YES
YES
注释
6模块分析
6.1添加模块
学生信息添加部分代码:
publicStudentGradFrame(Stringtitle)
{
studentId=newJLabel("学号:
");
studentId.setHorizontalAlignment(JLabel.RIGHT);
courseId=newJLabel("课程编号:
");
courseId.setHorizontalAlignment(JLabel.RIGHT);
school=newJLabel("学年:
");
school.setHorizontalAlignment(JLabel.RIGHT);
termId=newJLabel("学期:
");
termId.setHorizontalAlignment(JLabel.RIGHT);
grade=newJLabel("分数:
");
grade.setHorizontalAlignment(JLabel.RIGHT);
studentIdField=newJTextField();
studentIdField.grabFocus();
studentIdField.addKeyListener(
newKeyListener()
{
publicvoidkeyPressed(KeyEvente)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
courseIdField.grabFocus();
}
}
publicvoidkeyTyped(KeyEvente)
{
}
publicvoidkeyReleased(KeyEvente)
{
}
});
6.2显示模块
显示模块将输出所有学生的主要信息;
主要代码为:
publicvoidviewStudent(StringstudId,JTextFieldid,JTextFieldname,JTextFieldsex,JTextFieldcla,JTextFielddate,JTextFieldphone,JTextFieldemail,JTextFieldnote)
{
Connectionconn=SQLConnection.getConnection();
PreparedStatementst=null;
ResultSetrs=null;
if(conn!
=null)
{
try
{
st=conn.prepareStatement("select*fromstudentswherestud_id='"+studId+"'");
rs=st.executeQuery();
while(rs.next())
{
id.setText(rs.getString
(1));
name.setText(rs.getString
(2));
sex.setText(rs.getString(3));
cla.setText(rs.getString(4));
date.setText(rs.getString(5));
phone.setText(rs.getString(6));
email.setText(rs.getString(7));
note.setText(rs.getString(8));
}
}
catch(SQLExceptione)
{
e.printStackTrace();
}
finally
{
try
{
if(rs!
=null)
{
rs.close();
}
if(st!
=null)
{
st.close();
}
if(conn!
=null)
{
conn.close();
}
}
catch(Exceptionignore)
{
}
}
}
}
}
6.3修改模块
首先由用户输入要修改的学生的成绩
主要代码:
publicUpdateGrade(Stringtitle)
{
idLabel=newJLabel("请输入学号:
");
idLabel.setFont(newFont("隶书",Font.BOLD,20));
idField=newJTextField();
idField.grabFocus();
studentId=newJLabel("学号:
");
studentId.setHorizontalAlignment(JLabel.RIGHT);
courseId=newJLabel("课程编号:
");
courseId.setHorizontalAlignment(JLabel.RIGHT);
school=newJLabel("学年:
");
school.setHorizontalAlignment(JLabel.RIGHT);
termId=newJLabel("学期:
");
termId.setHorizontalAlignment(JLabel.RIGHT);
grade=newJLabel("分数:
");
grade.setHorizontalAlignment(JLabel.RIGHT);
studentIdField=newJTextField();
courseIdField=newJTextField();
schoolField=newJTextField();
termIdField=newJTextField();
gradeField=newJTextField();
studentIdField.setEditable(false);
courseIdField.setEditable(false);
schoolField.setEditable(false);
termIdField.setEditable(false);
gradeField.setEditable(false);
bQuery=newJButton("查询");
bQuery.addActionListener(
newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
if(!
gradeDAO.queryGrade(idField.getText()))
{
gradeDAO.viewGrade(idField.getText(),studentIdField,courseIdField,schoolField,termIdField,gradeField);
courseIdField.setEditable(true);
schoolField.setEditable(true);
termIdField.setEditable(true);
gradeField.setEditable(true);
bUpdate.setEnabled(true);
bQuery.setEnabled(false);
}
else
{
//System.out.println("该学号不存在");
JOptionPane.showMessageDialog(newJFrame(),"该学号不存在,重新填写");
idField.setText("");
idField.grabFocus();
}
}
});
6.4查找模块
首先由用户输入要查找的学生学号等,然后查找数据库中的该学生信息
主要代码:
publicQueryExam(Stringtitle)
{
idLabel=newJLabel("请选择查询方式:
");
idLabel.setFont(newFont("隶书",Font.BOLD,20));
idField=newJTextField();
idField.setEditable(false);
jRByNum=newJRadioButton("课程编号");
jRByNum.addActionListener(
newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
Flag=0;
idLabel.setText("请输入课程编号:
");
idField.setEditable(true);
idField.grabFocus();
}
});
jRByName=newJRadioButton("课程名称");
jRByName.addActionListener(
newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
Flag=1;
idLabel.setText("请输入课程名称:
");
idField.setEditable(true);
idField.grabFocus();
}
});
jRByTerm=newJRadioButton("学期");
jRByTerm.addActionListener(
newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
Flag=2;
idLabel.setText("请输入学期:
");
idField.setEditable(true);
idField.grabFocus();
}
});
6.5删除模块
用删除学生信息
主要代码:
publicDeleteStudentInfo(Stringtitle)
{
idLabel=newJLabel("请填写学生编号:
");
idLabel.setFont(newFont("隶书",Font.BOLD,20));
idField=newJTextField();
idField.grabFocus();
studId=newJLabel("学号:
");
studId.setHorizontalAlignment(JLabel.RIGHT);
studName=newJLabel("姓名:
");
studName.setHorizontalAlignment(JLabel.RIGHT);
studSex=newJLabel("性别:
");
studSex.setHorizontalAlignment(JLabel.RIGHT);
studClass=newJLabel("班级编号:
");
studClass.setHorizontalAlignment(JLabel.RIGHT);
studDate=newJLabel("入学年份:
");
studDate.setHorizontalAlignment(JLabel.RIGHT);
studPhone=newJLabel("电话号码:
");
studPhone.setHorizontalAlignment(JLabel.RIGHT);
studEmail=newJLabel("电子邮箱:
");
studEmail.setHorizontalAlignment(JLabel.RIGHT);
studNote=newJLabel("备注:
");
studNote.setHorizontalAlignment(JLabel.RIGHT);
studIdField=newJTextField();
studNameField=newJTextField();
studSexField=newJTextField();
studClassField=newJTextField();
studDateField=newJTextField();
studPhoneField=newJTextField();
studEmailField=newJTextField();
studNoteField=newJTextField();
studIdField.setEditable(false);
studNameField.setEditable(false);
studSexField.setEditable(false);
studClassField.setEditable(false);
studDateField.setEditable(false);
studPhoneField.setEditable(false);
studEmailField.setEditable(false);
studNoteField.setEditable(false);
bQuery=newJButton("查询");
bQuery.addActionListener(
newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
if(!
studentDAO.queryStudent(idField.getText()))
{
studentDAO.viewStudent(idField.getText(),studIdField,studNameField,studSexField,studClassField,studDateField,studPhoneField,studEmailField,studNoteField);
bDelete.setEnabled(true);
bQuery.setEnabled(false);
}
else
{
//System.out.println("该学生不存在");
JOptionPane.showMessageDialog(newJFrame(),"该学生不存在,重新填写");
idField.setText("");
idField.grabFocus();
}
}
});
bDelete=newJButton("删除");
bDelete.setEnabled(false);
bDelete.addActionListener(
newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
intmsg=JOptionPane.showConfirmDialog(newJFrame(),"确定要删除该学生信息吗?
(Y/N)","提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(msg==JOptionPane.YES_OPTION)
{
userDAO.deleteUser(idField.getText());
studentD