面相对象程序设计

面相对象程序设计包含内容如下

  1. 局域网聊天程序设
  2. 网页浏览器设计
  3. 电子日历记事本的设计

在这里插入图片描述

以其中的一个的报告进行举例
1需求与总体设计 1
1.1需求分析 1
1.2总体设计方案 1
1.2.1系统功能分析以及功能表 1
1.3系统类图的关系以及表之间的联系 2
2详细设计 3
2.1 ManageView类的说明 3
2.2ManageView类的说明 3
2.3LoginManage类的说明 4
2.4ClassManage类的说明 5
2.5Utils类的说明 5
3编码实现 6
3.1MainView类的说明 6
3.2ClassManage类图: 8
3.2.1班级数据库的添加 8
3.2.2班级数据的添加 8
3.2.3班级数据的删除 9
3.2.6班级人员全部数据的显示 10
3.3StuManage类图: 11
3.3.1学生数据的删除: 11
3.3.3学生数据的更新: 11
3.4Utils类图: 12
3.5ManageView类图: 14
3.5.1该项目的功能按钮: 14
3.5.2每个功能的类的使用的说明: 14
3.6LoginManage类图: 15
3.6.1该页面的功能按钮 15
3.6.2然后登录数据传输则通过以下该方法进行判断 16
3.7subRank类图: 27
4系统测试 19
4.1功能测试: 19
4.2测试结果 19

1.1需求分析
设计一种面向对象的系统信息管理,其要求则如下
(1) 设计系统管理:重新登录、退出系统,能够正常进行信息系统的登录,若没有登录的情况下可以进行账号的注册,然后进行数据的存贮
(2) 设计用户管理:密码修改、添加/删除用户,对使用用户来进行更改.
(3) 定义控制类:包括定义添加记录、信息查询、信息修改、信息删除,同时进行学生用户分数和学科等信息的统计
(4) 设计持久类:将持久类的连接包装在一个相关类中,并与逻辑存储相连,实现数据在内存的通讯。
(5) 设计边界类:在这个界面中主要的作用就是用于验证用户名和密码,采用方法是为确定按钮添加监听事件,将信息与持久类比较
(6) 画出系统的功能图、总体结构图、详细类图结构和提交源代码
(7) 可以对于学生用户的信息来进行分数的添加,删除,更改和查看
(8) 对于学生的某一门学科来进行查看成绩的排名,从高到低进程查看
1.2.1系统功能分析以及功能表
经过日常生活所知,我们将该系统大体分为两个部分,当用户登录之后会有以下两个部分分别是“学生信息管理”和“学科成绩管理”其功能的主要如下
(1) 学生信息管理:
该模块的主要的作用是用来对学生信息的输入,我们能够对于学生的个人信息进行增加,删除,修改,查询和全部的输出等功能
(2) 学科成绩管理:
只是输入个人信息的功能是不够的,于是我们来进行学科成绩查询,这这个功能模块中我们能够进行成绩的添加,删除,修改,以及成绩的排名

图1-1系统功能模块
在这里插入图片描述
2.1 ManageView类的说明
首先ManageView类是我们这个系统的主页面,所以可以对其具有代表性的讲述其主要的功能还怎样通过Manage去调用其他所有的功能。
类名 MainView Public
接口 addActionListener Public
方法
register.addActionListener()

confirm.addActionListener()
Public
表2-1MainView类的处理
2.1.1-成员变量
Welcome // 欢迎的页面
Username // 用户名
Usernametext // 获取用户名内容
Passwordtext //获取密码
2.1.2-使用的方法
register.addActionListener() //来进行监听是否进行注册
confirm.addActionListener()//点击登录,方法中进行判断
2.2ManageView类的说明
这个类的作用是进入那个登录成功的页面其中包含了很多功能,不仅是由学生用户的增删改查还有教室用户之间的成绩的添加,下表式对其说明
类名 ManageView Public
接口 addActionListener Public
方法
register.addActionListener()

confirm.addActionListener()

delete.addActionListener()

update.addActionListener()

query.addActionListener()

queryall.addActionListener()

insertclass.addActionListener()

Public

