javaswing 学生成绩管理系统

获取文件,源代码和数据和文档。有需要的可以自取。

阿里云盘分享icon-default.png?t=N7T8https://www.alipan.com/s/iqn497Twq6i

下面是文档

Java+SQL实训报告

题    目:  学生成绩管理系统                       

                                       

学    院:    信息工程学院             

专    业:  计算机科学与技术                   

学生姓名:      

学    号:    

2024年     06月    29 日

目    录

1、 背景    3

2、 定义    3

3、 系统分析... 4

3.1 系统的需求分析... 4

3.2 性能要求... 4

3.3 功能需求... 4

3.4 业务流程分析... 5

4、 系统设计... 7

4.1 系统体系结构设计.. 7

4.2 系统模块功能设计.. 8

4.3 数据库设计... 9

5、 详细设计... 12

5.1 登录模块... 12

5.2 注册模块... 13

5.3 找回密码模块... 13

5.4 首页模块... 14

5.5 添加模块... 15

5.6 删除模块... 16

5.7 修改模块... 17

5.8 查询模块... 18

6、 系统实现... 19

6.1 登录模块... 19

6.2 注册模块... 21

6.3 找回密码模块... 23

6.4 添加模块... 24

6.5 删除模块... 26

6.6 修改模块... 27

6.7 查询模块... 29

7、 系统测试... 30

7.1 测试结果... 30

8、 总结    31

9、 参考文献... 32

  1. 背景

随着信息技术的迅猛发展,计算机技术在学校管理领域的应用日益广泛,极大地推动了教育管理模式的创新与变革。在这样的背景下,学生成绩管理系统应运而生,成为学校日常管理工作中不可或缺的一部分。

传统的成绩管理方式,如手工记录、纸质档案等,存在着诸多局限性。一方面,它们难以适应大量学生数据的处理需求,效率低下且容易出错;另一方面,它们无法提供及时、准确的数据分析和统计,使得教学管理和决策缺乏科学依据。

学生成绩管理系统的出现,正是为了解决这些问题。通过采用数据库技术,该系统能够高效地存储、读取、维护学生成绩数据,并支持多种查询和分析功能,帮助学校实现成绩的信息化管理。

首先,学生成绩管理系统能够大幅提高数据处理的效率。系统能够自动完成成绩的录入、计算、排名等任务,减少了人工操作的繁琐和错误,使得教师和管理人员能够更专注于教学管理和学生指导。

其次,学生成绩管理系统能够提供及时、准确的数据分析和统计。系统可以根据需要生成各种报表和图表,直观地展示学生的成绩分布、变化趋势等信息,为教学管理和决策提供有力支持。

此外,学生成绩管理系统还具有高度的灵活性和可扩展性。系统可以根据学校的实际需求进行定制开发,满足个性化管理需求。同时,随着学校规模的扩大和管理需求的增加,系统也能够进行扩展和升级,确保持续满足学校的需求。

总之,学生成绩管理系统的出现,为学校管理带来了革命性的变革。它不仅能够提高数据处理的效率,还能够提供及时、准确的数据分析和统计,为教学管理和决策提供有力支持。未来,随着技术的不断进步和应用场景的拓展,学生成绩管理系统将在学校管理中发挥更加重要的作用。

  1. 定义

"学生成绩管理系统"是一种基于集中统一规划的数据库数据管理新模式,利用java Swing、MySQL数据库和code等工具编制的管理软件。该系统旨在实现学校对学生成绩的高效管理,包括成绩的录入、查询、统计分析等操作,并具备实时监控、预警等功能,以确保学生成绩管理的准确性、便捷性和可靠性。该系统通过对学生成绩数据的全面管理,旨在提高教学管理效率,为教育决策提供数据支持,同时帮助学生更好地了解自己的学习状况。整个系统的分析、设计过程旨在实现一个完整、高效、用户友好的学生成绩管理平台。

  1. 系统分析
    1. 系统的需求分析

在当今快速发展的教育环境中,学生人数的不断增加和教育管理需求的日益提高,使得传统的手动成绩管理方式逐渐显露出其局限性和不足。传统的纸质记录和手动计算不仅效率低下,而且容易出错,无法满足现代学校对学生成绩管理的全面、高效、准确要求。

