学生管理系统实训报告(java语言)(9900字)

发表于:2018.4.27来自:www.ttfanwen.com字数:9900 手机看范文

《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(主类)

《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类

1

《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接 2

《Java实训》设计报告

口。类中有关数据和方法的详细说明。

1)成员变量

该类中的变量大部分都是私有的,这样有利于信息的封装。其中包括:

private Connection conn;//连接数据库用到

private Statement stmt; //执行数据库语句 private ResultSet rs; //结果集 private JPanel jp=new JPanel();//创建用来存放空间的容器 private JLabel jl1=new JLabel("用户名"); private JLabel jl2=new JLabel("密码"); //创建用户名和密码输入框 private JTextField jtf=new JTextField(); private JPasswordField jpwf=new JPasswordField(); private JRadioButton[] jrbArray={new JRadioButton("普通学生",true), new JRadioButton("管理人员")};//创建单选按钮数组

private ButtonGroup bg=new ButtonGroup(); //创建组 //创建操作按钮 private JButton jb1=new JButton("登陆"); private JButton jb2=new JButton("重置");

2)方法

main(String args[]);方法是学生管理系统程序运行的入口方法。 Login();是构造方法,负责完成窗口的初始化。

addListener();添加事件监听器方法。

initialFrame();初始化窗体

actionPerformed(ActionEvent e);实现接口方法

initialConnection();自定义的初始化数据库连接的方法

closeConn();关闭数据库

2、代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

import java.util.*;

import java.net.*;

3

《Java实训》设计报告

import java.io.*; import java.sql.*;

import javax.sql.*;

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 jl1=new JLabel("用户名"); private JLabel jl2=new JLabel("密码");

private JLabel jl3=new JLabel("");//正在登陆提示标签 //创建用户名和密码输入框

private JTextField jtf=new JTextField();

private JPasswordField jpwf=new JPasswordField();

private JRadioButton[] jrbArray={new JRadioButton("普通学生",true),new

JRadioButton("管理人员")};//创建单选按钮数组

private ButtonGroup bg=new ButtonGroup();//创建组

//创建操作按钮

private JButton jb1=new JButton("登陆"); private JButton jb2=new JButton("重置");

public Login()

