Java大作业-考试管理系统(GUI)无数据库-Java课程设计
Java课程设计-Java大作业-考试管理系统(GUI)无数据库
题目要求
考试管理系统
分3种用户角色:教务员(具有管理权限)、教师、学生
教务员:可以进行用户管理(增加删除修改用户,设置用户权限)、考试管理(增加删除修改考试,安排考试时间)、监考管理(安排、修改监考)
教师:查看考试、监考,申请监考替换
学生:查看考试安排
实现功能模块要求:
1、用户管理:
A、用户的增加、删除和修改
B、权限控制,主要权限包括:①系统管理权、②考试管理权、③考试安排查询:能查看考试时间及监考名单、④考试安排查询:只能查看考试时间,不能查看监考、⑤申请监考替换权限。(教务员拥有所有权限,教师拥有权限③⑤,学生只有权限④)
2、考试管理:
A、考试的增加、删除和修改
B、考试时间安排,避免考试时间冲突、同科目考试有多个考场,注意统一时间
3、监考安排:
监考教师的安排与修改,注意避免同期产生冲突的问题。
4、考试安排查询:
为教师、学生提供两种不同的查询结果。
教师可对自己的监考安排提出监考替换申请。
教务员可根据监考替换申请执行审批,同意则替换,不同意则驳回。
程序的所有信息采用文件存储,程序开始运行时将文件信息导入内存中,关闭程序时把内存中信息保存到文件。
推荐使用图形用户界面。
考试参考信息如下:

开发环境 :
Eclipse
jdk1.8
程序总功能模块

图1 权限模块图
程序详细设计
public int find1(String e) {
for(int i = 0 ; i <array.size(); i++)
if(array.get(i).geteName().contains(e))
return i;
return -1;
}
public boolean del_Exam(String s,String e) {
int pos1 = find1(s);
int pos2 = find2(e);
if (pos1==-1 || pos2==-2 )
return false;
if(pos1==pos2) {
array.remove(pos1);
}
return true;
}
public void update(Examwork e) {
int flag1 = find1(e.geteName());
array.set(flag1, e);
System.out.print(array.get(flag1).toString());
}
通过名字查找数组中是否已存在该姓名相关的数据,有则返回该数据在array数组中的位置,无则直接return -1;删除函数是先通过所给条件找到需要删除的数据在arraylist数组中的位置,然后通过remove方法将数据删除;进行数据信息的替换则通过数据的位置然后调用set方法来实现数据的更新;
try {
FileReader fr = new FileReader("D:\\Java\\Java project\\Exam-system\\src\\考试信息.txt");
BufferedReader br = new BufferedReader(fr);
array.clear();
while((t = br.readLine())!=null) {
String [] s = t.split("\\s+");
Examwork exam = new Examwork(s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8]);
array.add(exam);
}
fr.close();
br.close();
通过文件流的方式将TXT文档中的数据按规定的格式存储到新的数组中;
try {
fw = new FileWriter("D:\\Java\\Java project\\Exam-system\\src\\考试信息.txt");
out = new BufferedWriter(fw);
for(int i=0;i<array.size();i++){
String s=array.get(i).exam_fileString();
out.write(s);
out.newLine();
out.flush();
}
out.close();
fw.close();
通过文件流的方式将数据保存到TXT文档中;
public boolean JudgeTime(String time) {
String pattern ="([01]?[0-9]|2[0-3])(\\:|\\:)[0-5][0-9](\\-|\\-)([01]?[0-9]|2[0-3])(\\:|\\:)[0-5][0-9]";
boolean isTime = Pattern.matches(pattern,time);
return isTime;
}
采用正则表达式来判断输入的日期是否符合格式;
RowSorter sorter = new TableRowSorter(model);
table.setRowSorter(sorter);
通过继承RowSorter类来进行排列,JTable 支持单击表头按该列进行升序或降序的排序,只需要给表格设置一个表格行排序器TableRowSorter ,其排列的方式是按照字典的顺序进行排序;其排列方式存在缺点,会造成排列出错;
(以上代码均有删减直接复制会出错的)
使用情况




第一次写这东西有不少错误的地方,题目要求的功能也没有完全实现,以上内容看看就好蛤!写这篇文章主要还是记录一下个人的学习!
更多推荐


所有评论(0)