因此,为了顺应教育信息化的发展趋势,实现学生成绩的数字化、精细化管理,本项目致力于开发一个先进、实用的学生成绩管理系统。该系统将充分利用现代信息技术手段,通过软件化的方式,对学生成绩进行集中、统一、规范的管理,以提高管理效率,降低人为错误,为学校教育管理提供有力支持。

    1. 性能要求

为了保证系统能够长期、安全、稳定、可靠、高效的运行,学生成绩管理系统应该满足以下的性能需求:

1.系统的简易性

界面要简洁明了,用户易于操作,window服务器程序利于维护。

2.系统的可扩展性

学生成绩管理系统在开发过程中,应该充分考虑后期可扩展,以满足不断增长的用户需求和管理需求。

3.快速响应

学生的信息的流动处理数据量非常大,并且在不断增长,为保证良好的服务效果,系统的响应需达到秒级,以实现实时响应的要求。保证操作人员不会因为速度问题而影响工作效率。

    1. 功能需求

(1)管理员:

超级管理员拥有唯一的用户名和密码,并具备对学生成绩管理系统进行全面管理的权限,包括对学生成绩信息的增删查改以及对整个系统的维护。

(2)登录模块:

管理员通过输入正确的用户名和密码登录系统。登录后,管理员可以执行学生成绩信息的添加、修改、查询和删除操作。

(3)管理员信息管理模块:

管理员基本信息录入功能:管理员可以录入个人的基本信息。

基本信息修改功能:管理员可以修改自己的基本信息。

信息查询功能:管理员可以通过过滤器查看自己的修改记录和系统的操作日志。

(4)教师管理模块:

教师录入功能:教师可以录入所教学的学生成绩。

基本信息修改功能:教师可以修改自己的基本信息和所教学的学生信息。

信息查询功能:教师可以通过过滤器查看自己的修改记录和系统的操作日志。

(5)学生成绩管理模块:

录入成绩功能:管理员可以录入学生的课程成绩,支持手动录入和批量导入。

成绩查询功能:管理员可以按照不同的条件(如学生姓名、学号、课程名称、学期等)查询学生的成绩信息。

成绩管理功能:管理员可以对学生的成绩进行统计分析,如计算平均分、最高分、最低分等,并可以生成相应的报表。

(6)搜索功能:

管理员可以通过选择学生姓名或课程名称等条件进行搜索,以准确显示学生的成绩信息或特定课程在某一时间段内的成绩分布情况。

(7) 修改、打印和删除操作:

根据实际需求,管理员可以对已录入的成绩信息进行修改、打印或删除操作。

    1. 业务流程分析


本系统主要涉及的业务:学生查看成绩信息、学生修改个人信息、管理员查看成绩信息和增删改查信息,教师所教学的学生增删改,分学期显示。

图 1‑1学生查看成绩信息


图 1‑2学生修改个人信息


图 1‑3管理员的增删改查信息

图 1‑4 教师用户的增删改查信息

  1. 系统设计
    1. 系统体系结构设计

本系统的库存管理信息系统直接连接数据库操作,数据库安装在网络中的主机上,体系结构如下图:

图 2‑1系统体系结构图

    1. 系统模块功能设计

根据需求分析,将系统分为六大模块:登录验证模块、系统管理模块、用户管理模块、增加管理模块、删除管理模块、修改管理模块、查询管理模块,系统模块架构入下图

MySQL

库存管理信息系统

显示器 纯色填充

库存管理信息系统

图 2‑2系统模块架构图

1、用户管理模块

管理员注册:管理员的用户名、密码和密保。

用户登录:学生通过输入用户名(自己的学号)和密码(默认:123456)进行身份验证,选择用户,登录系统。

管理员登录:管理员通过输入用户名和密码进行身份验证,选择管理员,登录系统。

2、学生信息管理模块

学生信息录入:管理员负责录入学生的基本信息,如学号、姓名、性别、班级等。

学生信息查询与修改:学生本人均可查询学生的基本信息,管理员还有权限修改学生信息(在必要时)。

3、课程管理模块

课程信息录入:管理员负责录入学校开设的各门课程信息,包括课程名称、编号、教师、授课时间等。

课程信息查询与修改:管理员均可查询课程信息,管理员还有权限修改课程信息。

4、成绩录入模块

教师登录后,可以录入相应的成绩信息,教师可以修改已录入的成绩,但只能操作所教学的学生。

5、成绩查询模块