表2-2ManageView类的处理
2.2.1-成员变量
Insert // 添加学生信息
delete // 删除学生信息
update // 信息修改
queryall //进行查询
insertclass // 添加班级
subjectrank //学科信息排名
2.2.2-使用的方法
insert.addActionListener() //添加数据
confirm.addActionListener()//点击确认
delete.addActionListener() //学生成绩的删除
update.addActionListener()//进行修改数据
query.addActionListener() //进行查询学生数据
insertclass.addActionListener()//添加班级
2.3LoginManage类的说明
我在设置LoginManage的定义中其中他主要的作用是起到了登录用户的时候数据的验证,将页面获取的值传入到数据库中然后使用SQL语句去判断是否存在数据库还有就是实现了数据库的增删改查功能,功能如下
类名 LoginManagew Public
方法
addLogin()

deleteLogin()

Loginquery()

UpdateLogin()

CheckLogin()
Public
表2-3LoginManage类的处理
2.3.1-使用的方法
addLogin() //添加用户
deleteLogin()//删除用户
Loginquery()//用户查询
UpdateLogin()//用户信息进行更改
CheckLogin()//验证登录
2.4ClassManage类的说明
由于我们使用的数据库的数据的处理,所以我们也要将一些数据存到数据库,那么班级的数据库管理就显得很重要,我们在班级数据库中实现了一些用户的特定化管理如表2-4所示

类名 ClassManage Public
方法
InsertClass()

updateclass()

deleteclass()

subRank()

queryall()
Public
表2-4ClassManage类的处理
2.4.1-使用的方法
InsertClass() //添加班级
updateclass() //修改班级
deleteclass() //删除班级
subRank() //学科排名
queryall() //查询所有数据
2.5Utils类的说明
这个是连接数据库操作,在此感觉有必要说明一下util的功能
类名 ClassManage Public
方法
getConnect()

checkLogin()
Public
表2-5Utils类的处理
2.5.1-使用的方法
getConnect() //连接数据库
checkLogin() //用户的登录

3编码实现

3.1MainView类的说明
在我们的MainView类中我们实现的则是一些接口的调用,也就是我们在这里相当于一个入口,同时进入该页面之后我们会有一些操作,通过这些操作,我们实现一些事件的监听然后进入不同的功能和进行数据的处理,则代码如下:
3.1.1关于MainView所需要的资源文件中
package view;
import service.StuManage; //启动学生管理的服务
import service.LoginManage; //用户登录功能
import utils.Utils; //连接数据库
import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;//使用数据监听,进行交互操作
import java.util.HashMap;
import java.util.Map;
3.1.2进入首页面显示:
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
JLabel welcome=new JLabel(“欢迎来到学生信息管理系统”);
JLabel username=new JLabel(“账号:”);
JLabel password=new JLabel(“密码:”);
JTextField usernametext=new JTextField(14);
JPasswordField passwordField=new JPasswordField(14);
JButton confirm=new JButton(“确认”);
JButton exit=new JButton(“退出”);
JButton register=new JButton(“注册”);
public MainView() {
this.setTitle(“学生信息管理系统”);
this.setSize(800, 500);
this.setLocation(400,400); //显示坐标
this.setLayout(new GridLayout(4, 2,10,10));
this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
p4.add(welcome);
p1.add(username);
p1.add(usernametext);
p2.add(password);
p2.add(passwordField);
3.3StuManage类图:
关于学生数据的设定则是使用数据库来进行存储学生数据的添加删除和修改
3.3.1学生数据的删除:
连接数据库然后输入然后又前方框的数据的获取在此来执行sql语句
public class StuManage {
public static void insertStudata(String name,String gender,String id) throws Exception{
Connection connection=Utils.getConnection();
// System.out.println(“1222”);
String sql=“insert into stu(name,gender,id) values(?,?,?)”; //使用占位符
PreparedStatement preparedStatement= connection.prepareStatement(sql);
preparedStatement.setString(1,name);//对应前边的占位符进行sql数据的使用
preparedStatement.setString(2,gender);
preparedStatement.setString(3,id);
int i=preparedStatement.executeUpdate();
Utils.Close(preparedStatement,connection);
}
3.3.2学生数据的删除:
public static void deleteStudata(String id)throws Exception{
Connection connection=Utils.getConnection();
String sql=“delete from stu where id=?”;
PreparedStatement preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,id);
int i=preparedStatement.executeUpdate();
Utils.Close(preparedStatement,connection);
}
3.3.3学生数据的更新:
public static void updateStudata(String name,String gender,String id,String oldid)throws Exception{
Connection connection=Utils.getConnection();
// String sql=“update stu set name=?,gender=?,id=? where id=?”;
String sql=“update stu set name=?,gender=?,id=? where id=?”;
PreparedStatement preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,name);
preparedStatement.setString(2,gender);
preparedStatement.setString(3,id);
preparedStatement.setString(4,oldid);
int i=preparedStatement.executeUpdate();
Utils.Close(preparedStatement,connection);
}
}
3.4Utils类图:
Utils类图中主要是是进行数据库的连接还有就是来进行我数据库登录的验证
3.4.1该项目数据库的连接:
public class Utils {
public static final String DRIVER = “com.mysql.cj.jdbc.Driver”;
public static final String url = “jdbc:mysql://localhost:3306/myjavaclassdesign?characterEncoding=utf8”; //连接到本都的数据库名
public static final String username = “root”;
public static final String password = “123456”; //输入数据库的密码
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void Close(Statement statement, Connection connection) { //关闭数据库
Close(null, statement, connection);
}
}
3.4.2该项目数据库的连接:

展示图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果对报告或者是代码感兴趣请后台私信我

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vuex的actions返回结果类型是promise及actions方法互相调用

this.$store.dispatch(‘logout’)返回的结果是Promise类型的 调用成功的情况下,返回状态为fulfilled,值为undefined。 所以可以直接进行.then操作: this.$store.dispatch(logout).then((result) > {console.log(result); });因为 Vuex …

ARM day1练习 求1~100内的和

题目要求:用ARM汇编语言实现1~100之间之和(5050 0x13BA) .text 声明以下内容是文本段的内容 .global _start .global声明_start标签是一个全局标签_start:mov r1,#0x0 r1 summov r2,#0x1 r2 ifun: 加法函数cmp r2,#100 r2中的值和100作比较add…

理解CNN模型如何学习

深度学习模型常常被认为是不可解释的。但是人们正在探索不同的技术来解释这些模型内发生了什么。对于图像,由卷积神经网络学习的特征是可解释的。我们将探索两种流行的技术来理解卷积神经网络。 可视化中间层的输出 可视化中间层的输出将有助于我们理解输入图像如何…

JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式

在 JupyterLab 中,可以使用 LaTeX 语法生成复杂的数学公式。JupyterLab 内置对 LaTeX 的支持,使得我们可以方便地在 notebook 中编写和展示数学公式。以下是详细的步骤和示例。 1. 使用 LaTeX 生成数学公式 LaTeX 是一种专门用于排版数学公式的语言。J…

Stable Diffusion 插件安装与推荐,助力你的AI绘图

在上一篇文章我们安装了Stable Diffusion ,这篇文章我们来安装Stable Diffusion的插件 Stable Diffusion的插件是绘画中重要的一环,好的插件可以让你的绘画更加得心应手 中英双语插件 为什么要安装中英双语插件呢,不能只安装中文插件吗&…

安卓应用开发学习:获取导航卫星信息

一、引言 我昨天写了《安卓应用开发学习:获取经纬度及地理位置描述信息》日志,今天再接再厉,记录一下跟着《Android App 开发进阶与项目实战》一书,实现获取导航卫星信息,并在手机上显示的功能的情况。先上实现后的在…

Redis的持久化方式和注意点

redis持久篇 两种持久化技术: AOF日志和RDB快照 Redis默认会开启RBD快照 AOF:持久化只会记录写操作命令。 是一种日志,写入到文件,有相应的格式文本 就是 Redis 里的AOF(Append Only File)持久化功能,注意只会记录写操作命令…

决定马萨诸塞州版图的关键历史事件

