资源描述
学生标准管理系统实训报告java语{//普通学生登陆
String sql二"select * from user_stu where stu_id=,"+name+"' and pwd=' "+pwd+"' 〃;
rs=(sql); if(0) ( new StuClient (name) ;//创建 学生客户短窗口();//关闭登陆窗口并释放资源
else {//弹出错误提示窗口(this,”用户名或密
码错误",〃错误〃,);}
();//关闭连接,语句及结果集}
else(//教师登陆
String sql="select coll_id from user_teacher where uid= +name+ and pwd= +pwd+ ;rs=(sql);
if(0)( String coll_id=(l):
new TeacherClient(coll_id);// 创建教师客户端窗口();//关闭登陆窗口并释放资源
}else
{//弹出错误提示窗口(this, 〃用户名或密
码错误”,”错误〃,);("〃);
}
0; 〃关闭连接,语句及结果集 }}
catch(SQLException ea)0;
}
else if (()=)//按下重置按钮,清空输入 信息( (〃〃); (〃〃); }
else if(() =jtf)//当输入用户名并回车 ((true);} else if (() =jpwf) //当输入密码并回车时 {(true);)}
//自定义的初始化数据库连接的方法 public void initialconnection(){ try
{//加载驱动,创建Connection及Statement
conn=("jdbc:mysql://localhost: 3306/test”, "root”, "root");stmt=();
}catch(SQLException e)
(
(this,”连接失败,请检查主机地址是否 正确〃,〃错误〃,);0;
}catch(ClassNotFoundException e)
0;)
〃初始化的关闭数据库连接的方法 public void closeConn()( try
{ if (rs!=null) {() ;}if (stmt !=null) {() ;}
if (conn!=null) {();)}
catch(SQLException e)(
0;}
}public static void main(String argsE])
{
Login login=new Login() ;//创建登 陆窗体对象}}
3、效果图
Login创建的窗口效果如图1所示。
学生管理系统共有三个窗体:登录窗体、教师客户端窗体、学生客户端窗体。 主要操作如下:
(1)如果用户名或密码错误,则会弹窗错误提示对话框,如图2所示。
囱 O 拄
(2)当用户为教师时,登录成功后的窗体会自动全屏显示,展开左边的树状列表,如图3所示,然后通过单击不同节点进行相应的业务操作。
(3) 通过单击“退出”节点时,系统会弹出对话框确认,如图4所示,根据用户选择进行相应操作。
a操作迭项
1^1 c HH
a系统迭项O退出
D密码修改 a学生信息管理D新生报到
? □学生信息查询 D基本信息查询 D成绩查询 □3深程管理D开深迭项设置
D课程成绩录入
一 D添加深程 a班级设置D增加班级
(4)当有新生报到时,用户可以单击“新生报到”节点,进入如图5所示的添加学生窗体界面。
操作选项3系统迭项
二退出
2)密码修改 3学生信息管理
□基本信息查询
D成绩查询
性别
▼
姓
名
D就生报到 ? 3学生信息查询出生日蚓
出生日蚓
19叫* ” |小 |i |^|h
2)开课送项设置2)课程成绩录入
2)添加课程 □班级设置D憎加驻级
石家庄科技信息职业学院通信技术
二跳入学时间
入学时间
2011
重者
提交
(5)当教师需要查询某个学生的基本信息时,可以单击“基本信息查询”节点二I操作迭项
a系统迭项
n退出
2)密码修改
□学生信息管理
□新生报到
? D学生信息查闾
2)基本信息查徇
2)成续查询 a课程管理
3开课迭项设蚩
3课程成绩录入
2)添加课程 a班级设置
D增加班级
二I操作迭项
a系统迭项
n退出
2)密码修改
□学生信息管理
□新生报到
? D学生信息查闾
2)基本信息查徇
2)成续查询 a课程管理
3开课迭项设蚩
3课程成绩录入
2)添加课程 a班级设置
D增加班级
请输入要查间学生的学号200909010101
200909010101
谷占飞
出生曰期
1989 年 11
河北省沧湖市
石家庄科技信息聪业学院
软件技术
直间
入学时间
2009 年 9
月15
输入学号进行查询,界面如图6所示。
(6) 每学期开始,各学院都应该为学生安排可选课程,这时可以通过“开课选 项设置”进入选课设置界面进行操作,如图7所示。教师进行课程设置后效果如图8 所示方肝客户茂】
? 口系统迭项 D退出 □密码修改3学生信息管理 D新生报到
? 3字生信息直调D星本信息查询
D成续查询3课程管理_
D开深迭项设置 D课程成绩荥入 D添加课程深程号
深程名
字分[属专业
010101
讦算机文化基础
2 5|通信技术
010102
计算机导论
云信技术
010201
近编语言
3.5|通信技术
010202
数字电路
^5多媒体技术
010301
模拟电路
3.5[多媒体技术
010302
自动化原理
3^术
深程号
深程名
字分[属专业
010101
讦算机文化基础
2 5|通信技术
010102
计算机导论
云信技术
010201
近编语言
3.5|通信技术
010202
数字电路
^5多媒体技术
010301
模拟电路
3.5[多媒体技术
010302
自动化原理
3^术
现有课程列表:
已安排课程列表:
请输入您要安排的课程的课程号:
上课时间:星期1 ▼讲次1
提交该课程
3班级设置 D增加班级
请输入您要移除的课程的课程号:
星期k卜|讲次h卜|
移除该课程
允许送课
允许送课
停It送深
n操作迭项
? 口系统迭项
D退出
□密码修改
? 3学生信息管理
D就生报到
? E学生信息查询
D基本信息查洵
D成绩查询
? u课程管理
D开课迭项设置
D崖程成绩录入
D添加课程
9 口班级设置
D增加班级
n操作迭项
? 口系统迭项
D退出
□密码修改
? 3学生信息管理
D就生报到
? E学生信息查询
D基本信息查洵
D成绩查询
? u课程管理
D开课迭项设置
D崖程成绩录入
D添加课程
9 口班级设置
D增加班级
深程号
课程名
学分
所属麦*
010101
计算机文化基础
2.5
通信技术
010102
计算机导论
2.0
通信技术
010201
汇编语言
3 5
通信技术
010202
数字电路
2.5
多媒体技术
010301
模拟电路
3.5
多媒体技术
010302
自动化原理
3.5
软件技术
现有课程列表:
课程号
课程名
星期
讲次
任课老师
010101
计算机文化基础
1
1
檀运娟
010102
计算机兼
1
3
赵东洁
010201
汇编语M
2
3
侯丽直
010201
汇编语言
2
4
侯丽if
010301
模拟电路
3
4
刘平
010301
模似电路
3
1
刘平
010302
自动化原理
4
2
李阳
已安排课程列表:
请输八您要安排的课程的课程号:
老师
上课时间:星期1 ▼讲次1 ▼
提交该课程
请输八您要移褓的课程的课程号:
星期k IT讲次h IT
移除该课程
允祢迭课
允祢迭课
停止迭课
rm
rm
-rT、in
语溯您要阉成部自觥o ▼
公布该晒单
Z3操作送项
? 3系统迭项 □退出 D密码修改
? 3学生信息管理
D新生报到
? 3学生信息查询
D基本信息查询 D成绩查询
课程号 课程名 学 分 威属专业
重盖
添力0
在每个学期期末,需要对学生的成绩进行录入,用户通过“课程成绩录
入”模块进行录入操作,如图9所示。
心聘噩D碰愁
D蝉gD救麴
(7) 教师还可以通过点击“添加课程”、“添加班级”节点,进行添加课程和班级操作,如图10和图11所示。
? 3课程管理D开课迭项设置
D深程成绩录入D添加深程
? 3班级设置D增加班级
口操作选项
? □系统选项
D退出
D密码修改
? 口学生信息管理
D新生报到
? 3学生信息查询
D基本信息查询 D成绩查询
? 3课程管理
D开课选项设置
D课程成绩录入 。添加课程
? □班级设置
D增加班级
软件技术
提交
重置
确认
重置
Ixzl 1 1抽二 4irt
(8) 教师可以点击“修改密码”来修改自己的登录密码,如图12所示。
(9) 如果用户是学生,登录后的窗体也会自动全屏显示,展开树状列表后的界面如图13所示。
口操作选项3系统迭项
D退出D密码修改
3学生信息管理
D新生报到 ? 3学生信息查询D基本信息查询
D成绩查询
3课程管理
卜D开课选项设置
D课程成绩录入D添加课程
3既级设置D增加既级
《Java实训》设计报告
学生管理系统
一、项目需求
通过与科信学院教务人员的详细交流,目标系统具备以下功能。
i.教师客户端功能
*可以添加学生,并要求填写学生基本信息;
*可以根据学号查询学生基本信息及其成绩;
*有权限控制,每个管理员只能管理其所在学院的信息;
*可以添加新课程、新班级;
*可以控制选课的课程范围,并可以控制选课的时间,即:可以控制选课开始 和结束时间;
*可以录入成绩,缓存成绩,检查无误后公布成绩。
2.学生客户端功能
*学生可以查看自己的基本信息;
*学生可以查看自己的成绩,已修学分和不及格成绩信息;
*学生端可以进行远程选课,并且可以查看课表。
根据以上相关功能,现规划数据流图和数据字典如下:
二、项目设计
在设计学生管理系统时,编写20个Java源文件:、、、、、、、、、、、、、、、、、、、,还 需要 Java 系统提供的一些重要类,如 JButton, JTextField, JTextArea, LinkedList 等。
下面是20个Java源文件的功能:
(1)(主类)
Login类负责创建学生管理系统登陆界面的主窗口,该类含有main方法,学生 管理系统从该类开始执行oLogin类是继承Jframe类,有一个ActionListener接口, 并且加载了 Mysql数据库连接。该类中有两种身份类型:学生、管理员,在登录窗 口中选择相应的身份类型,输入信息正确后就会进入相应的客户端。
(2)
1^1 1 n AP
(10) 当学生需要选课时,可以通过单击“选课”节点进入如图14所示的选课 界面进行选课。
(11) 在学生选课过程中,随时可以点击“课表显示”节点查看课表,如图15 所示。
(12) 学生点击“已修课程成绩”节点时,便可进入已修课程查看界面,查看成绩和学分,如图16所示。
僦颤
9 8砌 D趾 D倒眦
D似星皿 ? 白学生迭涅
D牌
Dm?.
? □成做
D咐程踞 D不贿明弱
西送择依洋程列敖1下:
部M 旋网的制号
l^l 1 it 44/4-匚田
图16 已修课得
三、项目总结
学生管理系统的完成,对学校的管理带来了方便,也对教师是一个很好的帮助, 方便管理,提高了工作的效率。在本系统开发过程中,由于本人是初次开发软件, 在知识、经验方面存在不足。另外在整个开发过程中,时间也比较仓促,因此,该 系统必然存在一些缺陷和不足。因为对学生的管理整个流程不够熟悉,在需求分析 时未能做到完全满足用户的需求。另外,由于自身对网络的不熟悉,本应做到C/S 客户端/服务器的软件,结果不能达到预期效果,实为遗憾。
虽然该系统存在诸多的不足,但其功能均已经实现,易于日后程序的更新、数 据库管理容易、界面友好、操作方便、安全性好。相信本学生管理系统是一套学校 在日常管理中必不可少的管理软件。
四、心得体会
通过开发这个软件,我掌握了项目的开发过程,了解了基本知识,巩固了我对 Java编程语言和软件工程思想的学习,掌握了简单的数据库操作。尤其掌握了树状 列表作为导航的重要性,并且能够运用。同时编写这个程序让我更好的理解了数组、 类的运用及事件的监听和获取等功能。我相信我会再在java方面下苦工的,相信自 己一定能更好的运用java编程语言的。
该类是学生客户端修改密码的类,在该类中,用户提供原始密码(登陆成功的 密码)后并且输入新密码和确认新密码后点击“确认”按钮就可以修改密码。
(3)
该类是教师客户端修改密码的类,在该类中,用户提供原始密码(登陆成功的 密码)后并且输入新密码和确认新密码后点击“确认”按钮就可以修改密码。
(4)
该类主要是控制学生选课,学生根据教师安排的课程信息,由学生输入已经安 排好的“课程号”就可以选课。
(5)
该类主要控制学生的课程安排,就是以课表显示学生的选课信息。
(6)
该类主要是有教师操作,教师通过输入正确的班级号、班级名、专业信息后就 可以添加新的班级。
(7)
该类作为教师客户端的一个主要模块,该模块是教师添加新学生。教师通过输 入学生的基本信息,包括:姓名、出生年月、学号、籍贯、入学年份、专业等等 这样就可以添加新学生。
(8)
该类是基于Login类的,这是学生客户端的界面类,该类控制了学生客户端要 显示什么内容,由什么功能等等。包括:修改密码、查看自己基本信息和成绩、选 课等功能界面的显示。
(9)
该类是教师客户端界面的类,该类和StuClient类的功能基本相似,主要包括 修改密码、添加新学生、查看学生基本信息和成绩信息、进行课程安排、添加新课 程和班级等功能的显示。
(10)(11)
O即新生报到功能的实现。
(12)
该类最为简单,。
(13)
该类是教师管理课程,教师可以对课程安排,包括:周次、任课教师、学分等 信息,为学生选课做准备。
(14)
该类是提供学生的成绩各科成绩,包括及格成绩和不及格成绩,以及学分。
(15)
根据学号获得学生相应基本信息的方法。教师在输入学生学号后点击“查询” 按钮查看相应学生的基本信息。
(16)
该类的功能是公布学生某一科的成绩,教师通过点击“公布该科成绩单”就会 公布该科的成绩,学生就会在学生自己客户端查看自己的成绩信息。
(17)
该类主要是有教师操作,教师通过输入正确的课程号、课程名、学分信息后就 可以添加新的课程,。
(18)
该类功能是显示学生的不及格成绩。学生在查看成绩时候,点击“不及格成绩” 时显示的界面。
(19)
该类功能是显示学生的已修课程成绩。学生在查看成绩时候,点击“已修课程 成绩”时显示的界面。
(20)
该类是教师通过输入学生的“学号”进行查询学生的成绩信息。
1、Login类(主类)(1)数据和方法
,并实现了 ActionListener接口。类中有关数据和方法的详细说明。
1)成员变量
该类中的变量大部分都是私有的,这样有利于信息的封装。其中包括:
private Connection conn;//连接数据库用到private Statement stmt; 〃执行数据库语句
private ResultSet rs; 〃结果集private JPanel jp=new JPanel();〃仓U建用来存放空间的容器private JLabel jll=new JLabel(H用户名"); private JLabel j!2=new JLabel(H密码"); 〃创建用户名和密码输入框
private JTextField jtf=new JTextFieldQ;
private JPasswordField jpwf=new JPasswordField();
private JRadioButton[] jrbArray={new JRadioButton("普通学生”,true), new JRadioButton("管理人员”)};〃创建单选按钮数组private ButtonGroup bg=new ButtonGroupO;〃创建组
〃创建操作按钮private JButton jbl=new JButton(H登陆”);
private JButton jb2=new JButton。'重置”);
2)方法main(String args[]);方法是学生管理系统程序运行的入口方法。 Login();是构造方法,负责完成窗口的初始化。
addListener();添加事件监听器方法。 initialFrame();初始化窗体 actionPerformed(ActionEvent e);实现接 口方法 initialConnection();自定义的初始化数据库连接的方法 closeConnO;关闭数据库
2、代码import
import
•*;
import
• *;
import
• *;
import
• *;
import
• *;
import
• *;
import
• *;
import
• *;
import ・ *;
public class Login extends JFrame implements ActionListener( private String host;
〃声明Connection引用、Statement对象引 用与结果集引用private Connection conn:
private Statement stmt;private ResultSet rs;
private JPanel jp=new JPanel () ;//创建用 来存放空间的容器private JLabel jll=new JLabel C用户名"); private JLabel jl2=new JLabel (,z密码”); private JLabel jl3=new JLabel ("");//正在
登陆提示标签//创建用户名和密码输入框 private JTextField jtf=new JTextFieldO ;
private JPasswordField jpwf=new JPas swordFi e 1 d ();
private JRadioButton[] jrbArrays{new JRadioButton(/z 普通学生",true), new JRadioButton(z,管理人员”)}; 〃创建单选按钮数 组bg=new
bg=new
privateButtonGroupButtonGroup ();//创建组
//创建操作按钮
private JButton jbl=new JButton ("登陆”); private JButton jb2=new JButton ("重置”); public Login()(0 ; initialFrame () ; // 初始化界
面}public void addListener()
((this);//为登陆按钮注册监听器
in
(this);//为重置按钮注册监听器 (this);//为用户名文本框注册监听器 (this);//为用户名密码框注册监听器public void initialFrame()
{ (null) : //设为空布局(jll);
(jtf); (jl2);
(jpwf);
(jll);
(jtf); (jl2);
(jpwf);
//将控件添加到容器相应位置(30, 100, 110, 25);
(120,100,130, 25);(30, 140,110, 25);
(120, 140,130, 25);('*');
(jrbArray[0j);(jrbArray[l]);
jrbArray[0]. setBounds(40, 180,100,25);
(jrbArray[0D ;
jrbArray[1]. setBounds(145, 180, 100, 25); (jrbArray[1]);(jbl);
(jb2);
(jl3);
(jbl);
(jb2);
(jl3);
(35,210,100, 30);(150, 210,100, 30);
(40, 250,150, 25);(jp);
〃设置窗口的标题、大小、位置以及可见性("登陆〃);
(false);DimensionscreenSize=
().getScreenSizeO ;int
int
int
int
int
int
int
int
centerX=;centerY=;
w=300;//本窗体宽度h=320;〃本窗体高度
(centerX-w/2, centerY-h/2-100, w, h);// 设置窗体出现在屏幕中(true);
public void actionPerformed(ActionEvente)
{if (0 =jbl){//按下登陆按钮
String name= (). trim();if (("〃))
(
(this,"请输入 用户名”,〃错误〃,);(""); return;
)String pwd=new String (()). trim():
if ((""))(this, 〃请输
入密码”,〃错误〃,);(""); return;
int type=[O]. isSelectedO?0:1;// 获 取登陆类型try
{//初始化连接 0;if(type==O)
展开阅读全文