基于SWING和MyBatis的学生成绩管理系统设计与实现

更新时间:2024-06-16 03:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《java高级开发》课程设计

《Java高级开发》课程设计

题目:基于SWING和MyBatis的学生成绩管理系统设计与实现

学号:2012 姓名:郑莹莹 专业:计算机应用 班级:应用1班

2014年6月20日

1

《java高级开发》课程设计

目录

1. 背景简介 ................................................................................................................................... 2 2.需求分析........................................................................................................................................ 3

2.1 功能需求............................................................................................................................ 3 2.2 性能需求 ............................................................................................................................. 4 2.3 使用技术和开发平台 ........................................................................................................ 5 3.系统设计........................................................................................................................................ 5

3.1 界面设计............................................................................................................................ 5 3.2 功能设计............................................................................................................................ 6 3.3 数据库表设计 .................................................................................................................... 7

3.3.1 E-R图 ....................................................................................................................... 7 3.3.2关系模式 .................................................................................................................. 9 3.3.3 数据库管理系统 ..................................................................................................... 9 3.3.4数据库命名 .............................................................................................................. 9 3.3.5数据库表 .................................................................................................................. 9 3.4 代码设计.......................................................................................................................... 10 4.系统实现与测试 .......................................................................................................................... 14

4.1 功能模块测试 .................................................................................................................. 14 4.2 系统测试截图 .................................................................................................................. 15 5.总结与展望.................................................................................................................................. 18

1. 背景简介

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩进行管理,具有手工管理无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、成本低、效率高等。这些优点能够极大地提高学生选课系统的效率,也是企业、学校的科学化、正规化管理和与世界接轨的重要条件。因此,开发这样一套管理系统已成为很有必要的事情。

2

《java高级开发》课程设计

学生成绩管理系统是一个学校中不可缺少的部分。成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式对课程进行查询、更新等,这种管理方式存在着许多缺点,如:效率低、执行速度慢,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。 JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。使用JAVA语言建立一个课程管理系统,使学生成绩信息管理工作规范化,系统化,程序化,提高信息处理的速度和准确性,能够及时,准确,有效的查询和修改成绩。

2.需求分析

2.1 功能需求

本次设计的学生选课系统是一个面向管理员、学生和教师这三个对象的教务平台。对学生的课程成绩进行录入、修改查询等基本功能。对教师或系统管理人员可以登录系统进行成绩录入等管理,学生只能登录系统进行成绩查询。

学生成绩管理系统的要求是能够管理学生成绩信息,主要涉及到学生的基本信息、成绩信息和学校的授课计划信息的管理。

学生的成绩是需要由人工录入的,因此系统就需要设计

3

《java高级开发》课程设计

一个学生成绩信息录入的窗口来录入期考成绩,并且在这个窗口中放入一个数据窗口来实现录入这方面信息的功能。

系统还要求具有查询期考成绩的功能,因此为了显示查询结果,就要设计一个数据窗口,并将其放在查询期考成绩的窗口中实现查询功能。

由于查询成绩和录入成绩有区别,因此为了更好的实现相应的功能,设计的数据窗口也要不同,分别采用两种风格的数据窗口实现。

系统要求能够录入授课计划和学生基本信息,必须设计录入授课计划窗口和录入学生基本信息窗口来实现相应功能。

由于该系统是学校管理学生成绩信息的系统,因此必须具有一定的保密性,需要特定的人员才可以修改,因此需要设计一个用户登陆的窗口,使具有访问权限的用户才能登录此系统。为了简单化,我们的用户名和用户密码和数据库本身的用户名密码相同。系统的主窗口要能够在用户选中相应操作后,调出相应的窗口来使用户在窗口中完成相应的功能。 2.2 性能需求

一般用户并不具备计算机专业知识,若程序性能有一定的缺陷或可对其隐藏,但一旦异常暴露,对于计算机专业知

4

《java高级开发》课程设计

识较少的用户来说将一发不可收拾。对于一个专业的开发人员来讲,其项目在满足用户提出的功能实现外,首先应保证性能良好。综上所属,本系统的性能需求大致如下:

系统的多数模块(尤其是后台几乎所有的)都有相应的特殊操作,所以在进入模块之前要对用户所具有的权限等用户信息做出严格检测,预防非法操作。

数据库的连接应采用连接池技术,合理、有效的分配、回收资源。系统运行过程中会产生许多异常(其中大多数是预期效果),要有良好的异常处理机制,即要显示界面友好又要体现程序严谨。

学生在查询成绩时,系统设计要充分考虑到线程之间的并发与冲突。

注重系统所需时间与空间上的资源消耗和运行效果。 2.3 使用技术和开发平台

鉴于数据库的选择,本系统仅能在Windows系统上运行,需装有MySQL。在工程中,本系统采用MyEclipse作为开发及测试环境。

3.系统设计

3.1 界面设计

登录界面有账号,密码,管理员账号以字母A开头,教