决定马萨诸塞州版图的关键历史事件: 1. 早期探索与*民定居:17世纪初,英国清教徒为寻求宗教自由,乘坐“五月花号”到达新大陆,并于1620年在现在的普利茅斯建立了第一个永久性英国*民地。随后,更多的英国*民…

LKD-Net: Large Kernel Convolution Network for Single Image Dehazing

LKD-Net:用于单幅图像去噪的大型核卷积网络 摘要 基于深度卷积神经网络(CNN)的单幅图像去噪方法已经取得了很大的成功。以往的方法致力于通过增加网络的深度和宽度来提高网络的性能。目前的方法侧重于增加卷积核的大小,以受益于更大的接受野来增强其性能…

昇思25天学习打卡营第1天|新手上路

这里写自定义目录标题 打卡昇思MindSpore扫盲快速入门 打卡 昇思MindSpore扫盲 第一节基本是一个mindspore的科普扫盲。大概介绍一通mindspore的一些架构,feature,以及其对比于其他同类框架的优势。简单扫读了一遍大概有点印象直接跳过。 快速入门 这…

Vue 3 中处理文件上传和响应式更新

Vue 3 中处理文件上传和响应式更新 一、前言1.创建文件上传组件2.解释代码3.在主应用中使用文件上传组件4.总结 一、前言 在现代 web 开发中,文件上传是一个常见需求。本文将详细介绍如何在 Vue 3 中处理文件上传,并确保上传后的文件列表能够响应式更新…

如何把图片转换成pdf格式?图片转PDF方法分享

如何把图片转换成pdf格式?图片转换为PDF格式的重要性不言而喻。PDF文件不仅能够在各种操作系统和设备上保持一致的显示效果,还能确保图片内容的清晰度和质量不受损害。此外,PDF格式支持加密和权限设置,可以保护图片内容不被轻易篡…

FireFox 编译指南2024 Windows10篇-环境准备(一)

1. 引言 在开源浏览器项目中,Firefox因其高性能和灵活性而备受开发者青睐。为了在本地环境中编译和定制Firefox,开发者需要做好充分的环境准备工作。这不仅是编译成功的基础,也是后续调试、优化和二次开发的关键步骤。 编译Firefox是一个复…

深入剖析Tomcat(十二) 详解StandardContext

StandardContext是Context容器的一个标准实现,一般情况下,Tomcat都是使用StandardContext类来创建Context容器。前面讲过,Context容器代表了一个Web应用,Tomcat本身支持部署多个应用,相应的每个应用都会有一个Standard…

实用软件下载:ABBYY Finereader 15最新安装包及详细安装教程

数据表明FineReader PDF提供实用、简易的工具,将纸质文档和PDF结合起来,提高了数字工作场所的效率。我们都知道 即时背景识别:使不可搜索的PDF能够在工作中立即使用。值得一提的是文档转换更精准:OCR技术,它提高了PDF转换、布局保…

基于STM32的简易计算器proteus仿真设计(仿真+程序+设计报告+讲解视频)

基于STM32的简易计算器proteus仿真设计 讲解视频1.主要功能2. 仿真3. 程序4. 设计报告5. 资料清单&下载链接 基于STM32的简易计算器proteus仿真设计(仿真程序设计报告讲解视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 …

深入JVM:详解JIT即时编译器

文章目录 深入JVM:详解JIT即时编译器一、序言二、基础概念1、何为JIT即时编译2、热点代码 三、HotSpot内置的即时编译器1、C1编译器2、C2编译器3、分层编译3.1 协作流程 四、常见JIT优化技术1、方法内联2、逃逸分析(1)同步锁消除(…

数据结构:栈和队列详解

栈 栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进后出LIFO(Last In First Out)的原则。大家可以理解为…

Day60 代码随想录打卡|回溯算法篇---组合

题目(leecode T77): 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 方法:本题最直观的解法是使用暴力for循环遍历法,根据k的大小定for循环的嵌套次数&…

Posix消息队列使用总结

Posix在线文档: The Single UNIX Specification, Version 2 (opengroup.org) Linux系统中提供了两种不同接口的消息队列: POSIX消息队列。POSIX为可移植的操作系统接口。System V消息队列。System V 是 AT&T 的第一个商业UNIX版本(UNIX System III)的…