基于Java实现(PC)大学班级事务管理系统

courseDesign_Java Java 课设

要求

本次设计要求利用 Java 实现 C/S 模式的大学班级内日常事务管理系统(PC 版,应用于校内网有线网络访问,暂不开发移动端),不得依赖现有的建模框架,使用 swings 技术完成如下基本功能需求:
1、 班级公告通知
2、 文匿名传阅投票
3、 文件共享(上传、下载)
4、 即时通信(一对一,多对多)
具体要求为:
窗口化大屏幕界面,有菜单等工具。其中:
设管理员与用户两种使用权限,管理员操作过程有日志记录(管理员也是本班同学,应不止一个)。班级公告通知由管理员(比如班长或班委成员)发布,公示于屏幕中央面板位置,可带有滚动或翻页功能(自选)
文稿匿名传阅投票,用于形成班级的某项共识性意见、敏感性评测、评奖投票等事务。例如:班委起草某项建议初稿,列出同意与不同意选项、或者被投票者名单,或可加建议栏用于补充意见等等。该稿按照一种随机模式(为避免传递路径的可追踪性)在同学中一传一流转,每个收到的同学能够看到稿子的当前状态(票数,已有的补充建议等,避免重复性提议),给出自己的选择与建议之后提交,继续传阅直到全部轮完回到零点,完成意见收集过程。
文件共享:在服务器端设置共享空间,允许班级成员上传下载。
即时通信:独立弹出小窗,基本功能:一对一对话(私聊),发言至班级(群聊),可发图片,即时手绘图。其它功能大家可自由发挥。

实现

一、登录模块

班级数据库设计

班级数据库的设计:以安全为主,所以事先由 super 管理员录入班级所有同学的信息。

NamenumberuserspasswordAdministrator
同学姓名学号昵称密码管理员权限(0 是普通用户 1 是管理员
同学第一次登录需要通过姓名和学号申请昵称和密码。

登录界面
通过昵称和密码登录系统:

注册界面

通过学号和名字进行注册:

数据库设计
由于是班级系统所以将所有用户的姓名学号以及管理权限提前录入到数据库中,确保安全性。一开始用户的昵称和密码都会是空,注册后录入信息。
注册前

注册后
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、班级公告通知

1.权限限制——主界面设计

由于存在两个群体管理员和普通用户,他们的权限不同,给予管理员编辑公告和查看公告的权限,只赋予普通用户查看公告的权限。
所以管理员的主界面有编辑公告的菜单栏:

而普通用户没有编辑公告的菜单栏:

这要确保了对管理员操作的记录和防止同学任意发布公告。

2.日记记录和公告内容储存——数据库设计

数据库分为两部分日记记录和对公告内容的记录。
1)日记记录——每当管理员发布公告时,记录到日志记录中。

2)内容储存——将公告的内容放进数据库

3)日记记录——每当管理员发布公告时,记录到日志记录中。

4)内容储存——将公告的内容放进数据库

3.编辑公告——界面设计

点击确认按钮将公告内容放进数据库。

4.查看公告内容——将数据库内容显示到界面中

默认情况只查看最新的公告,当点击查看所有公告时将所有的公告显示到屏幕上。
最新公告:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
所有公告:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

三、匿名传阅投票

1.设计发起投票

流程:管理员发起投票,写入数据库中,并且记录每个选项的票数。同时将该过程记录到班级日志中。

nameitemoption1option2option3option4number1number2number3number4time
发起投票人投票内容选项一选项二选项三选项四选项一的票数选项二的票数选项三的票数选项四的票数发起投票的时间


发起投票:

2.每个成员投票

过程:每个同学登录后进行投票,不能重复投票,可以添加自己的意见和看之前投票同学的意见当投票结束后系统会给出提示,同学们将无法进行投票,管理员进行票数统计。

重复投票

投票结束
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.数据库设计

三个表分别是:上边提到的 vote,suggesstion 和 votename
vote 的表结构:记录票数和投票内容时间发起人
suggesstion:记录投票人的意见。
votename:记录已投票的同学姓名(对用户不可见,加密,防止追踪)
vote

votename

suggestion

当最后一名同学投完票后,会显示投票结束的提醒。

四、文件共享

1.本地文件上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
功能选择上传
服务端设置新建一个专门用于文件上传的服务器:FileServer 一个用于文件上传的客户端 FileClient
两者通过 Socket 和 DataOutputStream,DataInputStream 交换文件,通过 FileInputStream 和 FileOutputStream 读写文件。
服务器会将文件传到服务器端的桌面——共享文件的空间(第一次上传如果没有该文件夹会创建。)