学生可以查询自己所有课程的成绩,管理员可查询全部学生成绩信息,支持多条件筛选和统计。

6、系统设置模块

支持修改个人信息等设置,提供系统帮助文档和常见问题解答,方便用户快速上手。

    1. 数据库设计
      1.  数据库概念设计

通过系统功能设计,本系统的主要实体有:用户名、密码、学号、名字、课程成绩等,下面给出概念结构设计得E-R图如图2-3所示。

图 2‑3 E-R

      1.  数据库逻辑设计

通过ER图,可以分析得到如下的数据表:

(1)用户表:用户名(学号)、密码、id、密保。

(2)管理员表:用户名、密码、id、密码。

(3)教师表:用户名、密码、课号。

(4)学生信息表:id、学生姓名、电话号码、学号、政治面貌、(课程)Java、(课程)python、(课程)MySQL、(课程)HTML、出生日期。

      1.  数据库表结构设计

该系统使用MySQL数据库,其中主要用到三张数据表.

表1 学生信息表(my_address_book)

名称

数据名

数据类型

ID

Id

Int

姓名

Name

Varchar(128)

性别

sex

Varchar(128)

电话号码

telephone

Varchar(128)

学号

Number

Varchar(150)

出生日期

birthday

datetime(30)

政治面貌

Note

Varchar(254)

(课程)HTML

html

double(128)

(课程)java

Java

double(128)

(课程)python

Python

double(128)

(课程)mysql

Mysql

double(128)

表2 管理员信息表(user)

名称

数据名

数据类型

ID

ID

Int

用户名

Username

Varchar(7)

密码               

Password

Varchar(45)

密保

pwprotection

Varchar(45)

表3 学生用户信息表(user_v)

名称

数据名

数据类型

ID

ID

Int

用户名

Username

Varchar(10)

密码    

Password

Varchar(45)

密保

pwprotection

Varchar(45)

表4 教师用户信息表(teacher)

名称

数据名

数据类型

用户名

Username

Varchar(10)

密码    

Password

Varchar(45)

课号

Kc

Varchar(45)

  1. 详细设计
    1. 登录模块
      1. 界面设计

使用了GroupLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件、JCheckBox组件、JTable组件等,以setFont来改变模块的字体和颜色等。

抬头标识、标题。

用户名输入框,带有占位符和提示文本(如“请输入用户名”)。

密码输入框,通常为加密显示(如显示为点或星号)。

登录按钮,带有标签“登录”。

注册按钮。

忘记密码按钮等。

登录类型复选框等。

自动登录复选框等。

      1. 模块功能逻辑设计

学生点击登录按钮后,系统验证用户名和密码是否匹配。

如果用户名或密码错误,显示相应的错误消息(如“用户名不存在或密码错误”)。

如果“记住我”功能被选中,使用JCheckBox组件机制保持用户的登录下次自动登录状态。

选择用户登录的类型:学生类,管理员类,教师类。

登录成功后,根据用户角色和密码保存到本地,并进入主页面。

图 3‑1

    1. 注册模块
      1. 界面设计

使用了FlowLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件等。

抬头标识、标题。

用户名输入框,带有占位符和提示文本(如“请输入用户名”)。

密码输入框,通常为加密显示(如显示为点或星号)。

确定按钮,带有标签“确定”。

返回登录页面的按钮,带有标签“返回登录”。

      1. 模块功能逻辑设计

在登录页面点击注册时跳转到当前页面,输入相关信息,并点击确认按钮,信息有误时会显示注册失败,注册成功会显示注册成功,并跳转到登录页面。


图 3‑2

    1. 找回密码模块
      1. 界面设计

使用了GridBagLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件、JTable组件等。

密保输入框。

查询按钮,带有标签“点击查询”。

返回按钮,带有标签“返回登录”。

      1. 模块功能逻辑设计

用户点击找回密码按钮,跳转到当前页面,输入相应的密码(默认为学号或用户名或姓名)点击查询会在下面文本框显示相关信息,输入信息有误会出现弹窗提示输入信息有误;点击返回登录按钮会返回登录页面。


图 3‑3

    1. 首页模块
      1. 界面设计

使用了FlowLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件、JCheckBox组件、JTable组件等,以setFont来改变模块的字体和颜色等。

抬头标识、标题。

输入框,带有占位符和提示文本(如“请输入关键字:”)。

