基于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 blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnsupportedLookAndFeelException e) {// TODO Auto-generated catch blocke.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 中

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

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

相关文章

华为OD机试 - 爱吃蟠桃的孙悟空 - 二分查找(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

决策树和集成学习的概念以及部分推导

一、决策树 1、概述 决策树是一种树形结构,树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果 决策树的建立过程: 特征选择:选择有较强分类能力的特征决策树生成…

闯关leetcode——110. Balanced Binary Tree

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/balanced-binary-tree/description/ 内容 Given a binary tree, determine if it is height-balanced. A height-balanced binary tree is a binary tree in which the depth of the two subtrees…

决策树算法新手入门:从基础理论到Python实现

决策树新手入门详细教程 一、数学基础1. 信息熵(1) 基本定义(2) 条件熵(3) 有关定律 2. 信息增益 二、决策树的组成1. 决策节点2. 叶子节点3. 决策树的深度 三、决策树的建立(基于信息增益)—— ID31. 计算根节点的信息熵2. 计算属性的信息增益(1) 职业(…

【升华】python基础包NumPy学习

NumPy是使用Python进行科学计算的基础软件包。除其他外,它包括: 功能强大的N维数组对象。精密广播功能函数。集成 C/C和Fortran 代码的工具。强大的线性代数、傅立叶变换和随机数功能。 # 1、安装包 $ pip install numpy# 2、进入python的交互式界面 $…

蓄电池在线监测:保障电力安全的智能之选---安科瑞 吴雅芳

一、蓄电池在线监测的重要性 随着科技的飞速发展,蓄电池在各个领域的应用日益广泛,从通信、电力到金融、医疗等行业,蓄电池都扮演着至关重要的角色。然而,蓄电池在使用过程中也面临着诸多问题。 蓄电池老化可能导致鼓胀、短路、漏…

React 子组件调用父组件的方法,以及互相传递数据

<script type"text/babel" data-type"module"> import React, { StrictMode, useState } from react; import { createRoot } from react-dom/client;const ParentComponent () > {const [message, setMessage] useState("")//父组件…

【火山引擎】 Chat实践 | 大模型调用实践 | python

目录 一 前期工作 二 Doubao-pro-4k_test实践 一 前期工作 1 已在火山方舟控制台在线推理页面创建了推理接入点 ,接入大语言模型并获取接入点 ID。 2 已参考安装与初始化中的步骤完成 SDK 安装和访问凭证配置

基于SSM的个性化商铺系统【附源码】

基于SSM的个性化商铺系统 效果如下&#xff1a; 用户登录界面 app首页界面 商品信息界面 店铺信息界面 用户功能界面 我的订单界面 后台登录界面 管理员功能界面 用户管理界面 商家管理界面 店铺信息管理界面 商家功能界面 个人中心界面 研究背景 研究背景 科学技术日新月异…

LeetCode-3191 使二进制数组全部等于1的最少操作次数

又来到了今天的每日一题&#xff0c;距离上次更新每日一题得有十天了。 主要原因是这十天的题要么简单到爆&#xff0c;要么难到爆&#xff0c;再要么就是最近学校安排实训&#xff0c;时间比较紧。 废话不多说&#xff0c;来看看今天的题目。 题目很简单&#xff0c;就是给个…

CTF(五)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;web类题目easyphp。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 参考文章原文链接&#xff1a;Web安全攻防世界05 easyphp&#xff08;江苏工匠杯&#xff09;_攻防世界 easyphp-CSDN博客 一&#xff0c;观察页面。…

校验台账生成网络事业调查表的方法

校验台账生成网络事业调查表的方法 一、打开教育事业统计调查表学校&#xff08;机构&#xff09;信息管理标准化台账“采集信息核查辅助工具二、导入本校台账并校验三、调查表统计导出四、完 一、打开教育事业统计调查表学校&#xff08;机构&#xff09;信息管理标准化台账“…

在ESP-IDF环境中如何进行多文件中的数据流转-FreeRTOS实时操作系统_流缓存区“xMessageBuffer”

一、建立三个源文件和对应的头文件 建立文件名&#xff0c;如图所示 图 1-1 二、包含相应的头文件 main.h 图 2-1 mess_send.h mess_rece.h和这个中类似,不明白的大家看我最后面的源码分享 图2-2 三、声明消息缓存区的句柄 大家注意&#xff0c;在main.c中定义的是全局变…

Nodemon 深入解析与使用

目录 1. 基本知识2. Demo3. 高级配置 1. 基本知识 Nodemon 深入解析与使用指南 Nodemon 是一个强大的开发工具&#xff0c;用于监控 Node.js 应用程序中的文件变更&#xff0c;能自动重启应用&#xff0c;极大提高开发效率 基本的优点如下&#xff1a; 自动化&#xff1a;避…

【C语言】循环嵌套:乘法表

循环嵌套&#xff0c;外层循环执行一次&#xff0c;内层循环执行i次。分别控制 在循环的过程中加一层循环。 多层循环属于循环嵌套、嵌套循环 #include <stdio.h> #include <math.h> /* 功能&#xff1a;循环嵌套 乘法表 时间&#xff1a;2024年10月 地点&#xf…

Chrome谷歌浏览器加载ActiveX控件之JT2Go控件

背景 JT2Go是一款西门子公司出品的三维图形轻量化预览解决工具&#xff0c;包含精确3D测量、基本3D剖面、PMI显示和改进的选项过滤器等强大的功能。JT2Go控件是一个标准的ActiveX控件&#xff0c;曾经主要在IE浏览器使用&#xff0c;由于微软禁用IE浏览器&#xff0c;导致JT2Go…

视频画面变糊是平台在做手脚吗?

人气视频博主“影视飓风”一条新发布的视频被全网下架&#xff0c;这两日更是引起轩然大波&#xff0c;不仅频上热门&#xff0c;甚至还有不少数码与视频同行为其抱不平。那么影视飓风到底发布了一条什么视频&#xff1f;又为何会惨被全网下架呢&#xff1f; 10月8日&#xff0…

笔记-static关键字

1.static关键字内存说明 2.访问特点 package com.test.Statics2;import com.test.statics.Student;public class Test {public static void main(String[] args) {// 静态成员中访问非静态成员// method3() // 错误-不能直接调用&#xff0c;需要new对象调用Test test01 new T…

Java 类和对象详解(上 )

个人主页&#xff1a; 鲤鱼王打挺-CSDN博客 Java专栏&#xff1a;https://blog.csdn.net/2401_83779763/category_12801101.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12801101&sharereferPC&sharesource2401_83779763&sharefromfrom_link &…

Vue3的Composition组合式API(computed计算属性、watch监视属性、watchEffect函数)

目录 1. computed计算属性2. watch监视属性2.1 watch监视ref定义的数据2.2 watch监视reactive定义的数据 3. watchEffect函数 1. computed计算属性 与Vue2中的computed配置功能一致。使用示例如下&#xff1a; Student.vue 计算属性的简写只能进行读取&#xff1b;完整写法有…