java程序设计学生成绩信息管理系统.docx
- 文档编号:23009263
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:77
- 大小:882.58KB
java程序设计学生成绩信息管理系统.docx
《java程序设计学生成绩信息管理系统.docx》由会员分享,可在线阅读,更多相关《java程序设计学生成绩信息管理系统.docx(77页珍藏版)》请在冰豆网上搜索。
java程序设计学生成绩信息管理系统
JAVA程序设计——学生信息管理系统
题 目 学生信息管理系统
学 院 软件学院
专 业
班 别
学 号
姓 名 XXX
2015年6月10日
2
一、课程题目
设计一个简易的学生成绩管理系统。
用于记录学生的各科成绩,以及实现常用的统计功能。
(1)记录学生的基本信息,如姓名、学号、专业、班级等
(2)记录各科成绩
(3)实现常用的统计功能,如:
单科成绩排名、总分排名、统计成绩高于/低于某一临界值的学生、统计单科/总分平均值……
(4)使用图形方式显示某些数据,如直方图显示各分数段的人数、绘制各科分数分布曲线……(可选)
(5)必须使用数据库。
其它功能可自行扩展。
二、题目分析与设计
1. 注明所使用的开发环境(Eclipse、NetBeans,JBuilder)。
开发环境:
Eclipse
2. 论述题目的需求。
给出软件功能架构图。
题目需求:
通过数据库记录学生成绩和信息,并通过数据库读取这些信息,实现单个学生查找、全体学生查找等功能和单科排名、平均分、总分排名、平均分等功能。
其他扩展功能:
登录界面,保存到txt文件。
软件功能架构图:
其中,删除、修改、单个查找功能均通过学号定位学生
3. 论述界面设计过程,指出其设计上的创意及组件的布局策略。
界面设计过程:
主要界面包括登录界面,主功能界面,各个子功能界面。
登录界面包括3个面板,每个面板放入相应的标签、文本框、按钮等组件,登录界面采用3行1列的网格布局;主功能界面包括菜单栏和若干面板,面板中放入标签或若干按钮,菜单栏的菜单项与按钮相对应,主功能界面采用7行1列的网格布局;学生管理类子功能(增加学生、删除学生、修改学生、单个查找)界面采用6行2列的网格布局,每个网格均放入一个面板,每个面板放入标签、文本框、组合框、按钮等组件,以达到较友好的界面效果;学生查找类子功能界面(查看全体、按年级查询、按班别查询、按专业查询)和成绩管理类子功能(单科排名、总分排名、合格学生、挂科学生)界面采用边界布局,界面的上部放入一个面板,面板放入相应的按钮或组合框,中部放入一个文本域。
所有错误信息等信息均通过对话框的形式显示相应信息。
4. 论述程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述。
不得以粘贴代码的方式代替设计部分。
类的设计过程:
本程序包括19个类文件,每个类文件只含有一个类,分别是包含main方法的主类 Main,实现登录功能的类 Login, 实现各种功能选择功能的类 Function, 实现数据库连接的类DataBaseCreate,实现学生信息编辑功能类StudentEdit, 执行增加学生功能的类AddStudent,执行删除学生功能的类DeleteStudent,执行修改学生功能的类 UpdateStudent,执行单个查询功能的类IndexOfSingle, (由于AddStudent,DeleteStudent,UpdateStudent,IndexOfSingle界面和操作基本相同,所以上4类均继承StudentEdit) 实现条件查找和成绩管理功能的类IndexOrManage, 执行查询全体功能的类LookAllStudents,执行按年级查询功能的类IndexOfGrade,执行按班别查询功能的类IndexOfClass,执行按专业查询的类IndexOfMajor,执行单科排名功能的类 SubjectScoreRanking,执行总分排名功能的类TotalScoreRanking,执行查找单科及格学生功能的类PassStudents,执行查找单科不及格学生功能的类NotPassStudents,(由于LookAllStudents,IndexOfGrade,IndexOfClass,IndexOfMajor,SubjectScoreRanking,TotalScoreRanking,PassStudents,NotPassStudents,界面和操作基本相同,所以上8类均继承IndexOrManage)执行将文本域内容保存到TXT文件的类TxtSave。
以上19个类,除了Main类以外,均包含一个构造方法,有些还包含actionPerformed(e)方法。
对象的协作过程:
三、测试分析
小四字体,1.5倍行距。
对程序的测试情况作出分析。
至少包括但不限于需要具备以下内容:
1. 阐述扩展包(仅限于SUN官方发布)的部署过程,并将扩展包附于光盘源程序中;给出数据库的详细配置说明。
导入扩展包
mysql-connector-java-5.1.25-bin.jar
数据库配置说明:
数据库mySQL
数据库服务器localhost
端口3306
用户名root
密码空
数据库名studentmanagement
Student表
2. 典型测试数据的构建,并且给出测试数据的预计结果
原数据:
测试数据:
添加学生
10005张兰女2012 2 信息工程19930506 82 74 58
删除学生 10000
修改学生 10001
李嘉女2011 4 网络工程 19920304 54 85 86.5
单个查找 10003
查询全体
按年级查找2011级
按班别查找1班
按专业查找软件工程
单科排名并显示平均分语文
总分排名并显示平均分
单科及格学生英语
单科不及格学生语文
保存Txt总分
预测结果:
均成功完成操作
3. 本程序的测试情况,与预计结果作对比
测试情况:
成功完成相关操作
添加学生
10005张兰女2012 2 信息工程19930506 82 74 58
删除学生 10000
修改学生 10001
李嘉女2011 4 网络工程 19920304 54 85 86.5
单个查找 10003 20001
查询全体
按年级查找2011级
按班别查找1班
按专业查找软件工程
单科排名并显示平均分语文
总分排名并显示平均分
单科及格学生英语
单科不及格学生语文
保存Txt总分排名
附录:
源代码
小四字体,1.5倍行距。
只需列出程序中所有的包及相关的文件。
不需要打印源代码。
程序中所有的包及相关的文件:
代码:
import javax.swing.JFrame;
public class Main{
/**
* @param args
*/
public static void main(String[]args){
Loginlogin=new Login();
login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//登录界面
public class Login extends JFrame implements ActionListener{
JButton b1=new JButton("登录");
JButton b2=new JButton("退出");
JLabel la1=new JLabel("用户名");
JLabel la2=new JLabel("密 码");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JTextField name=new JTextField(15);
JPasswordField pw=new JPasswordField(15);
public Login(){
setTitle("学生成绩管理系统");
getContentPane().setLayout(new GridLayout(3,1));
getContentPane().add(p1);
getContentPane().add(p2);
getContentPane().add(p3);
p1.add(la1);
p1.add(name);
p2.add(la2);
p2.add(pw);
p3.add(b1);
p3.add(b2);
setBounds(500,250,100,100);
pack();
setVisible(true);
pw.setEchoChar('*');
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvente){
if(e.getActionCommand()=="登录"){
Stringpassword=pw.getText();
Stringuser=name.getText();
if(user.equals("admin")&&password.equals("admin")){
Functionfunction=new Function();
function.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(false);
}
else{
JOptionPane.showMessageDialog(null, "用户名或密码错误", "Error",JOptionPane.INFORMATION_MESSAGE);
}
}
else if(e.getActionCommand()=="退出"){
System.exit(0);
}
}
}
import java.sql.*;
//连接数据库类
public class DataBaseCreate{
//连接数据库静态方法,若产生错误,则抛出相应错误信息
public static ConnectiongetConnection()throwsSQLException,java.lang.ClassNotFoundException{
//建立本地数据库连接,编码规则转换为utf-8(正常录入中文)
Stringurl="jdbc:
mysql:
//localhost:
3306/studentmanagement?
useUnicode=true&characterEncoding=utf8";
Class.forName("com.mysql.jdbc.Driver");
StringuserName="root";
Connectioncon=DriverManager.getConnection(url,userName, "");
return con;
}
}
import javax.swing.JFrame;
public class Main{
/**
* @param args
*/
public static void main(String[]args){
Loginlogin=new Login();
login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//主要功能界面
public class Function extends JFrame implements ActionListener{
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p6=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
JPanel p5=new JPanel();
JButton add=new JButton("增加学生");
JButton del=new JButton("删除学生");
JButton update=new JButton("修改学生");
JButton single=new JButton("单个查询");
JButton look=new JButton("查看全体");
JButton b11=new JButton("按年级查找");
JButton b12=new JButton("按班别查找");
JButton b13=new JButton("按专业查找");
JLabel la1=new JLabel("学生管理");
JLabel la2=new JLabel("成绩管理");
JLabel la3=new JLabel("学生查找");
JButton b1=new JButton("单科排名");
JButton b2=new JButton("总分排名");
JButton b3=new JButton("合格学生");
JButton b4=new JButton("挂科学生");
JMenuItem items[][]=new JMenuItem[4][];
JMenuBar bar=new JMenuBar();
JMenu m1=new JMenu("开始");
JMenu m2=new JMenu("学生管理");
JMenu m3=new JMenu("学生查找");
JMenu m4=new JMenu("成绩管理");
//构造方法
public Function(){
setTitle("学生成绩管理系统");
//设计菜单栏
items[0]=new JMenuItem[2];
items[1]=new JMenuItem[4];
items[2]=new JMenuItem[4];
items[3]=new JMenuItem[4];
m1.add(items[0][0]=new JMenuItem("返回"));
m1.add(items[0][1]=new JMenuItem("退出"));
m2.add(items[1][0]=new JMenuItem("增加学生"));
m2.add(items[1][1]=new JMenuItem("删除学生"));
m2.add(items[1][2]=new JMenuItem("修改学生"));
m2.add(items[1][3]=new JMenuItem("单个查询"));
m3.add(items[2][0]=new JMenuItem("查看全体"));
m3.add(items[2][1]=new JMenuItem("按年级查找"));
m3.add(items[2][2]=new JMenuItem("按班别查找"));
m3.add(items[2][3]=new JMenuItem("按专业查找"));
m4.add(items[3][0]=new JMenuItem("单科排名"));
m4.add(items[3][1]=new JMenuItem("总分排名"));
m4.add(items[3][2]=new JMenuItem("合格学生"));
m4.add(items[3][3]=new JMenuItem("挂科学生"));
bar.add(m1);
bar.add(m2);
bar.add(m3);
bar.add(m4);
//设计布局
getContentPane().setLayout(new GridLayout(7,1));
getContentPane().add(bar);
getContentPane().add(p1);
getContentPane().add(p2);
getContentPane().add(p6);
getContentPane().add(p3);
getContentPane().add(p4);
getContentPane().add(p5);
p1.add(la1);
p2.add(add);
p2.add(del);
p2.add(update);
p2.add(single);
p6.add(la3);
p3.add(look);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p4.add(la2);
p5.add(b1);
p5.add(b2);
p5.add(b3);
p5.add(b4);
setBounds(500,250,100,100);
pack();
setVisible(true);
//注册监听器
add.addActionListener(this);
del.addActionListener(this);
update.addActionListener(this);
look.addActionListener(this);
single.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
items[0][0].addActionListener(this);
items[0][1].addActionListener(this);
items[1][0].addActionListener(this);
items[1][1].addActionListener(this);
items[1][2].addActionListener(this);
items[1][3].addActionListener(this);
items[2][0].addActionListener(this);
items[2][1].addActionListener(this);
items[2][2].addActionListener(this);
items[2][3].addActionListener(this);
items[3][0].addActionListener(this);
items[3][1].addActionListener(this);
items[3][2].addActionListener(this);
items[3][3].addActionListener(this);
}
//按钮事件响应,对用对应的类对象
public void actionPerformed(ActionEvente){
if(e.getActionCommand()=="增加学生"){
AddStudent addStudent =new AddStudent();
}
else if(e.getActionCommand()=="删除学生"){
DeleteStudent delStudent=new DeleteStudent();
}
else if(e.getActionCommand()=="修改学生"){
UpdateStudent delStudent=new UpdateStudent();
}
else if(e.getActionCommand()=="单个查询"){
IndexSingle is=new IndexSingle();
}
else if(e.getActionCommand()=="查看全体"){
LookAllStudents look=new LookAllStudents();
}
else if(e.getActionCommand()=="按年级查找"){
IndexOfGrade ig=new IndexOfGrade();
}
else if(e.getActionCommand()=="按班别查找"){
IndexOfClass ic=new IndexOfClass();
}
else if(e.getActionCommand()=="按专业查找"){
IndexOfMajor im=new IndexOfMajor();
}
else if(e.getActionCommand()=="单科排名"){
SubjectScoreRanking subject= new SubjectScoreRanking();
}
else if(e.getActionCommand()=="总分排名"){
TotalScoreRanking subject= new TotalScoreRanking();
}
else if(e.getActionCommand()=="合格学生"){
PassStudents pass=new PassStudents();
}
else if(e.getActionCommand()=="挂科学生"){
NotPassStudents notPass=new NotPassStudents();
}
else if(e.getActionCommand()=="返回"){
setVisible(false);
Loginlogin=new Login();
login.setDefaultCloseO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 程序设计 学生 成绩 信息管理 系统