学生管理系统课设文档.docx
《学生管理系统课设文档.docx》由会员分享,可在线阅读,更多相关《学生管理系统课设文档.docx(19页珍藏版)》请在冰豆网上搜索。
学生管理系统课设文档
成成学生管理系统
1.课程设计的目的
由于高等学校的快速发展,高校规模越来越大,学生数量与课程数量都在迅速地增长,管理上的手工操作不仅仅会耗费学生与工作人员大量的时间和精力,效率以及准确性也很低。
如何使同学们方便,快捷、准确地选课,已经成为一个重要的问题。
利用计算机进行学生选课方面的管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。
要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的管理系统是十分重要的。
2.设计方案论证
2.1设计思路
根据对系统进行的需求分析,本系统将分为4个模块:
分别是学生管理模块、课程管理模块、成绩管理模块、信息查询模块。
实现的功能有:
(1)增加学生信息
系统操作人员打开学生信息增加界面,输入相关信息,在数据库中添加相关数据。
(2)修改学生信息
根据学生学号查询出该学生的相关信息,修改相关条目后保存在数据库中。
(3)删除学生信息
根据学生学号查询出该学生的相关信息,确定删除后,在数据库中删除该信息。
(4)学生选课
选择学生学号与需要选择的课程,确认无误后保存,数据库中将自动添加新的选课记录。
(5)增加课程信息
系统操作人员根据打开课程信息增加界面,输入相关信息,在数据库中添加相关数据。
(6)修改课程信息
根据课程号查询出课程的相关信息,修改相关条目后保存在数据库中。
(7)删除课程信息
根据课程号查询出该课程的相关信息,确定删除后,在数据库中删除该信息。
(8)登记成绩
根据学号,以及该学生所选择的课程,进行成绩登记,未选课的学生无法进行登记。
(9)修改成绩
对登记的成绩信息进行修改。
(10)学生查询
可以根据学生学号、学生姓名、学生性别、学生所学专业、学生所属学院、来对学生信息进行查询,所有符合查询条件的学生信息都将会被显示出来。
(11)课程查询
可以按照课程名称,授课教师的姓名,对课程的详细信息进行查询,所有符合查询条件的课程信息都将会被显示出来。
(12)成绩查询
根据学生的学号来查询该学生所有课程的成绩。
2.2数据库设计
数据库中应包含3个表,即课程信息表(Course)、学生信息表(Student)、和学生选课表(SC)。
设计表如表1,表2,表3所示。
表1课程信息表(Course)
名称
字段名称
数据类型
主键
非空
课程编号
Cnum
Char(4)
Yes
Yes
课程名称
Cname
Varchar2
No
Yes
授课教师
Cteacher
Varchar2
No
No
上课地点
Cplace
Varchar2
No
No
课程类别
Ctype
Char
(1)
No
No
表2学生信息表(Student)
名称
字段名称
数据类型
主键
非空
学号
Snum
Char(10)
Yes
Yes
学生姓名
Sname
Varchar2
No
Yes
性别
Ssex
Char
(2)
No
No
民族
Sethnic
Char
(2)
No
No
籍贯
Shome
Varchar2
No
No
入学年份
Syear
Char(4)
No
No
专业
Smajor
Varchar2
No
No
学院
Scollege
Varchar2
No
No
出生日期
Sbirth
Char(8)
No
No
表3学生选课表(SC)
名称
字段名称
数据类型
主键
非空
学号
Snum
Char(10)
Yes
Yes
课程编号
Cnum
Char(4)
Yes
Yes
成绩
Grade
Number(4,1)
No
No
2.3设计方法
(1)学生管理系统主界面模块
学生管理系统主界面模块包括StuMS.java和StuMain.java两个文件。
StuMS是学生管理系统的主运行类,其中有运行整个程序的main方法,该文件生成了StuMain类的一个实例,从而生成了学生管理系统的界面。
StuMain类继承自JFrame类,实现了事件侦听的接口,它有一个不带参数的构造方法StuMain(),用来生成StuMain的实例。
StuMain类将所有的功能集中到菜单栏中,并通过调用其他模块来实现学生管理系统的各个功能。
(2)学生信息管理模块
学生信息管理模块主要由StuInfo.java、AddStuInfo.java、EditStuInfo.java、DelStuInfo.java、SelectCourse.java和StuInfoSearchSnum.java共6个文件组成。
StuInfo是AddStuInfo、EditStuInfo、DelStuInfo这3个类的超类,由于AddStuInfo、EditStuInfo和DelStuInfo的界面显示有共同之处,所以编写包含共有界面的StuInfo类,可以快速实现其3个子类的界面显示。
它们之间的构成关系如图1所示。
这6个类文件组成了主界面中“学生管理”菜单的内容,其中包括增加、修改、删除和学生选课功能。
图1学生信息管理功能结构图
其中StuInfoSearchSnum类是选择学号的类,该类利用getSnum()方法将选择出的学号返回给调用它的类。
调用它的类包括EditStuInfo类和DelStuInfo类。
(3)课程信息管理模块
课程信息管理模块主要由CourseInfo.java、AddCourseInfo.java、EditCourseInfo.java、DelCourseInfo.java、CourseInfoSearchCnum.java这5个文件组成,它们组成了主界面中“课程管理”菜单的内容,其中包括增加、修改和删除功能。
CourseInfo是AddCourseInfo、EditCourseInfo、DelCourseInfo这3个类的超类,由于AddCourseInfo、EditCourseInfo和DelCourseInfo的界面显示有共同之处,所以编写包含共有的CourseInfo类,可以快速实现其3个类的界面显示。
它们之间的构成关系如图2所示。
图2课程信息管理功能结构图
CourseInfoSearchCnum类是选择课程号的类,该类利用getCnum()方法将选择出的学号返回给调用它的类。
调用它的类包括EditCourseInfo类和DelCourseInfo类。
(4)成绩信息管理系统
成绩信息管理模块主要由GradeInfo.java、AddGradeInfo.java、EditGradeInfo.java这3个文件组成,这3个文件组成了主界面中“成绩管理”菜单的内容,其中包括增加和修改功能。
GradeInfo类是AddGradeInfo、EditGradeInfo这两个类的超类,由于AddGradeInfo和EditGradeInfo的界面显示有共同之处,所以编写包含共有界面的GradeInfo类,可以快速实现其两个子类的界面显示。
3个文件构成的关系如图3所示。
图3成绩信息管理功能结构图
(5)信息查询模块
信息查询模块主要包括学生查询、课程查询和成绩查询3个部分。
学生查询由StuSearchSnum.java、StuSearchSname.java、StuSearchSsex.java、StuSearchScollege.java、StuSearchSmajor.java和ResultStudent.java这6个文件组成,包括:
按照学号查询、按照学生姓名查询、按照性别查询、按照学院查询与按照专业查询。
StuSearchSnum.java类是按照学学号查询学生信息的类,支持学号在一定范围内搜索。
操作者只需输入需要查询的学号范围,系统会将范围内的信息显示在屏幕上。
StuSearchSname.java类是按照学生姓名查询学生信息的类,支持根据学生姓名进行搜索。
操作者输入需要查询的学生姓名,系统会将符合条件的信息显示在屏幕上。
同时,如果操作者不输入任何信息,系统将会搜索出所有的学生信息。
StuSearchSsex.java类、StuSearchScollege.java类、StuSearchSmajor.java类和ResultStudent.java类的实现功能与StuSearchSname.java类功能相似。
(6)数据库操作模块
Database.java类是对数据库进行操作的类,包括:
连接数据库、执行SQL语句、关闭数据库连接等;StuBean.java类是用语对学生相关信息进行数据库操作的类,包括:
学生信息的增加、修改、删除、查询等;CrsBean.java类似乎用于对课程相关信息进行数据库操作的类,包括:
课程信息的增加、修改、删除、查询等;csBean.java类是用语对选课信息及成绩的相关信息进行数据库操作的类,包括:
选课信息的、修改、查询,以及成绩的登记、修改、查询等。
3.设计结果与分析
(1)学生管理系统的主界面,如图4所示。
图4主界面
(2)添加学生信息界面,如图5所示。
图5添加学生信息界面
(3)若要修改学生信息,先单击“学号查询”选择要修改的学生学号,点击确定后,对所显示的学生信息进行修改。
运行界面如图6所示。
图6修改学生信息界面
(4)选择“学号”和所要选择的“课程”进行学生选课操作,运行界面如图7所示。
图7学生选课界面
(5)添加课程信息,运行效果如图8所示。
图8添加课程界面
(6)若要修改课程信息,单击“查询”按钮,选择所要修改课程的课程编号,之后该信息会自动显示出来,此时可进行信息的修改,运行效果如图9所示。
图9修改课程信息界面
(7)若要添加成绩信息,下拉列表中选择学号,课程名称,之后对该同学的成绩进行录入,运行效果如图10所示。
图10添加成绩界面
(8)信息查询包括学生查询、课程查询、成绩查询。
若按学号查询,则弹出输入学号的界面,如图11所示。
单击“确定“后,则显示所要查询的信息结果。
如图12所示。
图11按学号索引界面
图12学生信息查询结果界面
4.设计体会
通过这次课程设计,使我对JAVA这门课又做了一次系统的复习,对各个知识点也都有了更深刻的理解,让我掌握的更扎实,同时也增强了实际操作能力,了解了学生信息管理系统的工作流程以及工作模式,程序开发过程中涉及到了数据库的相关知识,使我对数据库的使用也更加的熟练,另一方面也对编程语言有了新的认识,为以后的学习打下了基础。
在本系统的开发过程中,在知识、经验方面都存在着不足。
另外,在整个开发的过程中,时间也比较仓促不能对学生信息管理系统的整个流程完全熟悉,在需求分析时未能做到完全满足用户的需求。
5.参考文献
[1]丁振凡.Java语言实用教程[M].北京:
北京邮电大学出版社,2005.2:
105-121
[2]宛延闿.实用Java程序设计教程[M].北京:
机械工业出版社,2006.4:
234-250
[3]张广彬,孟红蕊,张永宝.Java课程设计案例精编[M].北京:
清华大学出版社,2005.2:
355-363
[4]朱喜福.Java程序设计[M].北京:
人民邮电出版社,2005.9:
179-203
附录
(1)StuMS.java
importjavax.swing.UIManager;
importjava.awt.*;
publicclassStuMS{
booleanpackFrame=false;
publicStuMS(){
StuMainframe=newStuMain();
if(packFrame)
{frame.pack();}
else
{frame.validate();}
//设置运行时窗口的位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
DimensionframeSize=frame.getSize();
if(frameSize.height>screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width>screenSize.width){
frameSize.width=screenSize.width;
}
frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
frame.setVisible(true);
}
publicstaticvoidmain(String[]args){
//设置运行风格
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch(Exceptione)
{e.printStackTrace();}
newStuMS();
}
}
(2)AddStuInfo.java
importjava.awt.event.*;
importjava.awt.*;
importjavax.swing.*;
publicclassAddStuInfoextendsStuInfo{
StuBeangetSnum=newStuBean();
publicAddStuInfo(){
this.setTitle("添加学生信息");
this.setResizable(false);
sNum.setEditable(false);
sNum.setText(""+getSnum.getStuId());
sName.setEditable(true);
sSex.setEditable(true);
sSethnic.setEditable(true);
sBirth.setEditable(true);
sYear.setEditable(true);
sMajor.setEditable(true);
sCollege.setEditable(true);
sHome.setEditable(true);
//设置运行时窗口的位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((screenSize.width-400)/2,
(screenSize.height-300)/2+45);
}
publicvoiddownInit(){
addInfo.setText("增加");
addInfo.setFont(newFont("Dialog",0,12));
downPanel.add(addInfo);
clearInfo.setText("清空");
clearInfo.setFont(newFont("Dialog",0,12));
downPanel.add(clearInfo);
eixtInfo.setText("退出");
eixtInfo.setFont(newFont("Dialog",0,12));
downPanel.add(eixtInfo);
//添加事件侦听
addInfo.addActionListener(this);
clearInfo.addActionListener(this);
eixtInfo.addActionListener(this);
this.contentPane.add(downPanel,BorderLayout.SOUTH);
}
publicvoidactionPerformed(ActionEvente){
Objectobj=e.getSource();
if(obj==eixtInfo){//退出
this.dispose();
}
elseif(obj==addInfo){//增加
sNum.setEnabled(false);
sName.setEnabled(false);
sSex.setEnabled(false);
sSethnic.setEnabled(false);
sBirth.setEnabled(false);
sYear.setEnabled(false);
sMajor.setEnabled(false);
sCollege.setEnabled(false);
sHome.setEnabled(false);
addInfo.setEnabled(false);
clearInfo.setEnabled(false);
eixtInfo.setEnabled(false);
StuBeanaddStu=newStuBean();
addStu.stuAdd(sName.getText(),sSex.getText(),sBirth.getText(),sHome.getText(),sSethnic.getText(),sYear.getText(),sMajor.getText(),sCollege.getText());
this.dispose();
AddStuInfoasi=newAddStuInfo();
asi.downInit();
asi.pack();
asi.setVisible(true);
}
elseif(obj==clearInfo){//清空
setNull();
sNum.setText(""+getSnum.getStuId());
}
}
}
(3)EditStuInfo.java
mportjava.awt.*;
importjava.sql.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassEditStuInfoextendsStuInfo{
StringsNum_str="";
publicEditStuInfo(){
this.setTitle("修改学生信息");
this.setResizable(false);
sNum.setEditable(false);
sNum.setText("请查询学号");
sName.setEditable(false);
sSex.setEditable(false);
sSethnic.setEditable(false);
sBirth.setEditable(false);
sYear.setEditable(false);
sMajor.setEditable(false);
sCollege.setEditable(false);
sHome.setEditable(false);
//设置运行时窗口的位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((screenSize.width-400)/2,
(screenSize.height-300)/2+45);
}
publicvoiddownInit(){
searchInfo.setText("学号查询");
searchInfo.setFont(newFont("Dialog",0,12));
downPanel.add(searchInfo);
modifyInfo.setText("修改");
modifyInfo.setFont(newFont("Dialog",0,12));
downPanel.add(modifyInfo);
clearInfo.setText("清空");
clearInfo.setFont(newFont("Dialog",0,12));
downPanel.add(clearInfo);
eixtInfo.setText("退出");
eixtInfo.setFont(newFont("Dialog",0,12));
downPanel.add(eixtInfo);
searchInfo.setEnabled(true);
modifyInfo.setEnabled(false);
clearInfo.setEnabled(true);
eixtInfo.setEnabled(true);
//添加事件侦听
searchInfo.addActionListener(this);
modifyInfo.addActionListener(this);
clearInfo.addActionListener(this);
eixtInfo.addActionListener(this);
this.contentPane.add(downPanel,BorderLayout.SOUTH);
}
publicvoidactionPerformed(ActionEvente){
Objectobj=e.getSource();
String[]s=newString[8];
if(obj==eixtInfo){//退出
this.dispose();
}
elseif(obj==modifyInfo){//修改
StuBeanmodifyStu=newStuBean();
modifyStu.stuModify(sNum.getText(),sName.getText(),sSex.getText(),sBirth.getText(),sHome.getText(),sSethnic.getText(),sYear.getText(),sMajor.getText(),sCollege.getText());
modifyStu.stuSearch(sNum.getText());
s=modifyStu.stuSe