diff --git a/src/Base/Exam_result.java b/src/Base/Exam_result.java index d41bb86..1b117aa 100644 --- a/src/Base/Exam_result.java +++ b/src/Base/Exam_result.java @@ -38,5 +38,4 @@ public class Exam_result { public String getCorrectRate() { return String.format("%.1f%%", (double) correct_answers / total_questions * 100); } - } diff --git a/src/Base/User.java b/src/Base/User.java index 8c137f5..0bb324b 100644 --- a/src/Base/User.java +++ b/src/Base/User.java @@ -2,15 +2,17 @@ package Base; public class User { private String email; + private String id; private String password; - public User(String email) { this.email = email; } public String get_email() { return email; } public String get_password() { return password; } + public String get_id() {return id;} + public void set_id(String id) {this.id=id;} public void set_password(String password) { this.password = password; } public static boolean check_password(String password) { diff --git a/src/Service/Deal_file.java b/src/Service/Deal_file.java new file mode 100644 index 0000000..ff012b1 --- /dev/null +++ b/src/Service/Deal_file.java @@ -0,0 +1,43 @@ +package Service; + +import Base.Question; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.*; + +public class Deal_file { + private static final String BASE_DIR="试卷/"; + + public Deal_file() { + File baseDir = new File(BASE_DIR); + if (!baseDir.exists()) { + if (!baseDir.mkdirs()) + System.out.println("目录创建失败!"); + } + } + + public void savePaper(ArrayList paper, String username) { + String userDirPath = BASE_DIR + username + "/"; + File userDir = new File(userDirPath); + if (!userDir.exists()) { + if (!userDir.mkdirs()) { + System.out.println("目录创建失败!"); + return; + } + } + String timestamp = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()); + String filePath = userDirPath + timestamp + ".txt"; + + try (PrintWriter writer = new PrintWriter(new FileWriter(filePath))) { + for (int i = 0; i < paper.size(); i++) { + writer.println(paper.get(i).toString()); + if (i < paper.size() - 1) { + writer.println(); + } + } + } catch (IOException e) { + System.out.println("保存文件出错: " + e.getMessage()); + } + } +} diff --git a/src/Service/Exam_service.java b/src/Service/Exam_service.java index f46903d..30b47da 100644 --- a/src/Service/Exam_service.java +++ b/src/Service/Exam_service.java @@ -6,6 +6,7 @@ import Base.Question; import java.util.*; public class Exam_service { + private String id; private String type; private ArrayList paper; private int now_index; @@ -13,9 +14,10 @@ public class Exam_service { private Date end_time; private Map user_answers; - Exam_service(int num,String type){ + public Exam_service(int num,String type,String id){ + this.id=id; this.type=type; - paper=Generate_paper.g_paper(num,type); + paper=Generate_paper.g_paper(num,type,id); now_index=0; this.start_time = new Date(); this.user_answers = new HashMap<>(); @@ -25,6 +27,19 @@ public class Exam_service { public int get_now_index() { return now_index; } public Date get_start_time() { return start_time; } public Date get_end_time() { return end_time; } + public Map get_user_answers() {return user_answers;} + + public void set_now_index(int i){ + if (i==1 && now_index0){ + now_index+=i; + } + else if (i==0){ + now_index=0; + } + } public Question get_now_question() { if (now_index < paper.size()) { @@ -68,6 +83,15 @@ public class Exam_service { return user_answers.get(question_index); } + public boolean check_finished(){ + for (int i=0;i< paper.size();i++){ + if (user_answers.get(i)==-1){ + return false; + } + } + return true; + } + public Exam_result calculate_result(){ int correct = 0; List wrong = new ArrayList<>(); diff --git a/src/Service/Generate_paper.java b/src/Service/Generate_paper.java index 9e16f9b..11188a8 100644 --- a/src/Service/Generate_paper.java +++ b/src/Service/Generate_paper.java @@ -7,10 +7,9 @@ import Generator.Pri_g_ques; import Generator.Sen_g_ques; import java.util.ArrayList; -import java.util.Objects; public class Generate_paper { - public static ArrayList g_paper(int num,String type) { + public static ArrayList g_paper(int num,String type,String id) { ArrayList result = new ArrayList<>(); G_ques generator; switch (type){ @@ -41,6 +40,8 @@ public class Generate_paper { t.set_options(); result.add(t); } + Deal_file d=new Deal_file(); + d.savePaper(result,id); return result; } diff --git a/src/Service/User_service.java b/src/Service/User_service.java index 777644b..b0ea8b0 100644 --- a/src/Service/User_service.java +++ b/src/Service/User_service.java @@ -35,13 +35,17 @@ public class User_service { } } - public String check_register(String email,String input_code,String pwd){ + public String check_register(String email,String input_code,String pwd,String id){ if (Deal_i_code.judge_code(email,input_code)){ if (!User.check_password(pwd)){ return "密码长6-20位,至少包含大小写字母和数字"; } User new_one=new User(email); new_one.set_password(pwd); + new_one.set_id(id); + if (find_user_i(id)!=null){ + return "用户名重复"; + } users.add(new_one); Deal_i_code.clean_all_codes(); if (!save_users()){ @@ -54,8 +58,8 @@ public class User_service { } } - public String login(String email,String pwd){ - User u=find_user(email); + public String login(String id,String pwd){ + User u=find_user_i(id); if (u==null){ return "请先注册"; } @@ -86,16 +90,16 @@ public class User_service { return "修改失败"; } - public String logout(String email){ + public String Unregister(String email){ User user=find_user(email); if (user!=null) { if (users.remove(user)) { - if (!save_users()) { - return "注销成功"; + if (save_users()) { + return "删除成功"; } } } - return "注销失败"; + return "删除失败"; } public User find_user(String email){ @@ -107,6 +111,15 @@ public class User_service { return null; } + public User find_user_i(String id){ + for (User user : users) { + if (user.get_id().equals(id)) { + return user; + } + } + return null; + } + private boolean save_users(){ File baseDir = new File(base_dir); if (!baseDir.exists()) { @@ -116,8 +129,11 @@ public class User_service { } String file_path=base_dir+"用户信息.txt"; try (PrintWriter writer = new PrintWriter(new FileWriter(file_path))) { + if (users.isEmpty()){ + return true; + } for (int i = 0; i < users.size(); i++) { - writer.println(users.get(i).get_email()+" "+users.get(i).get_password()); + writer.println(users.get(i).get_email()+" "+users.get(i).get_password()+" "+users.get(i).get_id()); if (i < users.size() - 1) { writer.println(); } @@ -139,9 +155,10 @@ public class User_service { if (!line.trim().isEmpty()) { String l=line.trim(); String[] parts=l.split(" "); - if (parts.length==2){ + if (parts.length==3){ User temp=new User(parts[0]); temp.set_password(parts[1]); + temp.set_id(parts[2]); users.add(temp); } }