{ this.addListener(); initialFrame();//初始化界面 } public void addListener()

{ this.jb1.addActionListener(this);//为登陆按钮注册监听器 this.jb2.addActionListener(this);//为重置按钮注册监听器 this.jtf.addActionListener(this);//为用户名文本框注册监听器

this.jpwf.addActionListener(this);//为用户名密码框注册监听器 }

public void initialFrame()

{ 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[0]); bg.add(jrbArray[1]);

jrbArray[0].setBounds(40,180,100,25); jrbArray[1].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);

4

jp.add(jl1); jp.add(jtf); jp.add(jl2); jp.add(jpwf);

jp.add(jrbArray[0]); jp.add(jrbArray[1]); jp.add(jb1); jp.add(jb2); jp.add(jl3);

《Java实训》设计报告

//设置窗口的标题、大小、位置以及可见性 this.setTitle("登陆"); this.setResizable(false); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int centerX=screenSize.width/2; int centerY=screenSize.height/2; int w=300;//本窗体宽度 int h=320;//本窗体高度 this.setBounds(centerX-w/2,centerY-h/2-100,w,h);//设置窗体出现在屏幕中 this.setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1) {//按下登陆按钮 String name=this.jtf.getText().trim(); if(name.equals("")) {

JOptionPane.showMessageDialog(this,"请输入用户名","错

误",JOptionPane.ERROR_MESSAGE);

jl3.setText(""); return; } String pwd=new String(jpwf.getPassword()).trim(); if(pwd.equals("")) {

JOptionPane.showMessageDialog(this,"请输入密码","错

误",JOptionPane.ERROR_MESSAGE);

jl3.setText(""); return;

}

int type=this.jrbArray[0].isSelected()?0:1;//获取登陆类型 try {//初始化连接 this.initialConnection(); if(type==0) {//普通学生登陆

String sql="select * from user_stu where stu_id='"+name+"' and

rs=stmt.executeQuery(sql); if(rs.next()) { new StuClient(name);//创建学生客户短窗口 this.dispose();//关闭登陆窗口并释放资源 } else {//弹出错误提示窗口

JOptionPane.showMessageDialog(this,"用户名或密码错误","错pwd='"+pwd+"'";

误",JOptionPane.ERROR_MESSAGE);

jl3.setText("");

5

《Java实训》设计报告

} this.closeConn();//关闭连接,语句及结果集 } else{//教师登陆

String sql="select coll_id from user_teacher

where uid='"+name+"' and pwd='"+pwd+"'";

rs=stmt.executeQuery(sql);

if(rs.next())

{ String coll_id=rs.getString(1); new TeacherClient(coll_id);//创建教师客户端窗口 } this.dispose();//关闭登陆窗口并释放资源 else {//弹出错误提示窗口

JOptionPane.showMessageDialog(this,"用户名或密码错误","错

误",JOptionPane.ERROR_MESSAGE);

jl3.setText("");

} } this.closeConn(); //关闭连接,语句及结果集 } catch(SQLException ea) {

ea.printStackTrace();

}

} } else if(e.getSource()==this.jb2)//按下重置按钮,清空输入信息 { this.jtf.setText(""); this.jpwf.setText(""); } else if(e.getSource()==jtf)//当输入用户名并回车时 {this.jpwf.requestFocus(true);} else if(e.getSource()==jpwf)//当输入密码并回车时 {this.jb1.requestFocus(true);} //自定义的初始化数据库连接的方法 public void initialConnection() { 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(SQLException e) {

JOptionPane.showMessageDialog(this,"连接失败,请检查主机地址是否正确","错误",JOptionPane.ERROR_MESSAGE);

6

《Java实训》设计报告

e.printStackTrace();

} catch(ClassNotFoundException e) {

e.printStackTrace();

}

} //初始化的关闭数据库连接的方法 public void closeConn() { try { if(rs!=null){rs.close();} if(stmt!=null){stmt.close();} if(conn!=null){conn.close();} } catch(SQLException e) {