补充功能:显示文件上传了多少的进度条。
将文件的上传和进度条的显示放到一个线程中去。同时将进度条封装到一个类(JProcessBarDemo)中。

public JProcessBarDemo(){
  	try {
  		UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
  		// 改变风格
  	} catch (ClassNotFoundException e) {
  		// TODO Auto-generated catch block
  		e.printStackTrace();
  	} catch (InstantiationException e) {
  		// TODO Auto-generated catch block
  		e.printStackTrace();
  	} catch (IllegalAccessException e) {
  		// TODO Auto-generated catch block
  		e.printStackTrace();
  	} catch (UnsupportedLookAndFeelException e) {
  		// TODO Auto-generated catch block
  		e.printStackTrace();
  	}
  	setTitle("文件传输进度");		//设置窗体标题
  	
  	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体退出的操作
  	
  	setBounds(600, 600, 350, 100);// 设置窗体的位置和大小
  	
  	setResizable(false);
  	
  	JPanel contentPane = new JPanel();   // 创建内容面板
  	
  	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));// 设置内容面板边框
  	
  	setContentPane(contentPane);// 应用(使用)内容面板
  	
  	contentPane.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));// 设置为流式布局
  	
  	processBar = new JProgressBar();// 创建进度条
  	
  	processBar.setStringPainted(true);// 设置进度条上的字符串显示,false则不能显示
  	
  	processBar.setBackground(Color.GREEN);
  	
  	contentPane.add(processBar);// 向面板添加进度控件
  }

2.文件的下载

文件的下载和文件上传的答题思路相同,不过这次是将服务端的文件下载到本地。
具体过程
先从服务端传过来一个共享区内的 String 类型的文件列表,显示在图像化界面上供用户选择,将用户选择的文件以列表的方式发送给服务端,服务端发送 File 类型的文件列表给用户供用户下载。
同时需要用到 Java 的复选框控件:
JCheckBox(String text) 创建一个最初未选择的复选框与文本。

五、即时通讯

主要逻辑和代码请自行观看,主要是要搞懂网络通信的部分。

1.个人聊天(私聊)

需要登录两个人并且同时打开聊天的窗口:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.群聊

需要参与的人全部进入聊天室然后发送的消息所有人都可以看到:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.附加功能

手绘图视频我放到 video 中了:

六、其余功能

1.日志查看

记录管理员对班级日志的修改和添加(公告和投票)
很好实现就是在管理员每发起一次投票或者发布一次公告都将其记录到数据库中,查看时只需将数据库的内容放到前端展示即可。

记录的数据库结构

nameitemtime
管理员姓名事件时间
2.单人小游戏

贪吃蛇
操作视频在 video 中

五子棋
操作视频在 video 中

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring-boot学习(2)

上次学习截止到拦截器 1.构建RESfun服务 PathVariable通过url路径获取url传递过来的信息 2.MyBatisPlus 第三行的mydb要改为自己的数据库名 第四,五行的账号密码改成自己的 MaooerScan告诉项目自己的这个MyBatisPlus是使用在哪里的,包名 实体类的定义…

中级课程RHCE

RHCE 一、复习RHCSA1.1 系统安装1.1.1 安装虚拟机1.1.2 第一个快照1.1.3 第二个快照vi编辑器1.1.4 看网关网卡 1.2 文件管理1.3 目录管理1.4 用户管理1.5 权限管理1.6 存储管理1.6.1 标准分区管理实验:1.6.2 逻辑卷管理实验:1.6.3 交换空间管理实验 …

一文探索RareShop:首个面向消费者的RWA NFT商品发售平台

作者:Weilin,PANews 本轮牛市中,加密消费级应用正成为一种热门趋势,比如pump.fun和Polymarket等产品已成为C端用户的明星。加密货币正日益渗透到日常消费者的产品、服务和行为中。这意味着加密货币的使用不再局限于投机交易或去中…

跟着深度学习好书实践tensorflow神经网络

前言 2024 年诺贝尔物理学奖授予了约翰霍普菲尔德 (John Hopfield)和图灵奖得主、AI教父杰弗里辛顿(Geoffrey Hinton),"以表彰他们利用人工神经网络进行机器学习的奠基性发现和发明"。 辛顿在接受电话采访…

