资源描述
JAVA课设学生成绩管理系统
80
2020年4月19日
文档仅供参考
*******************
实践教学
*******************
软件学院
春季学期
Java课程设计 说明书
题 目: 学生成绩管理系统 此处写毕业设计的题目,黑体、小一、加粗
专业班级: 软件3班
姓 名: 刘坤
学 号: 12700331
指导教师: 马维俊
成 绩:
摘 要
学生信息管理系统是学校管理的重要工具,是学校不可或缺的部分。随着在校大学生人数的不断增加,教务系统的数量也不断的上涨,。学校工作繁杂、资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。而且这种传统的方式存在着很多的弊端,如:保密性差、查询不便、效率低,很难维护和更新等。然而,本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理。
关键词 学生成绩管理 数据表 JAVA
目 录
序 言 4
系统分析与设计 5
详细设计 8
系统测试 11
软件使用说明书 15
设计总结 17
参考文献 18
致 谢 19
附录 20
序 言
随着这些年电脑计算机的速度质的提高,成本的下降,IT互联网大众趋势的发展。我们使用电脑的高效率才处理数据信息成为可能。 学生学籍管理系统的出现,正是管理人员与信息数据,计算机的进入互动时代的体现。友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心应手。经过这个系统,能够做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量。毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。
学生成绩管理系统是学校日常信息管理的一个重要内容。随着学校考试次数越来越多,学生成绩管理的工作量也变得越来越大。如果能对学生成绩做系统的管理,就能更好更方便地快速查询或者修改学生的考试成绩,省去了文件管理的繁琐与麻烦,无疑将给学校的管理部门带来很大的方便。
学生成绩管理系统就是把学生的考试成绩实行统一、集中、规范的收集管理,建立现代化、专业化的管理系统。
系统分析与设计
学生成绩管理系统的对象是在校学生,成绩管理系统为学生提供了成绩查询等服务;为学校及老师提供了添加、修改、删除学生成绩等服务。
本系统基本上能够满足当今学校学生成绩信息管理的需求。学生个人信息录入项目齐全、完整、系统。
作为管理员对学生成绩管理系统的需求有:
1. 对学生个人基本信息的浏览
2. 对学生个人信息的修改
3. 对学生个人信息的删除
4. 添加新学生的基本信息
5. 对学生成绩的查询
6. 对学生成绩的修改
7. 对学生成绩的删除
8. 为某个学生添加学生成绩
还有用户登录模块,实现管理员的登陆,如果没有管理权限,则无法使用该软件,也无法实现对学生成绩的各项操作。
系统的初步调查是系统分析阶段的第一项活动,也是系统开发的第一项活动,初步调查的主要目标是从系统分析人中和管理人员的角度看新系统开发有无必要和可能。
可行性研究的目的就是用最小的代价在最短的时间内确定该软件项目是否能够开发,是否值得去开发。实质上就是进行一次简化、压缩了的需求分析、设计过程。可从以下三个方面分析研究每种解决问题的可行性:
a.技术可行性:对项目的功能、性能、限制条件进行分析,确定在现有的资源条件下项目是否能实现。(开发的风险、资源的有效性、技术)
b.社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
c.经济可行性:进行开发成本的估算以及了解得到效益的评估,确定要开发项目是否值得投资开发。对银行业来说,是靠存款贷款之间的差额来生存的,因此要尽可能的拉拢更多的客户使用本行,ATM取款机是为了能让为客户更便捷的服务,从而更具有吸引力。银行角度出发还是非常还是愿意把一部分资金投入到这方面的。
系统详细调查是在可行性研究的基础上进一步对现行系统进行全面、深入的调查和分析,弄清现行系统运行状况,发现其薄弱环节,确保新系统比原系统更有效。详细调查的重点在于对系统的内部情况更详细和具体的了解,从而能够提供在新系统建设时改进或更换的内容。
图(1)功能模块图
明确用户的信息需求,明确新系统的逻辑功能。主要工作是对用户需求进行进一步调查分析,创立新系统的逻辑模型。经过仔细调查得以下功能模块图:录入
学生成绩管理
修改
删除
导出
退出
在该系统中包含三个类public class StudentManager、class DataTable、class Student.
在main 方法里建立主类public class StudentManager的实体实现各种方法的调用。
class DataTable、class Student里是一系列的方法,实现系统里的各种功能。
在该系统的设计开发中用运了后台集成开发工具MyEclipse6.5.
数据管理方面主要应用了文件中的输入输出流,以及流的封装。
下图是三个类之间的调用关系图Class StudentManager
Class DataTable
Class Student
图(2)各类之间的调用关系
详细设计
1、源文件中主要应用的包和类:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
2、程序中所创立的对象
容器的定义:private Container currentContainer
标题及其字体的定义: private String title
private Font headFont = new Font("黑体",Font.PLAIN,18);
数据文件的创立: private File data = new File("data.txt");数据模型的定义:private DataTable dataModel = new DataTable(); 数据表格的创立:
private JTable dataTable = new JTable(dataModel);
欢迎面板的创立:
private JPanel welcomePanel = createWelcomePanel();
添加信息面板的创立:
private JPanel insertPanel = createInsertPanel();
显示信息面板的创立:
private JPanel displayPanel = createDisplayPanel();
修改信息面板的创立:
private JPanel modifyPanel = createModifyPanel()
3、类中定义变量及方法
①主类中方法的定义
/*设置窗体基本信息的方法 */
public StudentManager(){ }
/* 建立菜单并添加到菜单栏中 */
private void createMenu(){ }
/* 如果是要切换到显示信息面板,则同时加载信息 */
private void resetPanel(JPanel panel) { }
/* 创立欢迎面板*/
private JPanel createWelcomePanel(){ }
/* 创立添加信息面板 */
private JPanel createInsertPanel(){ }
/* 创立显示信息面板*/
private JPanel createDisplayPanel(){ }
/* 只显示查询的学号的学生信息*/
private void loadStudentInfo(String no){
/* 创立修改信息面板*/
private JPanel createModifyPanel(){ }
/* 插入数据 */
private boolean insertData(Student student){ }
/* 修改数据 */
private boolean modifyData(Student student){
/* 检查输入的文本信息是否为空 */
private boolean checkString(String text) { }
/* 检查输入的数字信息是否是整数 */
private boolean checkInteger(String text) { }
/* 清空表单信息 */
private void clearForm(JTextField[] textField){ }
/* 获取指定学号的学生信息 */
private Student selectStudent(String no){ }
/* 获取所有学生数据 */
private ArrayList<Student> displayDataList(){ }
/* 入口方法 */
public static void main(String[] args) { }
②class Student类中成员变量及成员方法的定义
private String no;
private String name;
private int asmScore, javaScore, netScore, osScore;
/* 学生信息管理的各个方法 */
public String getNo() { }
public void setNo(String no) { }
public String getName() { }
public void setName(String name) { }
public int getAsmScore() { }
public void setAsmScore(int asmScore) { }
public int getJavaScore() { }
public void setJavaScore(int javaScore) { }
public int getNetScore() { }
public void setNetScore(int netScore) { }
public int getOsScore() { }
public void setOsScore(int osScore) { }
③class DataTable中成员变量及成员方法的定义
String[] label = {"学号","姓名","汇编","Java","网络","系统"};
ArrayList<Student> dataList = new ArrayList<Student>();
/* 更新学生信息对象数组 */
public void update(ArrayList<Student> dataList){ }
/ * 更新学生信息对象 */
public void update(Student student){ }
public int getColumnCount() { }
public int getRowCount() { }
public Object getValueAt(int row, int col) { }
public String getColumnName(int column) { }
4﹑下图是程序中方法调用关系
① class DataTable中的各个函数关系图
函数
相应的get()获取相应的信息
columnCount()
RowCount()
ValueAt()
ColumnName()
图(3)DataTablel类中方法调用图
② class Student中的各个函数关系图
函数
相应的get()函数获得相应信息
相应的set()函数获得相应信息
no
name
AsmScore
JavaScore
NeetScore
OScore
图(4)Student类中方法的调用图
系统测试
1. 下图是学生成绩管理的初始登陆界面实现用户的登陆
图(5)初始界面
2.学生成绩的录入界面
图(6)输入要录入的信息
图(7)提示是否确定录入
图(8)提示用户已录入成功
3.学生成绩列表的显示
图(9)显示所有学生的信息
4. 学生成绩的查询
图(10)显示查询的结果
5. 学生成绩的删除
图(11)提示是否要删除信息
图(12)提示删除成功
图(13)显示删除后的信息列表
软件使用说明书
下图是一个初始的系统登录界面,用户能够经过帮助管理、和帮助按钮实现下拉菜单里的功能使用。
1、管理按钮
用户能够经过单击鼠标来应用此按钮的功能,当单击之后出现的是以下拉菜单显示,其中包含了录入、修改、删除、导出、退出。
① 录入
此功能能够实现管理员对学生成绩的添加,实现学号、姓名、汇编语言、Java语言、计算机网络、操作系统的添加。主要针对于新生信息的添加,还有在校学生信息的完善。
② 修改
此功能能够实现对学生信息的修改。
③ 删除
此功能能够实现对学生信息的删除,用来适应毕业的、离校的学生信息的删除。
④ 导出
此功能主要实现的是将以有的学生信息输出到特定文件便于打印。
⑤ 退出
此功能实现的是提示用户退出该系统。
2、帮助按钮
当用户单击帮助按钮之后出现的是说明和版权。
① 说明
说明主要实现该系统的一个说明。
② 版权
主要是系统的版权声明。为了保护系统开发者的针对于该系统的拥有权,保护自己的合法权益,知识产权。
设计总结
这次课程设计我实现了对学生基本信息,学生成绩以及课程信息的查询,方便用户使用,当然系统也存在一些不足,由于时间上的关系和设计时开发环境工具的选择使用问题,有一部分功能能够更详细化的,而有些功能还为实现,因能力有限,将会在以后的过程中对其扩充改进。
此系统的开发使我获得了一些珍贵的实践经验,也使理论水平得到了应用和强化,提高了我的实际开发能力,使理论和实践相得益彰,相互促进。在完成的过程中也遇到了很多问题,有的是不明白的,经过问老师,问同学,查资料,基本得到解决。从中学到的知识我也是终生受用的。
参考文献
(1)丁振凡.《Java语言实用教程》北京邮电大学出版社
(2)耿祥义.《Java2实用教程》清华大学出版社
(3)赵付青.《Java面向对象程序设计》国防工业出版社.
(4)耿祥义.《Java课程设计》清华大学出版社
致 谢
首先,我们要感谢学校给我们提供了此次课程设计的机会,能让我们在一起学习与研究,让我们有机会对所学的理论知识进行实践。
其次,我们还要特别感谢我们的辅导老师庞淑侠,在她的精心辅导和帮助下,我们的设计才得以顺利完成。对她为我们的设计所提出的宝贵意见表示忠心的感谢!
最后,在程序的编写过程中,也得到了许多同学的宝贵建议,真正体验到团队的力量是多么的强大,在此一并致以诚挚的谢意。
附 录
源程序:package progressbardemo;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
/**
* 学生成绩管理系统
*/
public class StudentManager extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* 当前窗体
*/
private Container currentContainer = this;
/**
* 窗体标题
*/
private String title = "学生成绩管理系统";
/**
* 标题字体
*/
private Font headFont = new Font("黑体",Font.PLAIN,18);
/**
* 数据文件
*/
private File data = new File("data.txt");
/**
* 数据模型
*/
private DataTable dataModel = new DataTable();
/**
* 数据表格
*/
private JTable dataTable = new JTable(dataModel);
/**
* 备注
*/
private JLabel extraLabel = new JLabel();
/**
* 欢迎面板
*/
private JPanel welcomePanel = createWelcomePanel();
/**
* 添加信息面板
*/
private JPanel insertPanel = createInsertPanel();
/**
* 显示信息面板
*/
private JPanel displayPanel = createDisplayPanel();
/**
* 修改信息面板
*/
private JPanel modifyPanel = createModifyPanel();
/**
* 构造器:初始化窗体
*/
public StudentManager(){
/* 设置窗体基本信息 */
this.setLocation(300, 300);
this.setSize(475,450);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setTitle(title);
this.createMenu();
this.add(welcomePanel);
/* 如果数据文件不存在则默认创立一个 */
if(!data.exists()){
try {
new FileWriter(data);
} catch (IOException e) {
}
}
/* 显示窗体 */
this.setVisible(true);
}
/**
* 创立菜单栏
*/
private void createMenu(){
JMenuBar menubar = new JMenuBar();
/* 建立菜单并添加到菜单栏中 */
JMenu manageMenu = new JMenu("管理");
menubar.add(manageMenu);
JMenu helpMenu = new JMenu("帮助");
menubar.add(helpMenu);
/* 建立菜单项并添加到菜单中 */
JMenuItem m_add = new JMenuItem("添加");
JMenuItem m_manage = new JMenuItem("查看");
JMenuItem m_modify = new JMenuItem("修改");
JMenuItem m_export = new JMenuItem("导出");
JMenuItem m_exit = new JMenuItem("退出");
manageMenu.add(m_add);
manageMenu.add(m_modify);
manageMenu.add(m_manage);
manageMenu.addSeparator();
manageMenu.add(m_export);
manageMenu.addSeparator();
manageMenu.add(m_exit);
JMenuItem m_help = new JMenuItem("说明");
JMenuItem m_copy = new JMenuItem("版权");
helpMenu.add(m_help);
helpMenu.addSeparator();
helpMenu.add(m_copy);
/* 为添加菜单项注册监听器,使点击该菜单项时添加学生成绩数据 */
m_add.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
resetPanel(insertPanel);
}
});
/* 为修改菜单项注册监听器,使点击该菜单项时修改学生成绩数据 */
m_modify.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
resetPanel(modifyPanel);
}
});
/* 为管理菜单项注册监听器,使点击该菜单项时显示学生成绩列表 */
m_manage.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
resetPanel(displayPanel);
}
});
/* 为导出菜单项注册监听器,使点击该菜单项时复制现有数据到指定文件 */
m_export.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
/* 弹出保存文件对话框供选取要保存的文件及位置 */
JFileChooser chooser = new JFileChooser();
int choose = chooser.showSaveDialog(currentContainer);
if(choose==JFileChooser.APPROVE_OPTION){
/* 调用导出数据到文件方法 */
boolean flag = exportData(chooser.getSelectedFile());
if(flag){
JOptionPane.showMessageDialog(currentContainer, "数据已经成功导出到指定文件!","导出成功",JOptionPane.PLAIN_MESSAGE);
}else{
JOptionPane.showMessageDialog(currentContainer, "无法导出到指定文件!","导出失败",JOptionPane.ERROR_MESSAGE);
}
}
}
});
/* 为退出菜单项注册监听器,使点击该菜单项时退出程序 */
m_exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
/* 为说明菜单项注册监听器,使点击该菜单项时弹出程序说明窗口 */
m_help.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(currentContainer, "没有任何说明……","帮助信息",JOptionPane.PLAIN_MESSAGE);
}
});
/* 为版权菜单项注册监听器,使点击该菜单项时弹出版权信息窗口 */
m_copy.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(currentContainer, "小组成员:\n" +
"12700331 刘坤","版权信息",JOptionPane.INFORMATION_MESSAGE);
}
});
/* 设置菜单栏 */
this.setJMenuBar(menubar);
}
/**
* 重设面板
*/
private void resetPanel(JPanel panel) {
this.setVisible(false);
this.getContentPane().removeAll();
/* 如果是要切换到显示信息面板,则同时加载信息 */
if(panel==displayPanel){
loadData();
}
this.getContentPane().add(panel);
this.setVisible(true);
}
展开阅读全文