Java程序设计.docx
《Java程序设计.docx》由会员分享,可在线阅读,更多相关《Java程序设计.docx(34页珍藏版)》请在冰豆网上搜索。
Java程序设计
郑州科技学院
《JAVA程序设计》课程设计
题目学生管理系统
学生姓名%?
*%¥
专业班级计算机科学与技术一班
学号201115006
院(系)信息工程学院
指导教师¥%¥@#
完成时间2013年12月20日
目录
1、绪论.....................................1
1.1项目开发背景...............................1
1.2项目开发目标..............................1
1.3项目提出的意义............................1
1.4系统开发所用的技术准备......................2
2、系统需求分析..............................3
2.1系统调查..................................3
2.2系统构架.................................3
2.3用户需求..................................3
2.4系统设计思想...............................4
三、程序编码...............................4
四、总结....................................24
摘要
目前,学校工作繁杂、资料重多,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
根据开发要求,它主要应用于教育系统,完成对日常学生成绩的录入查询更新删除等管理操作,实现学生成绩管理的计算机化。
开发学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理。
本论文叙述了现在高校学生成绩管理的现状以及JAVA语言和一些开源框架的概况。
重点介绍了学生成绩管理系统的实现过程:
包括系统分析、系统调查、数据库设计、功能设计、系统物理配置方案、系统实现、系统测试以及系统功能简介。
关键词:
JSP;J2EE;学生成绩维护系统;MySQL;Hibernate;Struts
1、绪论
1.1项目开发背景
一直以来学生的成绩管理是学校工作中的一项重要内容,我国的大中专院校的学生成绩管理水平普遍不高。
随着办学规模的扩大和招生人数的增加,建立一个成绩维护系统是非常必要的。
普通的成绩管理已不能适应时代的发展,因为它浪费了许多的人力和物力。
在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。
为了提高成绩管理的效率,我选择了学生成绩管理系统作为毕业设计的课题。
本系统在大多数成绩管理系统的基础上,主要增加了教师对成绩的操作,教师改完试卷后不用在往学院的教务处办公室报送成绩,可以直接的把成绩上传到网络上,学生也可以方便快速的查询到自己的成绩,考试后教务管理人员也不必总呆在学院的办公室,他们都不受时间,位置,空间的限制,只要有上网的条件,在家里就可以完成有关成绩的录入,更新,管理,查询和删除。
本系统将会改变以前靠手工管理学生成绩的状况,提高工作效率。
希望能为老师和学校的工作带来便利。
1.2项目开发的目标
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。
为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:
(1)系统应具有实用性、可靠性和适用性,同时注意到先进性。
(2)对各个数据库进行动态管理,防止混乱。
(3)不同用户有不同的查询和修改权限,防止非法查询,非法修改。
(4)能够对查询结果进行分类汇总,实现报表打印和下载。
(5)方便用户的操作,尽量减少用户的操作。
1.3项目提出的意义
随着高校办学规模的扩大和招生人数的增加,学生成绩管理维护是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,介于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。
运用学生成绩管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够节省时间,学生也能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。
而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。
在现代高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。
学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。
对于一个学校而言,管理好学生的成绩,是非常重要的。
因此开发出一套学生成绩管理系统是非常必要的。
1.4系统开发所用的技术准备
1.4.1数据库技术的现状与发展
数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间上都已经趋于成熟,使我们能够方便的使用。
数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志。
MySQL作为一种开放源码数据库,以其简单易用的特点广泛被广大用户采用,MySQL虽然是免费的,但同Oracle,Sybase,Informix,Db2等商业数据库一样,具有数据库系统的通用性:
(1)数据库管理系统。
我们知道,所谓的数据库就是一些结构化的数据的联合体,要提供对这些数据的存取、增加、修改、删除或更加复杂的数据抽取等操作,需要有一个支撑系统,这就是数据库管理系统(DBMS),MySQL完全具有这方面的功能。
(2)关系型数据库管理系统。
在数据库的发展历程中,曾出现过多种不同形式的数据库系统,但关系型数据库管理系统(RDBMS)以其优越性而被广为采用,象现在几种广泛使用的数据库全为关系型数据库。
同样,MySQL也是关系型的数据库系统,支持标准的结构化查询语言(StructuredQueryLanguage)。
(3)开放源码数据库。
同商业性的数据库相比,这是MySQL最大的特点。
MySQL的源码是公开的,这就意味着任何人,只要遵守GPL的规则都可以对MySQL的源码使用、修改以符合自己特殊的需求。
(4)技术特点。
MySQL服务器端是多线程的,为客户端提供了不同的程序接口和链接库,如C、C++、Java、Perl、PHP、Tcl等,也提供了简单的管理工具,如mysqladmin,mysql等。
正因为MySQL的源码是公开的,使得我们有机会从源码级,更深入的了解MySQL。
从这一层面上可以探求、了解MySQL数据库的特性:
良好的内存管理机制,尤其是内存泄漏的管理,通过了Purify的严格测试;支持多种平台;提供多种形式的API,为我们开发工具的选择提供了便利;使用多线程的技术,可充分发挥系统的特点,避免在SMP系统中出现仅使用单CPU的现象;对磁盘表的管理采用B树加密及索引的技术,为我们快速访问数据提供了可能;高性能的内存申请技术;临时表采用在内存中以哈希表实现;提供多种数据类型;支持定长的和变长的纪录;所有的列都有缺省值,为我们的某些“粗心”提供了方便;灵活、安全的权限和密码系统,密码在传输中加密传送,允许主机端验证密码;13)客户端可以通过TCP/IP、Unix套接字、命名管道(NT)连接到MySQL数据库服务器;对多种字符集的完全支持等等许多优点。
MySQL有如此多的特点,又由于其免费的特点,这就给许多的中小应用提供了不错的选择。
尤其是对一些中小企业,无论是从降低成本,还是从性能方面,采用MySQL作为其数据支撑系统,都是一种可行的方案。
但也应当注意,采用MySQL作为应用数据库,就意味着所有的问题都需要自己解决,要承担一定的风险。
1.4.2JAVA语言的概述
Java是一种简单的,面象对象的,分布式的,解释的,键壮的,安全的,结构的,中立的,可移植的,性能很优异的多线程的,动态的语言。
当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。
2、系统需求分析
2.1系统调查
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。
使原本的旧的管理方法越来越不适应现在社会的发展。
许多人还停留在以前的手工操作。
这大大地阻碍了人类经济的发展。
为了适应现代社会人们高度强烈的时间观念,我对河南科技学院新科学院的原有的学生成绩管理系统进行了调查研究,并对一些教师和学生进行了调查,听取他们对学生成绩管理的一些建议和要求以及他们对这方面的一些需求,根据我所具有的知识,决定开发的这个系统采用当前较为流行的编程软件Java作为实现语言,以数据库MySql作为系统的后台操作.
2.2系统构架
系统采用的是B/S结构,即浏览器和服务器架构,示意图如图2-1所示。
浏览器端提供用户操作界面,接受用户输入的各种操作信息,向服务器发出各种操作命令或数据请求,并接收执行操作命令后返回的数据结果,根据业务逻辑进行相关的运算,向用户显示相应的信息。
服务器端接收浏览器端的数据或命令请求,并请求数据库服务器执行数据库操作得到相应的数据集,对数据集进行相应的处理,然后将数据集或处理后的数据集返回给浏览器端。
2.3用户需求
2.3.1学生的需求
(1)在第一时间查询自己所有的成绩(自己的平均成绩,总成绩)
(2)查询某一科成绩,该科平均成绩,所在名次,最高成绩,最低成绩
(3)打印和下载自己的成绩
2.3.2老师的需求
(1)查询某一学生的所有成绩(平均成绩,总成绩)
(2)查询某一学生某一科成绩,该科平均成绩,所在名次,最高成绩,最低成绩
(3)查询某一班级的成绩(所有成绩,某一学期的所有成绩,某一学期的某一科目的所有成绩)
(4)对某一科成绩进行统计(及格人数,及格率,不及格人数,不及格率,优秀人数,优秀率,某一分数段的人数)
(5)录入成绩和修改更新成绩(自己所教授的那一科成绩)
(6)打印和下载所查询或统计出的结果
2.3.3管理员的需求
(1)查询某一学生的所有成绩(平均成绩,总成绩)
(2)查询某一学生某一科成绩,该科平均成绩,所在名次,最高成绩,最低成绩
(3)查询某一班级的成绩(所有成绩,某一学期的所有成绩,某一学期的某一科目的所有成绩)
(4)对某一科成绩进行统计(及格人数,及格率,不及格人数,不及格率,优秀人数,优秀率,某一分数段的人数)
(5)录入成绩和修改成绩
(6)打印和下载所查询或统计出的结果
(7)用户管理
(8)数据库管理
2.4系统设计思想
(1)采用现有的资源,先进的管理系统开发方案,充分利用学校现有的资源,减少开发中的时间和财力、物力、提高系统开发的水平和应用效果。
(2)系统就满足学校的需求,例如学生成绩的录入、查询、更新,学生成绩录入与排名等等。
(3)系统具备数据库维护功能,及时根据用户需求进行数据添加、删除、修改等操作
3、程序编码
(1)登陆界面
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.sql.*;
publicclasssystemsextendsJFrameimplementsActionListener
{
staticsystemsss;
JPanelpanel=newJPanel();
JLabellabel1=newJLabel("输入姓名:
");
JTextFieldname=newJTextField();
JLabellabel2=newJLabel("密码:
");
JPasswordFieldpwd=newJPasswordField();
JButtonEnter=newJButton("登录");
JButtonExit=newJButton("退出");
Stringurl="D:
\\Systems\\title.jpg";
ButtonGroupbgp=newButtonGroup();
JRadioButtonstu=newJRadioButton("学生");
JRadioButtontch=newJRadioButton("教师");
publicsystems()
{
super("登录系统");
this.setResizable(false);
JLabelimg=newJLabel(newImageIcon(url));
img.setBounds(0,0,500,100);
panel.add(img);
stu.setBounds(165,210,70,20);
tch.setBounds(265,210,70,20);
bgp.add(stu);
bgp.add(tch);
panel.add(stu);
panel.add(tch);
Enter.setBounds(150,250,80,20);
Exit.setBounds(270,250,80,20);
Enter.addActionListener(this);
Exit.addActionListener(this);
panel.add(Enter);
panel.add(Exit);
panel.setLayout(null);
this.add(panel);
label1.setBounds(135,130,100,25);
panel.add(label1);
name.setBounds(265,130,100,25);
panel.add(name);
label2.setBounds(135,165,100,25);
panel.add(label2);
pwd.setBounds(265,165,100,25);
panel.add(pwd);
this.setBounds(100,100,500,350);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==Enter)
{
Stringusername,password;
username=name.getText();
password=pwd.getText();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundExceptionce)
{
JOptionPane.showMessageDialog(ss,ce.getMessage());
}
if(stu.isSelected())
{
try
{
Connectioncon=DriverManager.getConnection("jdbc:
odbc:
sysdb","sa","");
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("select*fromSTU");
while(rs.next())
{
if((rs.getString("ID").equals(username))&&(rs.getString("Pwd").equals(password)))
{
JOptionPane.showMessageDialog(ss,"登陆成功");
Studentsstu=newStudents();
}
else
{
JOptionPane.showMessageDialog(ss,"登录失败");
}
}
rs.close();
stmt.close();
}
catch(SQLExceptionse)
{
JOptionPane.showMessageDialog(ss,se.getMessage());
}
}
elseif(tch.isSelected())
{
try
{
Connectioncon=DriverManager.getConnection("jdbc:
odbc:
systchdb","sa","");
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("select*fromTCH");
while(rs.next())
{
if((rs.getString("ID").equals(username))&&(rs.getString("Pwd").equals(password)))
{
JOptionPane.showMessageDialog(ss,"登陆成功");
}
else
{
JOptionPane.showMessageDialog(ss,"登录失败");
}
}
}
catch(SQLExceptionse)
{
JOptionPane.showMessageDialog(ss,se.getMessage());
}
}
}
else
{
System.exit(0);
}
}
publicstaticvoidmain(String[]args)
{
systemssys=newsystems();
}
}
(2)学生界面
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassStudentsextendsJFrameimplementsActionListener
{
JMenuBarjmb=newJMenuBar();
JMenuMessage=newJMenu("信息");
JMenuScore=newJMenu("成绩");
JMenuItemItem1=newJMenuItem("插入");
JMenuItemItem2=newJMenuItem("查询");
JMenuItemItem3=newJMenuItem("查询");
publicStudents()
{
super("学生界面");
this.setSize(500,400);
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(jmb);
jmb.add(Message);
jmb.add(Score);
Message.add(Item1);
Message.add(Item2);
Score.add(Item3);
Item1.addActionListener(this);
Item2.addActionListener(this);
Item3.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==Item1)
{
AddMsgad=newAddMsg();
}
elseif(e.getSource()==Item2)
{
Serchser=newSerch();
}
else
{
Scoreso=newScore();
}
}
publicstaticvoidmain(String[]args)
{
Studentsstu=newStudents();
}
}
(3)添加学生信息
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.sql.*;
publicclassAddMsgextendsJFrameimplementsActionListener
{
staticAddMsgs;
/*添加学生信息控件*/
JPaneljpl=newJPanel();
JLabellabel1=newJLabel("添加基本信息",JLabel.CENTER);
JLabellabel2=newJLabel("学号:
",JLabel.CENTER);
JLabellabel3=newJLabel("姓名:
",JLabel.CENTER);
JLabellabel4=newJLabel("性别:
",JLabel.CENTER);
JLabellabel5=newJLabel("班级:
",JLabel.CENTER);
JLabellabel6=newJLabel("学院:
",JLabel.CENTER);
JTextFieldnum=newJTextField
(2);
JTextFieldnam=newJTextField(4);
ButtonGroupbgp=newButtonGroup();
JRadioButtonman=newJRadioB