您的位置:首页 > 其它

软件工程课设源码分析(一)

2015-02-04 17:58 197 查看

软件工程课设源码分析(一)

开始

假期在家,不想看书,不想敲代码,想出去玩,但是又因为去了几天网吧,可能是网吧电脑屏幕太大导致脸上过敏,于是只能待在家里被中药汤困住了。想想天天睡觉也很无聊,那就以一个相对比较熟悉的作为寒假第一件事情吧。

功能描述

之前做的东西比较简陋,功能也比较简单。说白了就是一个在局域网内部,一个教师端,数十个学生端,相互搜索建立连接,一对多进行收发文件的功能。具体功能如下:

a) 教师模块

1) 考试信息设置

教师通过教师模块设置考试的基本信息,包括课程号、课程名称、任课教师、考试时间

2) 上传考试资料

教师使用文件选择对话框选择要上传的考试资料。

3) 准备考试

教师填写考试信息和考试资料路径后点击准备考试,教师模块开始不间断地在局域网内广播考试信息,等待学生模块连接,学生模块连接后向其发送基本考试息。

4) 参加考试学生人数显示

显示已经和教师模块建立通信的学生模块的数量。

5) 准备考试

教师将考试信息设置完毕,并将考试资料上传完毕之后,向学生模块广播信号发送教师模块IP和端口号。

6) 取消考试

教师点击取消考试后,教师模块停止广播,停止发送IP和端口号,并向所有已连接学生模块发送取消考试信号,考试设置的所有信息清空。

7) 考试开始

教师点击考试开始后,教师模块向所有建立连接的学生模块发送考试开始信号,并向所有建立连接的学生模块发送考试资料。

8) 手动设置考试结束

教师可以选择提前结束考试,选择后,教师模块向所有建立连接的学生模块发送考试结束信号。

9) 已上传考试成果学生人数显示

显示已经上传考试结果的学生的数量。

10) 打开提交的考试成果目录

教师可以查看学生提交的考试成果。每场考试有一个特定的目录用于学生提交考试成果,教师可以点击查看考试成果直接定位到该目录,以查看考试成果。

11) 查看当前考生

教师模块可以查看当前参加当前考试的学生信息,包括学生姓名、学生学号、学生模块所在电脑的IP。

12) 查看历史记录

查看曾在本机考试的所有记录(包括参加考试学生记录和考试记录)。

13) 清空历史记录

清空曾在本机考试的所有记录(包括参加考试学生记录和考试记录)。

14) 考试时间提醒

考试开始后,教师模块根据考试时长倒计时,若没有提前结束考试,则倒计时结束后自动结束考试。

b) 学生模块

1) 登录

学生进入登录界面,输入姓名、学号后进行格式验证,若正确,进入搜索界面;若不正确,则不能进入。

2) 搜索教师模块

学生登录后,开启线程尝试等待接收广播,若接受到来自教师模块的广播,则开启新线程与教师模块建立通信并发送学生的姓名和学号和学生模块所在电脑的IP和端口号。

3) 重新搜索

学生模块可能由于某种原因等待接收线程被阻塞,始终接收不到教师模块的广播,则应该关闭该线程并建立新线程以重新尝试等待接收广播。

4) 考试状态显示

显示当前考试状态(准备考试、考试中、考试结束)。

5) 下载考试资料

学生模块接收到教师模块发送的考试资料和开考信号后,学生模块将考试资料存放到指定目录。

6) 考试成果提交

考试结束之前,学生模块向教师模块发送考试成果。学生通过文件选择器选择文件,向教师模块发送。

7) 考试时间提醒

考试开始后,学生模块根据教师模块发送的考试时长启动倒计时,以便提醒学生时间。

类图

由于在设计过程中,存在若干的内部类,但是rational rose中没有找到内部类如何表示,所以下面两个类图不是很标准,只是一个大概的关系。



教师模块详细类图



学生模块详细类图

分析难点

界面又或者是数据库没有什么好说的,对我而言,实现难度主要在教师和学生模块的通讯上面,局域网内的广播、tcp和udp套接字的运用、多线程的使用,这些都是需要我一一攻克的地方,除此之外,后台对界面的跳转控制也是需要设计的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: