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

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

这要确保了对管理员操作的记录和防止同学任意发布公告。
1)日记记录——每当管理员发布公告时,记录到日志记录中。

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

video

发起投票:

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

重复投票

投票结束

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

votename

suggestion

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

功能选择上传
服务端设置新建一个专门用于文件上传的服务器:FileServer 一个用于文件上传的客户端 FileClient
两者通过 Socket 和 DataOutputStream,DataInputStream 交换文件,通过 FileInputStream 和 FileOutputStream 读写文件。
服务器会将文件传到服务器端的桌面——共享文件的空间(第一次上传如果没有该文件夹会创建。)

补充功能:显示文件上传了多少的进度条。
将文件的上传和进度条的显示放到一个线程中去。同时将进度条封装到一个类(JProcessBarDemo)中。
public JProcessBarDemo(){
try {
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
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);
processBar.setBackground(Color.GREEN);
contentPane.add(processBar);
}

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


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




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

记录的数据库结构


-
贪吃蛇
操作视频在 video 中

-
五子棋
操作视频在 video 中

♻️ 资源

大小: 22.4MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87249006