学生管理系统实训报告java语言.docx
- 文档编号:8946157
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:10
- 大小:20.64KB
学生管理系统实训报告java语言.docx
《学生管理系统实训报告java语言.docx》由会员分享,可在线阅读,更多相关《学生管理系统实训报告java语言.docx(10页珍藏版)》请在冰豆网上搜索。
学生管理系统实训报告java语言
学生管理系统实训报告(java语言)
《Java实训》设计报告
学生管理系统
一、项目需求
通过与科信学院教务人员的详细交流,目标系统具备以下功能。
1.教师客户端功能*可以更改密码;
*可以添加学生,并要求填写学生基本信息;*可以根据学号查询学生基本信息及其成绩;
*有权限控制,每个管理员只能管理其所在学院的信息;*可以添加新课程、新班级;
*可以控制选课的课程范围,并可以控制选课的时间,即:
可以控制选课开始和结束时间;
*可以录入成绩,缓存成绩,检查无误后公布成绩。
2.学生客户端功能
*学生可以查看自己的基本信息;
*学生可以查看自己的成绩,已修学分和不及格成绩信息;*学生端可以进行远程选课,并且可以查看课表。
根据以上相关功能,现规划数据流图和数据字典如下:
二、项目设计
在设计学生管理系统时,编写20个Java源文件:
ChangePwd.java、ChangePwdTeacher.java
、
ChoseCourse.java
、
CourseTable.java
、
CourseManage.java、GetScore.java、GetStuInfo.java、GradeInDB.java、Login.java、NewClass.java、NewCourse.java、NewStu.java、StuClient.java、StuFailGrade.java、StuGrade.java、StuInfo.java、StuScore.java、TeacherClient.java、TeachSearchInfo.java、Welcome.java学生管理系统除了上述20个Java源文件所给出的类外,还需要Java系统提供的一些重要类,如JButton,JTextField,JTextArea,LinkedList等。
下面是20个Java源文件的功能:
(1)Login.java(主类)
Login类负责创建学生管理系统登陆界面的主窗口,该类含有main方法,学生管理系统从该类开始执行。
Login类是继承Jframe类,有一个ActionListener接口,并且加载了Mysql数据库连接。
该类中有两种身份类型:
学生、管理员,在登录窗口中选择相应的身份类型,输入信息正确后就会进入相应的客户端。
(2)ChangePwd.java类
该类是学生客户端修改密码的类,在该类中,用户提供原始密码(登陆成功的密码)后并且输入新密码和确认新密码后点击“确认”按钮就可以修改密码。
(3)ChangePwdTeacher.java类
该类是教师客户端修改密码的类,在该类中,用户提供原始密码(登陆成功的密码)后并且输入新密码和确认新密码后点击“确认”按钮就可以修改密码。
(4)ChoseCourse.java类
该类主要是控制学生选课,学生根据教师安排的课程信息,由学生输入已经安排好的“课程号”就可以选课。
(5)CourseTable.java类
该类主要控制学生的课程安排,就是以课表显示学生的选课信息。
(6)NewClass.java类
该类主要是有教师操作,教师通过输入正确的班级号、班级名、专业信息后就可以添加新的班级。
(7)NewStu.java类
该类作为教师客户端的一个主要模块,该模块是教师添加新学生。
教师通过输入学生的基本信息,包括:
姓名、出生年月、学号、籍贯、入学年份、专业等等。
这样就可以添加新学生。
(8)StuClient.java类
该类是基于Login类的,这是学生客户端的界面类,该类控制了学生客户端要显示什么内容,由什么功能等等。
包括:
修改密码、查看自己基本信息和成绩、选课等功能界面的显示。
(9)TeacherClient.java类
该类是教师客户端界面的类,该类和StuClient类的功能基本相似,主要包括修改密码、添加新学生、查看学生基本信息和成绩信息、进行课程安排、添加新课程和班级等功能的显示。
(10)StuInfo.java类
StuInfo.java类是学生查询学生自己的基本信息。
(11)TeachSearchInfo.java类
TeachSearchInfo.java类是教师根据学生提供的基本信息建立学生基本信息电子档案。
即新生报到功能的实现。
(12)Welcome.java类
该类最为简单,仅仅通过一张xs.jpg图片显示在学生和教师客户端中。
(13)CourseManage.java类
该类是教师管理课程,教师可以对课程安排,包括:
周次、任课教师、学分等信息,为学生选课做准备。
(14)GetScore.java类
该类是提供学生的成绩各科成绩,包括及格成绩和不及格成绩,以及学分。
(15)GetStuInfo.java类
根据学号获得学生相应基本信息的方法。
教师在输入学生学号后点击“查询”按钮查看相应学生的基本信息。
(16)GradeInDB.java类
该类的功能是公布学生某一科的成绩,教师通过点击“公布该科成绩单”就会公布该科的成绩,学生就会在学生自己客户端查看自己的成绩信息。
(17)NewCourse.java类
该类主要是有教师操作,教师通过输入正确的课程号、课程名、学分信息后就可以添加新的课程,这个类与NewClass.Java的功能相似。
(18)StuFailGrade.java类
该类功能是显示学生的不及格成绩。
学生在查看成绩时候,点击“不及格成绩”时显示的界面。
(19)StuGrade.java类
该类功能是显示学生的已修课程成绩。
学生在查看成绩时候,点击“已修课程成绩”时显示的界面。
(20)StuScore.java类
该类是教师通过输入学生的“学号”进行查询学生的成绩信息。
1、Login类(主类)
(1)数据和方法
Login类是javax.swing包中JFrame的一个字类,并实现了ActionListener接
口。
类中有关数据和方法的详细说明。
1)成员变量
该类中的变量大部分都是私有的,这样有利于信息的封装。
其中包括:
privateConnectionconn;//连接数据库用到
privateStatementstmt;//执行数据库语句privateResultSetrs;//结果集
privateJPaneljp=newJPanel();//创建用来存放空间的容器privateJLabeljl1=newJLabel("用户名");privateJLabeljl2=newJLabel("密码");//创建用户名和密码输入框
privateJTextFieldjtf=newJTextField();
privateJPasswordFieldjpwf=newJPasswordField();
privateJRadioButton[]jrbArray={newJRadioButton("普通学生",true),
newJRadioButton("管理人员")};//创建单选按钮数组
privateButtonGroupbg=newButtonGroup();//创建组//创建操作按钮
privateJButtonjb1=newJButton("登陆");privateJButtonjb2=newJButton("重置");
2)方法
main(Stringargs[]);方法是学生管理系统程序运行的入口方法。
Login();是构造方法,负责完成窗口的初始化。
addListener();添加事件监听器方法。
initialFrame();初始化窗体
actionPerformed(ActionEvente);实现接口方法initialConnection();自定义的初始化数据库连接的方法closeConn();关闭数据库2、代码
importjava.awt.*;
importjava.awt.event.*;importjavax.swing.*;
importjavax.swing.event.*;importjava.util.*;importhttp:
//.cn.*;
importjava.io.*;importjava.sql.*;
importjavax.sql.*;
publicclassLoginextendsJFrameimplementsActionListener{privateStringhost;//声明Connection引用、Statement对象引用与结果集引用privateConnectionconn;privateStatementstmt;
privateResultSetrs;
privateJPaneljp=newJPanel();//创建用来存放空间的容器privateJLabeljl1=newJLabel("用户名");privateJLabeljl2=newJLabel("密码");
privateJLabeljl3=newJLabel("");//正在登陆提示标签//创建用户名和密码输入框
privateJTextFieldjtf=newJTextField();
privateJPasswordFieldjpwf=newJPasswordField();
privateJRadioButton[]jrbArray={newJRadioButton("普通学生",true),new
JRadioButton("管理人员")};//创建单选按钮数组
privateButtonGroupbg=newButtonGroup();//创建组
//创建操作按钮
privateJButtonjb1=newJButton("登陆");privateJButtonjb2=newJButton("重置");
publicLogin()
{this.addListener();initialFrame();//初始化界面}publicvoidaddListener()
{this.jb1.addActionListener(this);//为登陆按钮注册监听器this.jb2.addActionListener(this);//为重置按钮注册监听器this.jtf.addActionListener(this);//为用户名文本框注册监听器
this.jpwf.addActionListener(this);//为用户名密码框注册监听器}
publicvoidinitialFrame()
{jp.setLayout(null);//设为空布局//将控件添加到容器相应位置
jl1.setBounds(30,100,110,25);jtf.setBounds(120,100,130,25);jl2.setBounds(30,140,110,25);jpwf.setBounds(120,140,130,25);jpwf.setEchoChar('*');bg.add(jrbArray);bg.add(jrbArray);
jrbArray.setBounds(40,180,100,25);jrbArray.setBounds(145,180,100,25);jb1.setBounds(35,210,100,30);jb2.setBounds(150,210,100,30);jl3.setBounds(40,250,150,25);this.add(jp);
jp.add(jl1);jp.add(jtf);jp.add(jl2);jp.add(jpwf);
jp.add(jrbArray);jp.add(jrbArray);jp.add(jb1);jp.add(jb2);jp.add(jl3);
this.setResizable(false);
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();intcenterX=screenSize.width/2;intcenterY=screenSize.height/2;intw=300;//本窗体宽度inth=320;//本窗体高度
this.setBounds(centerX-w/2,centerY-h/2-100,w,h);//设置窗体出现在屏幕中this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){if(e.getSource()==jb1)
{//按下登陆按钮Stringname=this.jtf.getText().trim();
if(name.equals("")){
JOptionPane.showMessageDialog(this,"请输入用户名","错
误",JOptionPane.ERROR_*****);
jl3.setText("");return;
}
Stringpwd=newString(jpwf.getPassword()).trim();if(pwd.equals("")){
JOptionPane.showMessageDialog(this,"请输入密码","错
误",JOptionPane.ERROR_*****);
jl3.setText("");return;}
inttype=this.jrbArray.isSelected()?
0:
1;//获取登陆类型
try{//初始化连接
this.initialConnection();if(type==0)
{//普通学生登陆
Stringsql="select*fromuser_stuwherestu_id='"+name+"'and
rs=stmt.executeQuery(sql);if(rs.next())
{newStuClient(name);//创建学生客户短窗口this.dispose();//关闭登陆窗口并释放资源}else
{//弹出错误提示窗口
JOptionPane.showMessageDialog(this,"用户名或密码错误","错
pwd='"+pwd+"'";
误",JOptionPane.ERROR_*****);
jl3.setText("");
}
else{//教师登陆
Stringsql="selectcoll_idfromuser_teacher
whereuid='"+name+"'andpwd='"+pwd+"'";
rs=stmt.executeQuery(sql);if(rs.next())
{Stringcoll_id=rs.getString
(1);newTeacherClient(coll_id);//创建教师客户端窗口}
this.dispose();//关闭登陆窗口并释放资源
else
{//弹出错误提示窗口
JOptionPane.showMessageDialog(this,"用户名或密码错误","错
误",JOptionPane.ERROR_*****);
jl3.setText("");
}
}
this.closeConn();
//关闭连接,语句及结果集
}
catch(SQLExceptionea){
ea.printStackTrace();}
}
}
elseif(e.getSource()==this.jb2)//按下重置按钮,清空输入信息{this.jtf.setText("");this.jpwf.setText("");}elseif(e.getSource()==jtf)//当输入用户名并回车时{this.jpwf.requestFocus(true);}
elseif(e.getSource()==jpwf)//当输入密码并回车时{this.jb1.requestFocus(true);}
//自定义的初始化数据库连接的方法publicvoidinitialConnection()
{try{//加载驱动,创建Connection及Statement
Class.forName("org.gjt.mm.mysql.Driver");
conn=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/test","r
oot","root");
stmt=conn.createStatement();}
catch(SQLExceptione){
JOptionPane.showMessageDialog(this,"连接失败,请检查主机地址是否正确","错误",JOptionPane.ERROR_*****);
e.printStackTrace();
}
catch(ClassNotFoundExceptione){
e.printStackTrace();}
}
//初始化的关闭数据库连接的方法publicvoidcloseConn(){try
{if(rs!
=null){rs.close();}if(stmt!
=null){stmt.close();}
if(conn!
=null){conn.close();}}
catch(SQLExceptione){
e.printStackTrace();}
}
publicstaticvoidmain(Stringargs[]){
Loginlogin=newLogin();//创建登陆窗体对象}}
3、效果图
Login创建的窗口效果如图1所示。
图1登录窗体
学生管理系统共有三个窗体:
登录窗体、教师客户端窗体、学生客户端窗体。
主要操作如下:
(1)如果用户名或密码错误,则会弹窗错误提示对话框,如图2所示。
图2错误提示框
(2)当用户为教师时,登录成功后的窗体会自动全屏显示,展开左边的树状列表,如图3所示,然后通过单击不同节点进行相应的业务操作。
(3)通过单击“退出”节点时,系统会弹出对话框确认,如图4所示,根据用户选择进行相应操作。
图3教师客户端主窗
图4退出确认效果
(4)当有新生报到时,用户可以单击“新生报到”节点,进入如图5所示的添加学生窗体界面。
图5添加学生窗体
(5)当教师需要查询某个学生的基本信息时,可以单击“基本信息查询”节点输入学号进行查询,界面如图6所示。
图6学生基本信息查询窗
(6)每学期开始,各学院都应该为学生安排可选课程,这时可以通过“开课选项设置”进入选课设置界面进行操作,如图7所示。
教师进行课程设置后效果如图8所示
图7
开课选项设置
图8
开课选项设置效果
(7)在每个学期期末,需要对学生的成绩进行录入,用户通过“课程成绩录入”模块进行录入操作,如图9所示。
图9成绩录入窗体
(8)教师还可以通过点击“添加课程”、“添加班级”节点,进行添加课程和班级操作,如图10和图11所示。
图10添加课程效果图
图11添加班级效果图
(9)教师可以点击“修改密码”来修改自己的登录密码,如图12所示。
(10)如果用户是学生,登录后的窗体也会自动全屏显示,展开树状列表后的界面如图13所示。
图12
修改密码效果
图13学生客户端窗体
(11)当学生需要选课时,可以通过单击“选课”节点进入如图14所示的选课界面进行选课。
(12)在学生选课过程中,随时可以点击“课表显示”节点查看课表,如图15所示。
(13)学生点击“已修课程成绩”节点时,便可进入已修课程查看界面,查看成
绩和学分,如图16所示。
图14学生选课界面
图15学生课表显示界面
图16已修课程查看窗体
三、项目总结
学生管理系统的完成,对学校的管理带来了方便,也对教师是一个很好的帮助,方便管理,提高了工作的效率。
在本系统开发过程中,由于本人是初次开发软件,在知识、经验方面存在不足。
另外在整个开发过程中,时间也比较仓促,因此,该系统必然存在一些缺陷和不足。
因为对学生的管理整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
另外,由于自身对网络的不熟悉,本应做到C/S客户端/服务器的软件,结果不能达到预期效果,实为遗憾。
虽然该系统存在诸多的不足,但其功能均已经实现,易于日后程序的更新、数据库管理容易、界面友好、操作方便、安全性好。
相信本学生管理系统是一套学校在日常管理中必不可少的管理软件。
四、心得体会
通过开发这个软件,我掌握了项目的开发过程,了解了基本知识,巩固了我对Java编程语言和软件工程思想的学习,掌握了简单的数据库操作。
尤其掌握了树状列表作为导航的重要性,并且能够运用。
同时编写这个程序让我更好的理解了数组、类的运用及事件的监听和获取等功能。
我相信我会再在java方面下苦工的,相信自己一定能更好的运用java编程语言的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 系统 报告 java 语言