查询按钮,带有标签“搜索学生信息”。

复选框,带有标签“学期时间段”。

添加按钮,带有标签“新增学生信息”。

修改按钮,带有标签“修改学生信息”。

删除按钮,带有标签“删除学生信息”。

退出按钮,带有标签“退出系统”。

      1. 模块功能逻辑设计

用户点击登录按钮后,进入当前页面,呈现学生的信息,点击搜索学生信息按钮,显示搜索学生的相关;点击修改信息按钮,会有弹窗显示请选择要修改的学生,弹出修改信息的页面,修改的信息保存可以数据库保存或本地保存;点击添加信息按钮,会弹出添加信息的页面,添加的信息保存可以数据库保存或本地保存;点击删除信息按钮,会有弹窗显示如:请选择要删除的学生或删除成功;以学期显示信息;点击退出系统按钮,关闭程序。


图 3‑4

    1. 添加模块
      1. 界面设计

使用了FlowLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件、JCheckBox组件、JTable组件等。

抬头标识。

输入框,带有占位符和提示文本(如“姓名:”)。

复选框,性别的标识,男或女。

输入框,带有占位符和提示文本(如“请输入关键字:”)。

输入框,带有占位符和提示文本(如“学号:”)。

输入框,带有占位符和提示文本(如“生日:”)。

输入框,带有占位符和提示文本(如“电话:”)。

输入框,带有占位符和提示文本(如“政治面貌:”)。

输入框,带有占位符和提示文本(如“课程成绩:”)。

保存按钮,带有标签“数据库保存”。

保存按钮,带有标签“文件保存”。

      1. 模块功能逻辑设计

用户点击新增信息的按钮,弹出当前页面,输入相关数据后,可以数据库保存或本地保存。

图 3‑5

    1. 删除模块
      1. 界面设计

使使用了FlowLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件、JCheckBox组件、JTable组件等。

      1. 模块功能逻辑设计

用户点击删除按钮时触发函数会显示请选择要删除的学生,选择了会显示删除成功等

图 3‑6

    1. 修改模块
      1. 界面设计

使用了FlowLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件、JCheckBox组件、JTable组件等。

抬头标识。

列表触发模块(教师修改数据)。

输入框,带有占位符和提示文本(如“姓名:”)。

复选框,性别的标识,男或女。

输入框,带有占位符和提示文本(如“请输入关键字:”)。

输入框,带有占位符和提示文本(如“学号:”)。

输入框,带有占位符和提示文本(如“生日:”)。

输入框,带有占位符和提示文本(如“电话:”)。

输入框,带有占位符和提示文本(如“政治面貌:”)。

输入框,带有占位符和提示文本(如“课程成绩:”)。

保存按钮,带有标签“数据库保存”。

保存按钮,带有标签“文件保存”。

      1. 模块功能逻辑设计


用户点击登录按钮后会弹出小窗口,输入要修改的数据,输入的数据合理则修改成功并关闭小窗口或在列表模块直接修改数据,反之修改失败,修改功能结束。

图 3‑7

    1. 查询模块
      1. 界面设计

使用了FlowLayout布局管理器, 使用到setTitle的标题、JButton组件、JLabel组件、JCheckBox组件、JTable组件等,以setFont来改变模块的字体和颜色等。

抬头标识、标题。

输入框,带有占位符和提示文本(如“请输入关键字:”)。

查询按钮,带有标签“搜索学生信息”。

学期按钮,带有标签“按学期分类”。

添加按钮,带有标签“新增学生信息”。                          

修改按钮,带有标签“修改学生信息”。

删除按钮,带有标签“删除学生信息”。

退出按钮,带有标签“退出系统”。

      1. 模块功能逻辑设计


用户点击登录按钮后,进入系统首页,输入学生的姓名为搜索索引,显示区域会显示相关学生的信息。

图 3‑8

  1. 系统实现
    1. 登录模块
      1. 软件界面

通过JFrame创建仓库并使用GroupLayout来是可视化,并添加标题组件、文本组件按钮组件、复选框组件等,连接MySQL获取数据来验证登录信息。


显示登录的是抬头表、成绩管理系统是标题文本、用户名和密码是标题文本、用户名输入区和密码输入区是输入文本、注册、找回密码和登录是按钮组件、复选框等。

图 4‑1

      1. 代码

功能关键代码讲解如下:

readTxt sds = new readTxt();注释:来调用读取本地的用户信息。

GroupLayout布局管理器。

name = new JFrame();注释:创建窗口。

name.setTitle注释:来显示抬头标。

JLabel来实现标题显示等。

comboBox组件 注释:这个事件来实现复选框赋值的属性。

JCheckBox组件 注释:来实现自动登录的相关逻辑。

new GroupLayout(name.getContentPane())注释:来实现具体的组件位置布局。

if ("ture".equals(sds.getuser_enableCheckBox_get()))注释:判断功能的运行去向。

注释:自动登录的计时器来实现自动登录功能。

                    Timer timer = new Timer(2000, new ActionListener() {

                                  public void actionPerformed(ActionEvent e) { 

                                         login_Butenon();                            }            });

                           timer.setRepeats(false); // 设置Timer不重复

                           timer.start();}

new ImageIcon(ImageIO.read(new File))注释:来实现获取图片的属性。

new Connect()通过调用MySQL连接信息来获取MySQL的登录核验信息。

saveUserInfo()注释:通过调用形式来把数据存储到本地

loginButton.addActionListener(new ActionListener())注释:登录事件

registerButton.addActionListener(new ActionListener())注释:注册事件

recoverPasswordButton.addActionListener(new ActionListener())注释:找回密码事件

    核心代码:

private void login_Butenon() {

             String username = usernameField.getText();

             String password = new String(passwordField.getPassword());

             System.out.println(": " + username + ", : " + password);

             Connect dbconn = new Connect();// 实例化Connect对象

             Statement stmt = null;

             ResultSet rs = null;

             int userjishiq = 0;

             try {

                    stmt = dbconn.getConnection().createStatement();

                    if (ture.equals("fales")) {

                           rs = stmt.executeQuery("select * from user");} else {

                           rs = stmt.executeQuery("select * from user_V");                    }

                    while (rs.next()) {

                           String username1 = rs.getString("username");

                           String username2 = rs.getString("password");

                           if (username.equals(username1)) {

                                  if (password.equals(username2)) {

                                         saveUserInfo(username, password, ture, user_enableCheckBox);// 存储数据0

                                         userjishiq = 1;

                                         if (ture.equals("fales")) {

                                                new indexUser();

                                         } else {

                                                new teacherIndex();                                     }

                                         name.dispose();

                                         break;

                                  } else {

                                         userjishiq = 2;

                                         JOptionPane.showMessageDialog(null, "密码不正确!!!", "提示", 2);                                        break;                         }                          }                     }

                    if (userjishiq == 0) {                             JOptionPane.showMessageDialog(null, "用户名不存在", "提示", JOptionPane.ERROR_MESSAGE);                   }                   rs.close();     } catch (SQLException e1) {               e1.printStackTrace();} finally {                   dbconn.dispose();             }     }

    1. 注册模块
      1. 软件界面

使用FlowLayout来是可视化,并添加标题组件、文本组件按钮组件等,连接MySQL获取数据来验证信息。

显示注册信息的是抬头表、用户名、密保和密码是标题文本、用户名输入区、密保输入区和密码输入区是输入文本、确定和返回登录是按钮组件等。

图 4‑2

      1. 代码

功能关键代码讲解如下:

FlowLayout布局管理器。

setLayout(new FlowLayout());注释:创建窗口。

Toolkit.getDefaultToolkit().getScreenSize();注释:设置在窗口剧中。

DriverManager.getConnection(url, user, passwordDB);注释:与数据库获取连接。

insertUser()注释:通过调用形式来把数据存储到数据库。