e.printStackTrace();

}

} public static void main(String args[]) {

Login login=new Login();//创建登陆窗体对象} }

3、效果图

Login创建的窗口效果如图1所示。

学生管理系统实训报告java语言

图1 登录窗体

7

《Java实训》设计报告

学生管理系统共有三个窗体:登录窗体、教师客户端窗体、学生客户端窗体。主要操作如下:

(1)如果用户名或密码错误,则会弹窗错误提示对话框,如图2所示。

图2 错误提示框

学生管理系统实训报告java语言

(2)当用户为教师时,登录成功后的窗体会自动全屏显示,展开左边的树状列表,如图3所示,然后通过单击不同节点进行相应的业务操作。

(3)通过单击“退出”节点时,系统会弹出对话框确认,如图4所示,根据用户选择进行相应操作。

学生管理系统实训报告java语言

图3教师客户端主窗

8

《Java实训》设计报告

图4退出确认效果

(4)当有新生报到时,用户可以单击“新生报到”节点,进入如图5所示的添加学生窗体界面。

图5 添加学生窗体

学生管理系统实训报告java语言

(5)当教师需要查询某个学生的基本信息时,可以单击“基本信息查询”节点输入学号进行查询,界面如图6所示。

学生管理系统实训报告java语言

9

《Java实训》设计报告

图6 学生基本信息查询窗

(6)每学期开始,各学院都应该为学生安排可选课程,这时可以通过“开课选项设置”进入选课设置界面进行操作,如图7所示。教师进行课程设置后效果如图8所示

学生管理系统实训报告java语言

图7

学生管理系统实训报告java语言

开课选项设置

10

《Java实训》设计报告

图8

学生管理系统实训报告java语言

学生管理系统实训报告java语言

开课选项设置效果

(7)在每个学期期末,需要对学生的成绩进行录入,用户通过“课程成绩录入”模块进行录入操作,如图9所示。

图9 成绩录入窗体

(8)教师还可以通过点击“添加课程”、“添加班级”节点,进行添加课程和班级操作,如图10和图11所示。

11

《Java实训》设计报告

图10添加课程效果图

学生管理系统实训报告java语言

学生管理系统实训报告java语言

图11添加班级效果图

(9)教师可以点击“修改密码”来修改自己的登录密码,如图12所示。

(10)如果用户是学生,登录后的窗体也会自动全屏显示,展开树状列表后的界面如图13所示。

12

《Java实训》设计报告

图12

学生管理系统实训报告java语言

修改密码效果

图13学生客户端窗体

学生管理系统实训报告java语言

(11)当学生需要选课时,可以通过单击“选课”节点进入如图14所示的选课界面进行选课。

(12)在学生选课过程中,随时可以点击“课表显示”节点查看课表,如图15所示。

(13)学生点击“已修课程成绩”节点时,便可进入已修课程查看界面,查看成 13

《Java实训》设计报告

绩和学分,如图16所示。

图14 学生选课界面

学生管理系统实训报告java语言

图15 学生课表显示界面

学生管理系统实训报告java语言

14

《Java实训》设计报告

图16 已修课程查看窗体

学生管理系统实训报告java语言

三、项目总结

学生管理系统的完成,对学校的管理带来了方便,也对教师是一个很好的帮助,方便管理,提高了工作的效率。在本系统开发过程中,由于本人是初次开发软件,在知识、经验方面存在不足。另外在整个开发过程中,时间也比较仓促,因此,该系统必然存在一些缺陷和不足。因为对学生的管理整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。另外,由于自身对网络的不熟悉,本应做到C/S客户端/服务器的软件,结果不能达到预期效果,实为遗憾。

虽然该系统存在诸多的不足,但其功能均已经实现,易于日后程序的更新、数据库管理容易、界面友好、操作方便、安全性好。相信本学生管理系统是一套学校在日常管理中必不可少的管理软件。

四、心得体会

通过开发这个软件,我掌握了项目的开发过程,了解了基本知识,巩固了我对Java编程语言和软件工程思想的学习,掌握了简单的数据库操作。尤其掌握了树状列表作为导航的重要性,并且能够运用。同时编写这个程序让我更好的理解了数组、类的运用及事件的监听和获取等功能。我相信我会再在java方面下苦工的,相信自己一定能更好的运用java编程语言的。

15



更多类似范文
┣ JAVA学生成绩管理系统实验报告 23400字
┣ Java实训报告 4200字
┣ 《JAVA程序设计》实训报告 200字
┣ Java学生管理系统 19200字
┣ 更多java学生管理系统实训报告
┗ 搜索类似范文

更多相关推荐:
安徽工业大学——java实验报告11300字

Java课程设计报告学号姓名班级指导教师129074068叶玉虎计122班柯栋梁安徽工业大学计算机学院20xx年12月实验一利用JAVA反射技术分析类结构自己定义的类packagechap05publiccla...

《JAVA程序设计》实验报告5400字

福建师范大学协和学院本科实验报告课程名称JAVA程序设计系别专业班级学号学生姓名20xx年月日实验项目列表JAVA程序设计实验相关说明实验要求1明确实验课是课程的重要组成部分与理论课有着同等地位是培养自身的实验...

Java实训报告封皮500字

JAVA程序设计实训报告课题名称JAVA程序设计专业计算机网络技术班级学号姓名指导教师二00九年3月15日JAVA程序设计实训考核的评定目录一设计题目1二课程设计目的错误未定义书签三课程设计步骤1四课程设计代码...

专栏推荐
大家在关注

地图地图CC