Third commit

main^2
Arno 2 months ago committed by Gitea
parent 4f84b03f04
commit c65d5cc83e

@ -38,5 +38,4 @@ public class Exam_result {
public String getCorrectRate() { public String getCorrectRate() {
return String.format("%.1f%%", (double) correct_answers / total_questions * 100); return String.format("%.1f%%", (double) correct_answers / total_questions * 100);
} }
} }

@ -2,15 +2,17 @@ package Base;
public class User { public class User {
private String email; private String email;
private String id;
private String password; private String password;
public User(String email) { public User(String email) {
this.email = email; this.email = email;
} }
public String get_email() { return email; } public String get_email() { return email; }
public String get_password() { return password; } 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 void set_password(String password) { this.password = password; }
public static boolean check_password(String password) { public static boolean check_password(String password) {

@ -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<Question> 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());
}
}
}

@ -6,6 +6,7 @@ import Base.Question;
import java.util.*; import java.util.*;
public class Exam_service { public class Exam_service {
private String id;
private String type; private String type;
private ArrayList<Question> paper; private ArrayList<Question> paper;
private int now_index; private int now_index;
@ -13,9 +14,10 @@ public class Exam_service {
private Date end_time; private Date end_time;
private Map<Integer, Integer> user_answers; private Map<Integer, Integer> user_answers;
Exam_service(int num,String type){ public Exam_service(int num,String type,String id){
this.id=id;
this.type=type; this.type=type;
paper=Generate_paper.g_paper(num,type); paper=Generate_paper.g_paper(num,type,id);
now_index=0; now_index=0;
this.start_time = new Date(); this.start_time = new Date();
this.user_answers = new HashMap<>(); this.user_answers = new HashMap<>();
@ -25,6 +27,19 @@ public class Exam_service {
public int get_now_index() { return now_index; } public int get_now_index() { return now_index; }
public Date get_start_time() { return start_time; } public Date get_start_time() { return start_time; }
public Date get_end_time() { return end_time; } public Date get_end_time() { return end_time; }
public Map<Integer, Integer> get_user_answers() {return user_answers;}
public void set_now_index(int i){
if (i==1 && now_index<paper.size()-1){
now_index+=i;
}
else if (i==-1 && now_index>0){
now_index+=i;
}
else if (i==0){
now_index=0;
}
}
public Question get_now_question() { public Question get_now_question() {
if (now_index < paper.size()) { if (now_index < paper.size()) {
@ -68,6 +83,15 @@ public class Exam_service {
return user_answers.get(question_index); 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(){ public Exam_result calculate_result(){
int correct = 0; int correct = 0;
List<Integer> wrong = new ArrayList<>(); List<Integer> wrong = new ArrayList<>();

@ -7,10 +7,9 @@ import Generator.Pri_g_ques;
import Generator.Sen_g_ques; import Generator.Sen_g_ques;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Objects;
public class Generate_paper { public class Generate_paper {
public static ArrayList<Question> g_paper(int num,String type) { public static ArrayList<Question> g_paper(int num,String type,String id) {
ArrayList<Question> result = new ArrayList<>(); ArrayList<Question> result = new ArrayList<>();
G_ques generator; G_ques generator;
switch (type){ switch (type){
@ -41,6 +40,8 @@ public class Generate_paper {
t.set_options(); t.set_options();
result.add(t); result.add(t);
} }
Deal_file d=new Deal_file();
d.savePaper(result,id);
return result; return result;
} }

@ -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 (Deal_i_code.judge_code(email,input_code)){
if (!User.check_password(pwd)){ if (!User.check_password(pwd)){
return "密码长6-20位至少包含大小写字母和数字"; return "密码长6-20位至少包含大小写字母和数字";
} }
User new_one=new User(email); User new_one=new User(email);
new_one.set_password(pwd); new_one.set_password(pwd);
new_one.set_id(id);
if (find_user_i(id)!=null){
return "用户名重复";
}
users.add(new_one); users.add(new_one);
Deal_i_code.clean_all_codes(); Deal_i_code.clean_all_codes();
if (!save_users()){ if (!save_users()){
@ -54,8 +58,8 @@ public class User_service {
} }
} }
public String login(String email,String pwd){ public String login(String id,String pwd){
User u=find_user(email); User u=find_user_i(id);
if (u==null){ if (u==null){
return "请先注册"; return "请先注册";
} }
@ -86,16 +90,16 @@ public class User_service {
return "修改失败"; return "修改失败";
} }
public String logout(String email){ public String Unregister(String email){
User user=find_user(email); User user=find_user(email);
if (user!=null) { if (user!=null) {
if (users.remove(user)) { if (users.remove(user)) {
if (!save_users()) { if (save_users()) {
return "注销成功"; return "删除成功";
} }
} }
} }
return "注销失败"; return "删除失败";
} }
public User find_user(String email){ public User find_user(String email){
@ -107,6 +111,15 @@ public class User_service {
return null; 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(){ private boolean save_users(){
File baseDir = new File(base_dir); File baseDir = new File(base_dir);
if (!baseDir.exists()) { if (!baseDir.exists()) {
@ -116,8 +129,11 @@ public class User_service {
} }
String file_path=base_dir+"用户信息.txt"; String file_path=base_dir+"用户信息.txt";
try (PrintWriter writer = new PrintWriter(new FileWriter(file_path))) { try (PrintWriter writer = new PrintWriter(new FileWriter(file_path))) {
if (users.isEmpty()){
return true;
}
for (int i = 0; i < users.size(); i++) { 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) { if (i < users.size() - 1) {
writer.println(); writer.println();
} }
@ -139,9 +155,10 @@ public class User_service {
if (!line.trim().isEmpty()) { if (!line.trim().isEmpty()) {
String l=line.trim(); String l=line.trim();
String[] parts=l.split(" "); String[] parts=l.split(" ");
if (parts.length==2){ if (parts.length==3){
User temp=new User(parts[0]); User temp=new User(parts[0]);
temp.set_password(parts[1]); temp.set_password(parts[1]);
temp.set_id(parts[2]);
users.add(temp); users.add(temp);
} }
} }

Loading…
Cancel
Save