Merge pull request '2025-10-08 23:03 乔毅凡合并' (#3) from qiaoyifan_branch into develop

develop
pnl4utw52 2 months ago
commit 23e8359e3a

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

@ -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) {

@ -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.*;
public class Exam_service {
private String id;
private String type;
private ArrayList<Question> paper;
private int now_index;
@ -13,9 +14,10 @@ public class Exam_service {
private Date end_time;
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;
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<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() {
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<Integer> wrong = new ArrayList<>();

@ -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<Question> g_paper(int num,String type) {
public static ArrayList<Question> g_paper(int num,String type,String id) {
ArrayList<Question> 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;
}

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

Loading…
Cancel
Save