5

《java高级开发》课程设计

师账号以字母T开头,学生账号以字母S开头,登录账号或密码输入错误会弹出相应的提示对话框。

3.2 功能设计

学生成绩管理系统 登录模块 管理员登录模块 教师登录模块 学生登录模块 学 生 信 息 管 理 模 块 教 师 信 息 管 理 模 块 教 师 密 码 修 改 模 块 教 师 录 入 成 绩 模 块 学 生 密 码 修 改 模 块 学 生 查 询 成 绩 模 块

图3-1 系统功能结构图

各模块功能:

? 学生信息管理模块:管理员用于添加和删除学生信息的模块。

? 教师信息管理模块:管理员用于添加和删除教师信息的模块。

? 教师密码修改模块和学生密码修改模块:管理员添加的用户帐号的初始密码与用户的帐号相同,用户通过密码修改

6

《java高级开发》课程设计

模块可以自己需改密码。

? 教师录入成绩模块:教师可以浏览选修自己课程的学生的信息并且录入该学生的成绩。

? 学生查询成绩模块:通过表格的形式将该学生选择了的课程列出来,如果教师有录入成绩,则可以看到自己的课程成绩。 3.3 数据库表设计 3.3.1 E-R图

性别 姓名 生日 学号 学生管理 数学 年级 班别 数学 语文

图3-2 学生信息E-R图

7

《java高级开发》课程设计

删除学生 修改学生 单个查询 增加学生 学生查找

图3-2 学生管理E-R图

按年级查找 按班别查找 按专业查找 查看全体 学生查找

图3-3 学生查找E-R图

总分排名 合格学生 挂科学生 单科排名 成绩管理

图3-4 成绩管理E-R图

8

《java高级开发》课程设计

3.3.2关系模式

学生信息(学号,姓名,性别,生日,年级,班别,语文,数学,英语,专业)

学生管理(增加学生,删除学生,修改学生,单个查询) 学生查找(查看全体,按年级查找,按班别查找,按专业查找) 成绩管理(单科排名,总分排名,合格学生,各科学生)

3.3.3 数据库管理系统

MySQL

3.3.4数据库命名

studentmanagerment

3.3.5数据库表

Logon(登录帐号密码)

(主要用来保存用户登录信息)

字段名 user password

数据类型 char char 长度 10 10 是否为空 不为空 是否主键 主键 StudentTable1(学生信息表) (主要用来保存成绩信息)

字段名 Num Name

数据类型 Char Char 长度 10 10 9

主键否 主键 是否为空 不为空 不为空 描述 学生学号 学生姓名 《java高级开发》课程设计

Sex Birth Class Grade Major Chinese English Maths Total

Char Datetime char Char Char Float Float Float Float 2 8 16 20 10 10 10 10 10 不为空 学生性别 学生生日 所在班级 学生成绩 主修 语文成绩 英语成绩 数学成绩 总成绩 CourseTable(课程信息表)

字段名 CourseID CourseName Point StuNumber 数据类型 Char Char Char Datetime 长度 16 16 8 4 主键否 主键 是否为空 不为空 不为空 不为空 不为空 描述 课程编号 课程名 学分 选课人数 3.4 代码设计

Login.java

package scoreManagement; 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(){ /*setBak(); //调用背景方法 Container c = getContentPane(); //获取JFrame面板

10

《java高级开发》课程设计

JPanel jp = new JPanel(); //创建个JPanel jp.setOpaque(false); //把JPanel设置为透明 这样就不会遮住后面的背景 这样你就能在JPanel随意加组件了 c.add(jp); setSize(540, 450); setVisible(true);*/ /*JLabel p=new JLabel(); p.setOpaque(true); p.setBackground(Color.red);*/ /*JLabel p=new JLabel(); JLabel l=new JLabel(); Icon icon=new ImageIcon(\ //在此直接创建对象 l.setIcon(icon); l.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight()); p.add(l,new Integer(Integer.MIN_VALUE)); getContentPane().add(p); pack(); //窗口适应组件大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //用来关闭窗口的*/ setVisible(true); 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 setBak(){ ((JPanel)this.getContentPane()).setOpaque(false); ImageIcon img = new ImageIcon(\添加图片 JLabel background = new JLabel(img);this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE)); background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight()); }*/

11

《java高级开发》课程设计

public void actionPerformed(ActionEvent e) { if(e.getActionCommand()==\登录\ String password=pw.getText(); String user=name.getText(); if(user.equals(\ Function function=new Function(); function.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(false); } else{ JOptionPane.showMessageDialog(null, \用户名或密码错误\\JOptionPane.INFORMATION_MESSAGE); } } else if(e.getActionCommand()==\退出\ System.exit(0); } } }

DateBaseCreate.java