insertButton.addActionListener(new ActionListener()注释:确定事件。

recoverButton1.addActionListener(new ActionListener()注释:返回登录事件。

    核心代码:

String username = usernameField.getText(); 

String password = new String(passwordField.getPassword());

String pwprotection = pwprotection2.getText();

String url = "jdbc:mysql://localhost:3306/user"; // 替换为你的数据库URL 

String user = "root"; // 替换为你的数据库用户名 

String passwordDB = "123456"; // 替换为你的数据库密码

try (Connection conn = DriverManager.getConnection(url, user, passwordDB); 

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO user (username, password,pwprotection) VALUES (?, ?, ?)")) {

pstmt.setString(1, username); 

pstmt.setString(2, password); // 注意:在实际应用中,密码应该被加密后存储 

pstmt.setString(3, pwprotection);   

int rowsInserted = pstmt.executeUpdate(); 

if (rowsInserted > 0) { 

JOptionPane.showMessageDialog(this, "注册成功");

new loginUser();dispose();}

} catch (SQLException ex) {JOptionPane.showMessageDialog(this, "用户名已存在"); 

ex.printStackTrace(); }}

    1. 找回密码模块
      1. 软件界面

使用GridBagLayout来是可视化,并添加标题组件、文本组件按钮组件等,连接MySQL获取数据来验证信息。


显示找回密码的是抬头表、密保输入区是输入文本、文本内容显示区、点击查询和返回登录是按钮组件等。

图 4‑3

      1. 代码

功能关键代码讲解如下:

super("密码找回");注释:抬头表。

GridBagLayout注释:布局管理器。

.setLayout(new GridBagLayout()); 注释:创建窗口。

name.setTitle注释:来显示抬头标。

JLabel来实现标题显示等。

new GridBagConstraints();注释:来实现具体的组件位置布局。

new Connect()注释:通过调用形式来把数据取出显示在文本框内。

recoverButton.addActionListener(new ActionListener()注释:查询事件。

recoverButton1.addActionListener(new ActionListener()注释:返回登录事件。

       核心代码:

String pwProtection = pwProtectionField.getText();

Connect dbconn = new Connect();//实例化Connect对象

Statement stmt = null;ResultSet rs = null;

try {stmt = dbconn.getConnection().createStatement();

String sql = "SELECT username, password FROM user WHERE pwProtection ='"+pwProtection+"'";

rs = stmt.executeQuery(sql);

System.out.println(sql);

if(rs.next()){

String username = rs.getString("username");

String password = rs.getString("password");

System.out.print(", username: " + username);

System.out.println(", password: " + password);

userInfoArea.setText("Username: "+username+"\nPassword: "+password+"\nOther Fields:"+pwProtection+"\n");}else{

JOptionPane.showMessageDialog(passwordReset.this, "你输入的信息有误", "错误提示", JOptionPane.INFORMATION_MESSAGE); }

    1. 添加模块
      1. 软件界面

使用FlowLayout来是可视化,并添加标题组件、文本组件按钮组件等,连接MySQL获取数据信息。


显示新建学生信息的是抬头表、姓名、性别和学号是标题文本、姓名输入区、性别输入区和学号输入区是输入文本、数据库和本地文件的按钮组件等。

图 4‑4

      1. 代码

功能关键代码讲解如下:

new MyDialog("新建学生信息", new HashMap<String, String>());注释:通过按钮逻辑来触发这个调用并传参。

GroupLayout布局管理器。

InsertPane.setVisible(true);注释:显示小窗口

info.get()注释:来获取数组的对应数据。

JLabel来实现标题显示等。

comboBox组件 注释:这个事件来实现复选框赋值的属性。

dbinsertPerson()注释:通过事件形式来把数据存储到数据库。

new Connect()通过调用MySQL连接信息来获取MySQL的信息。

fileinsertPerson()注释:通过事件形式来把数据存储到本地。

actionPerformed(ActionEvent e)注释:用if逻辑e值noBtn本地保存。

actionPerformed(ActionEvent e)注释:用if逻辑e值yesBtn数据库保存。

核心代码

数据库保存:

String sql = "insert into my_address_book(name, sex, telephone, number, birthday, note,HTML,java,python,MySQL)value(?,?,?,?,?,?,?,?,?,?)";try {

PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);

pstmt.setString(1, nameText.getText());

……

pstmt.setString(10, MYSQLText.getText());

System.err.println(pstmt);

pstmt.executeUpdate();

本地文件保存:

try {

StringBuffer sbf=new StringBuffer();

sbf.append(nameText.getText()).append(" ")

.append((String) sex.getSelectedItem()).append(" ")

……

.append(noteText.getText());

File file = new File("information.txt");

FileOutputStream fos = null;

if(!file.exists()){

file.createNewFile();//如果文件不存在,就创建该文件

fos = new FileOutputStream(file);//首次写入获取

}else{fos = new FileOutputStream(file,true); }//如果文件已存在,就在文件末尾追加写

OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");//指定UTF-8格式

osw.write(sbf.toString());

osw.write("\r\n");

osw.close();}

    1. 删除模块
      1. 软件界面

这个功能模块是在首页操作要选择对应的数据删除。

图 4‑5

      1. 代码

功能关键代码讲解如下:

new MyDialog("删除学生信息", new HashMap<String, String>());注释:通过按钮逻辑来触发这个调用并传参。

info.get(“id”)注释:来获取数组的对应数据。

JLabel来实现标题显示等。

new Connect()通过调用MySQL连接信息来获取MySQL的信息。

deletePerson()这个模块来对数据库信息操作。

核心代码

String sql = "delete from my_address_book where id=?";

try {

PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);

pstmt.setString(1, id);

pstmt.executeUpdate();}

    1. 修改模块
      1. 软件界面

通过JFrame创建仓库并使用GroupLayout来是可视化,并添加标题组件、文本组件按钮组件、复选框组件等,连接MySQL获取数据信息。


显示修改学生信息的是抬头表、用户名和密码是标题文本、用户名输入区和密码输入区是输入文本、数据库保存和本地保存是按钮组件、复选框等。

图 4‑6

      1. 代码

功能关键代码讲解如下:

new MyDialog("修改学生信息", new HashMap<String, String>());注释:通过按钮逻辑来触发这个调用并传参。

GroupLayout布局管理器。

InsertPane.setVisible(true);注释:显示小窗口。

info.get(“id”)注释:来获取数组的对应数据。

JLabel来实现标题显示等。

pstmt.executeUpdate(); 注释:通过它达到修改数据的目的。

dbinsertPerson()注释:通过事件形式来把数据存储到数据库。

fileinsertPerson()注释:通过事件形式来把数据存储到本地。

actionPerformed(ActionEvent e)注释:用if逻辑e值noBtn本地保存。

actionPerformed(ActionEvent e)注释:用if逻辑e值yesBtn数据库保。

核心代码

String sql = "update my_address_book set name=?,sex=?,telephone=?,number=?,

birthday=?,note=?,HTML=?,java=?,python=?,MySQL=? where id=?";

try {

PreparedStatement pstmt = dbconn.getConnection().prepareStatement(sql);

pstmt.setString(1, nameText.getText());

pstmt.setString(2, (String) sex.getSelectedItem());

……

pstmt.setString(10, MYSQLText.getText());

pstmt.setString(11, id);

pstmt.executeUpdate();}

    1. 查询模块
      1. 软件界面

通过JFrame创建仓库并使用GroupLayout来是可视化,并添加标题组件、文本组件和按钮组件等,连接MySQL获取数据信息。


显示学生成绩信息管理系统的抬头表、当前用户的名称、关键字搜索、学期显示和相关数据会显示在下面区域。

图 4‑7

      1. 代码

功能关键代码讲解如下:

searchInfo(String key);注释:接受搜索条件

new Connect()注释:调用数据库进行具体的操作

info.add(row);注释:查询出来的数据添加到显示区域(重新)

new DefaultTableModel(indexUser.info, indexUser.column);注释:显示区域

核心代码:

stmt = dbconn.getConnection().createStatement();

String sql = "select * from my_address_book where name like'%" + key + "%'";

rs = stmt.executeQuery(sql);

info.clear();

while (rs.next()) {

Vector<String> row = new Vector<String>();// 创建自增长数组

row.add(rs.getString(1));// 向Vector中添加值

row.add(rs.getString(2));

……..

row.add(rs.getString(11));

info.add(row);}

  1. 系统测试
    1. 测试结果

测试用例设计

表 2‑1总体功能

测试标识符

测试内容

实际测试工作内容与预先设计的内容的差别

系统登陆测试

检查用户是否合理、合法

信息测试

修改、添加、删除信息

信息查询测试

姓名为索引查询信息

管理员信息测试

添加、查询、修改、删除信息

学生

查询成绩信息

教师

增删改查学期时间段

系统登陆测试总表:

表 2‑2登录

输入

输出

用户名

密码

权限

admin

管理员

登录失败,输入错误

admin

管理员

登录失败,输入错误

admin

123456

管理员

登录成功,进入模块

123456

学生

登录失败,输入错误

2161200711

学生

登录失败,输入错误

2161200711

123456

学生

登录成功,进入模块

123456

教师

登录失败,输入错误

21612

教师

登录失败,输入错误

21612

123456

教师

登录成功,进入模块

  • 51
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值