Github 2024-10-18Java开源项目日报Top9

根据Github Trendings的统计,今日(2024-10-18统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目8非开发语言项目1Python项目1HTML项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:476 天协议类型:OtherStar…

Mysql(4)—数据库索引

一、关于索引 1.1 简介 数据库索引是数据库管理系统中用于提高数据检索效率的数据结构。索引类似于书籍中的索引,它允许用户快速找到数据,而不需要扫描整个表。 ​ ‍ MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高My…

java幂等控制问题

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

游戏逆向基础-跳出游戏线程发包

附加游戏后下断点 bp ws2_32.send send函数断下后,可以看到数据地址每次都一样 可以说明这个游戏是线程发包,所以直接在数据窗口中转到这个地址,然后对这个地址下硬件写入断点。 下了硬件写入断点后可以一层一层往上面跟,确定写…

集合框架07:LinkedList使用

1.视频链接:13.14 LinkedList使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1zD4y1Q7Fw?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p142.LinkedList集合的增删改查操作 package com.yundait.Demo01;im…

汽车行业焕新潮流涌动,联众优车以优质服务响应市场变化

随着消费者环保意识的改变及新能源汽车市场的快速发展,我国新能源汽车领域正掀起一股新的消费热潮,而旧车的合理处置问题也随之成为社会各界关注的焦点。今年4月末,商务部、财政部等七大部委携手颁布了《老旧汽车置换补贴实施指南》(以下简称…

学会组装、调试、维修无人机后从事飞手工作技术优势分析

学会组装、调试、维修无人机后从事飞手工作,将带来显著的技术优势,这些优势不仅提升了飞手的综合能力,也增强了其在行业中的竞争力。以下是对这些技术优势的详细分析: 一、深入理解无人机结构与功能 1. 结构认知:通过…

RabbitMQ 作为消息中间件,实现了支付消息的异步发送和接收, 同步和异步相比 响应速度具体比较

在支付场景中,使用 RabbitMQ 实现消息的异步发送和接收与同步处理相比,响应速度和整体系统性能会有显著的不同。以下是同步和异步方式在响应速度上的详细比较: 1. 同步处理方式 在同步模式下,支付消息的处理流程通常是&#xf…

exchange邮件系统ADFS双因素认证技术方案

exchange作为微软公司推出的邮件系统,在企业界有着广泛的应用,通常情况下,exchange为邮箱用户提供的认证方式是基于AD的静态密码认证,虽然微软在AD认证上已经做了大量的安全性优化,但是由于是静态密码方式认证&#xf…

医院信息化与智能化系统(1)

医院信息化与智能化系统(1) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 1、 MySQL准备 创建并初始化user数据库,后续为验证mybatis-plus(后续简称mp) 2、确认idea配置 在新版IDEA中需要…

5.计算机网络_抓包工具wireshark

安装 Linux中安装wireshark: sudo apt-get install wireshark Linux中执行wireshark: sudo wireshark 使用 注意:只有与外网交互的数据才可以被wireshark抓到,本机回环的数据不会被抓到 实验内容: 使用nc命令…

爬虫(反调试)

其实就是一种给页面反爬机制,一般页面用不到。 万能解决反调试方法:

数据结构 -- 排序算法

一 排序 1.1 排序的概念 所谓排序,就是一种使一串数据记录,按照其中的某个或某些关键字的大小,递增或递减地组织起来的操作。 从排序方式上,排序算法一般被分为比较排序和非比较排序。从比较排序的内容上,它一般被分为…

页面局部使用vue等框架其它部分用JQuery进行交互

这个需求是原有django在网页需要定制一个人员签到信息。状态有三种,在岗,下班。好吧两种。但是你想 1,1.这是两次、共四个可能,00, 10,01,11.其中00是在家。10是在岗。01是。不签到只签退&#…

程序员转行方向推荐

对于程序员转行方向的推荐,可以基于当前的技术趋势、市场需求以及程序员的个人技能和兴趣来综合考虑。以下是一些推荐的转行方向: 伴随着社会的发展,网络安全被列为国家安全战略的一部分,因此越来越多的行业开始迫切需要网安人员…

Web Storage:数据储存机制

前言 在HTML5之前,开发人员一般是通过使用Cookie在客户端保存一些简单的信息的。在HTML5发布后,提供了一种新的客户端本地保存数据的方法,那就是Web Storage,它也被分为:LocalStorage和SessionStorage,它允…