package scoreManagement; 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(){ /*setBak(); //调用背景方法 Container c = getContentPane(); //获取JFrame面板

12

《java高级开发》课程设计

JPanel jp = new JPanel(); //创建个JPanel jp.setOpaque(false); //把JPanel设置为透明 这样就不会遮住后面的背景 这样你就能在JPanel随意加组件了 c.add(jp); setSize(540, 450); setVisible(true);*/ /*JLabel p=new JLabel(); p.setOpaque(true); p.setBackground(Color.red);*/ /*JLabel p=new JLabel(); JLabel l=new JLabel(); Icon icon=new ImageIcon(\ //在此直接创建对象 l.setIcon(icon); l.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight()); p.add(l,new Integer(Integer.MIN_VALUE)); getContentPane().add(p); pack(); //窗口适应组件大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //用来关闭窗口的*/ setVisible(true); 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 setBak(){ ((JPanel)this.getContentPane()).setOpaque(false); ImageIcon img = new ImageIcon(\添加图片 JLabel background = new JLabel(img);this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE)); background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight()); }*/

13

《java高级开发》课程设计

public void actionPerformed(ActionEvent e) { if(e.getActionCommand()==\登录\ String password=pw.getText(); String user=name.getText(); if(user.equals(\ Function function=new Function(); function.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(false); } else{ JOptionPane.showMessageDialog(null, \用户名或密码错误\\JOptionPane.INFORMATION_MESSAGE); } } else if(e.getActionCommand()==\退出\ System.exit(0); } } } 4.系统实现与测试

4.1 功能模块测试

由于时间和自身能力所限,我们只进行了功能测试(黑盒测试)。 1) 登陆界面测试

2) 学生信息查询,删除,修改,添加及导入导出功能的测试 3) 课程信息查询,删除,修改,添加及导入导出功能的测试 4) 成绩信息查询,删除,修改,添加及导入导出功能的测试 经过测试本系统基本实现了所要求的功能,能够比较方便的,快捷的完成所执行操作。

14

《java高级开发》课程设计

4.2 系统测试截图

部分截图如下:

图4.1-1 登录页面

图4.1-2 主界面

15

《java高级开发》课程设计

图4.1-3增删改查页面

图4.1-4查看全体成绩页面

16

《java高级开发》课程设计

图4.1-5 按成绩查找页面

17

《java高级开发》课程设计

图4.1-6 按班级查询页面

5.总结与展望

该系统主要实现了学生成绩管理的功能,从需求分析,界面的搭建,到数据库的连接,表格,存储过程和存储过程等的建立,在这段时间的摸索中,我确实学到了很多东西,特别是对以前不太了解的Java Swing组件有了更深刻的了解。比如JTable,对于它的用法我在网上找了很多资料,JTable的建立有各种不同的方法,可以使用DefaultTableModel类来实现;然后再table.setModel(dtm); 或者继承AbstractTableModel类,还有对于如何在JTable中添加Swing组件,原本我是直接新建一个JcheckBox对象直接添加到表格的 单元格里,

18

《java高级开发》课程设计

结果发现只能显示出一串字符串,上网查找后才知道,要用DefaultCellEditor来添加Swing组件,再设置setCellRenderer(new MyTableRenderer()) 这是一个实现了TableCellRenderer接口的JCheckBox。TableCellRenderer可以看做是Swing组件的呈现器,这样Table就会把内容显示绘制交给JCheckBox了。对于数据库,我尽量将对数据库的操作放在存储过程中,这样的抽象和封装使得源程序代码更加容易理解,而且在web应用系统中也可以避免发生不安全的状况,我想这是一个号的程序员应当要养成的习惯,在这次的课程设计中,层次化,模块化,抽象化也是我学到的一个重要的经验,参考一些资料后发现模块化能使程序设计更加简单,设计代码时目标更加明确,效率更高,以前虽然也知道这些道理,但自己真正实施起来却感到无从下手,比如前面的数据库操作和数据库资源配置文件,就是我从书中看来的,这样做的好处是,在程序中操作数据库的时候避免了使用很多try和catch语句,是代码更加简洁,更容易理解,此外需要连接不同的数据库时只要修改数据库的资源配置文件sysConfig.properties就可以了。

本系统的不足之处及其改进:

本系统只是针对学生成绩管理一块的开发,这只是学生信息管理中的一部分,因时间和精力的限制,没有来得及扩及整个学生信息管理的开发。而且在数据库的管理操作方面完成较差部分功能没有完全实现,或不够完善。数据导入格式规定过于严格。

通过这次设计,我学会了与别人配合工作,因为一个人所学的

19

《java高级开发》课程设计

知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使工作做得更为出色。通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力。即将毕业我十分珍惜这次锻炼的机会,我按部就班的完成了自己的设计任务,但由于自己的知识水平有限,仍然存在很多的不足之处,恳请老师多多指教!当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,对于我们来说,是很好的一次锻炼,使我们各方面的能力都有了很大的提高,为我们踏出校门,走上社会增强了能力与自信!

20

本文来源:https://www.bwwdw.com/article/41z3.html

Top