packagemain;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.InputStreamReader;importjava.io.LineNumberReader;importjava.math.BigDecimal;importanswer.Answer;importguess.Guess;importinput.Input;importlogin.Login;importlogin.Register;importpersonal.Personal;importread.Read;importuser.User;publicclassMain{publicstaticvoidmain(String[] args)throwsException{System.out.println("=======Welcome to Yuki Sam's system!======");printmenu();String choice=Input.in.nextLine();User u=newUser();boolean f=false;while(true){switch(choice){case"1":Register.register(u);break;case"2":if(f)//已有账号登录中{System.out.println("=======An account has been logged in.======");System.out.println("===========Please log out first.===========");System.out.println("||========= 0 Log out =========||");System.out.println("||========= 1 Return menu =========||");String op=Input.in.nextLine();while(!op.equals("1")){if(op.equals("0")){
f=false;
u.flag=false;System.out.println("===========Log out successfully!===========\n");break;}elseSystem.out.println("========Invaild! Please input again.=======");
op=Input.in.nextLine();}}else{Login.login(u);if(u.flag==true) f=true;}break;case"3":if(!f){System.out.println("========Invaild! Please login first.=======");break;}System.out.println("===Please enter the number of questions.===");System.out.println("==You should enter numbers from 1 to 30.===");String tp1=Input.in.nextLine();int num1;while(!isNumeric(tp1)){System.out.println("===Invaild! Please enter a numeric type.===");
tp1=Input.in.nextLine();}
num1=Integer.parseInt(tp1);while(num1>30|| num1<1){System.out.println("==The number you entered is out of range.==");System.out.println("============Please input again.============");
num1=Integer.parseInt(Input.in.nextLine());}Answer.answer(num1,u);break;case"4":if(!f){System.out.println("========Invaild! Please login first.=======");break;}Read.reading();break;case"5":if(!f){System.out.println("========Invaild! Please login first.=======");break;}System.out.println("====Please enter the number of riddles.====");System.out.println("===You should enter numbers from 1 to 40===");String tp2=Input.in.nextLine();int num2;while(!isNumeric(tp2)){System.out.println("===Invaild! Please enter a numeric type.===");
tp2=Input.in.nextLine();}
num2=Integer.parseInt(tp2);while(num2>40|| num2<1){System.out.println("==The number you entered is out of range.==");System.out.println("============Please input again.============");
num2=Integer.parseInt(Input.in.nextLine());}Guess.guess(num2,u);break;case"6":if(!f){System.out.println("========Invaild! Please login first.=======");break;}Personal.personal(u);break;case"7":break;default:System.out.println("========Invaild! Please input again.=======");break;}if(choice.equals("7"))break;printmenu();
choice =Input.in.nextLine();}save(u);System.out.println("=======Thank you for your patronage!======");System.out.println("▏■■■■■■■■■■■■■▏ 100% ▏■■■■■■■■■■■■■▏");System.out.println("========Program terminated 100% ! ========");}publicstaticvoidprintmenu(){System.out.println("=======Please choose your operation!======");System.out.println("||============== M e n u ===============||");System.out.println("||========= 1 Regiser =========||");System.out.println("||========= 2 Login =========||");System.out.println("||========= 3 Answer =========||");System.out.println("||========= 4 Read =========||");System.out.println("||========= 5 Guess =========||");System.out.println("||========= 6 Personal =========||");System.out.println("||========= 7 Exit =========||");System.out.println("||======================================||\n");}publicstaticbooleanisNumeric(String str){@SuppressWarnings("unused")String bigStr;try{
bigStr =newBigDecimal(str).toString();}catch(Exception e){returnfalse;//异常 说明包含非数字}returntrue;}publicstaticvoidsave(User u)throwsException//退出前保存信息{String acnt=u.account;String score=String.format("%d",Integer.parseInt(u.tot_score)+u.asr_score+u.gs_score);String level=User.judge(score);String filename=".\\\\data.txt";String filename1=".\\\\data1.txt";File fp=newFile(filename);File fp1=newFile(filename1);InputStreamReader read =newInputStreamReader(newFileInputStream(fp),"UTF-8");try(BufferedReader reader =newBufferedReader(read)){try(LineNumberReader linerd =newLineNumberReader(newFileReader(filename))){try(BufferedWriter writer =newBufferedWriter(newFileWriter(filename1))){
linerd.skip(Long.MAX_VALUE);int lines = linerd.getLineNumber();int num=lines/8;for(int i=0;i<num;i++){
u.read2(reader);if(acnt.equals(u.account)){
u.tot_score=score;
u.level=level;}
u.write2(writer);}}}}
read.close();
fp.delete();
fp1.renameTo(fp);}}
packageanswer;importjava.io.File;importjava.io.IOException;importjava.io.RandomAccessFile;importjava.util.Arrays;importuser.User;importinput.Input;publicclassAnswer{publicstaticvoidanswer(int num,User u)throwsIOException{Question_fin.q_fin();int temp_score=0;File file=newFile(".\\\\question.txt");RandomAccessFile rf=newRandomAccessFile(file,"r");int[] vis=newint[40];Arrays.fill(vis,0);headmenu();int cnt=0;while(cnt<num){String que,ch1,ch2,ch3,ans;int id=(int)((Math.random()+0)*30);//随机选题if(vis[id]==0)//题目还没出过{
cnt++;System.out.println("No."+cnt+":");
rf.seek(0);for(int i=0;i<30;i++){
que=rf.readUTF();
ch1=rf.readUTF();
ch2=rf.readUTF();
ch3=rf.readUTF();
ans=rf.readUTF();if(i==id)//找到题目{System.out.print(que);System.out.print(ch1);System.out.print(ch2);System.out.print(ch3);String u_ans=Input.in.nextLine();if(ans.equals(u_ans)){System.out.println("Correct answer ✔ \n");
u.asr_score+=1;
temp_score+=1;}elseSystem.out.println("Wrong answer ✖ \n");break;}
vis[id]=1;}}}
rf.close();endmenu(temp_score);}publicstaticvoidheadmenu(){System.out.println("=======================Welcome to the \"Answer\" game! =======================");System.out.println("||========= You need to answer the following ten questions =========||");System.out.println("||========= Please enter your answer =========||");System.out.println("||========= For multiple choice questions, enter \"A~C\" =========||");}publicstaticvoidendmenu(int temp_score){System.out.println("||========= Your \"Answer\" score is "+temp_score+". =========||");System.out.println("||========= ✿ Make persistent efforts~ ✿ =========||");System.out.println("||========= ✿ ✧*。٩(ˊᗜˋ*)و✧* ✿ =========||\n");}}
packageread;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;importinput.Input;publicclassRead{publicstaticvoidreading()throwsException{String filename=".\\\\reading.txt";File fp =newFile(filename);InputStreamReader read =newInputStreamReader(newFileInputStream(fp),"UTF-8");try(BufferedReader reader =newBufferedReader(read)){headmenu();int num=Integer.parseInt(Input.in.nextLine());if(num<1|| num>8){System.out.println("==================The number you entered is out of range.===================");System.out.println("=============================Please input again.============================");reading();return;}String story;for(int n=1;n<=8;n++){
story=reader.readLine();if(n==num){int len=story.length();char[] ch=story.toCharArray();for(int i=0;i<len;i++){System.out.print(ch[i]);if(i%60==0&& i!=0)System.out.print("\n");}System.out.print("\n");System.out.println("==============================Reading is over. =============================");System.out.println("=============The system has automatically returned to the menu.=============");break;}}}System.out.print("\n");
read.close();}publicstaticvoidheadmenu(){System.out.println("=======================Welcome to the \"Read\" section! ======================");System.out.println("||========= You can choose the following stories to read =========||");System.out.println("||========= Please enter your choice =========||");System.out.println("||========= 1 甲骨文 =========||");System.out.println("||========= 2 金文 =========||");System.out.println("||========= 3 大篆 =========||");System.out.println("||========= 4 小篆 =========||");System.out.println("||========= 5 隶书 =========||");System.out.println("||========= 6 楷书 =========||");System.out.println("||========= 7 草书 =========||");System.out.println("||========= 8 行书 =========||\n");}}
Guess
packageguess;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;importuser.User;importinput.Input;publicclassGuess{publicstaticvoidguess(int num,User u)throwsException{int temp_score=0;String filename=".\\\\guess.txt";File fp =newFile(filename);InputStreamReader read =newInputStreamReader(newFileInputStream(fp),"UTF-8");try(BufferedReader reader =newBufferedReader(read)){headmenu();String que,ans,u_ans;int lev=0;for(int i=1;i<=num;i++){System.out.println("No."+i+":");
que=reader.readLine();System.out.println(que);
ans=reader.readLine();
u_ans=Input.in.nextLine();if(!ans.equals(u_ans))//回答错误 游戏结束{System.out.println("||========= Game over …(。•ˇ‸ˇ•。)… =========||");break;}else{
u.gs_score+=2;
temp_score+=2;;System.out.println("Pass! ✔\n");}
lev=i;}System.out.println("||========= You made it through "+lev+" levels =========||");endmenu(temp_score);}}publicstaticvoidheadmenu(){System.out.println("========================Welcome to the \"Guess\" game! =======================");System.out.println("||=====You need to guess one of the characters the question describes=====||");System.out.println("||========= Attention! This game is level based =========||");System.out.println("||========= The difficulty is increasing =========||");System.out.println("||========= One wrong guess and the game ends =========||");System.out.println("||========= See how many guesses you can get right =========||");System.out.println("||========= Fighting!!! ٩꒰。•◡•。꒱۶ =========||\n");}publicstaticvoidendmenu(int temp_score){System.out.println("||========= Your \"Guess\" score is "+temp_score+". =========||");System.out.println("||========= ✿ Wish you get better scores next time~ ✿ =========||");System.out.println("||========= ✿ ʕ •ɷ•ʔฅ ❤ ฅʕ•ɷ• ʔ ✿ =========||\n");}}
Personal
packagepersonal;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.InputStreamReader;importjava.io.LineNumberReader;importuser.User;importinput.Input;publicclassPersonal{publicstaticvoidpersonal(User u)throwsException{String acnt=u.account;
u.tot_score=(u.asr_score+u.gs_score)+"";String filename=".\\\\data.txt";String filename1=".\\\\data1.txt";File fp=newFile(filename);File fp1=newFile(filename1);InputStreamReader read =newInputStreamReader(newFileInputStream(fp),"UTF-8");try(BufferedReader reader =newBufferedReader(read)){try(LineNumberReader linerd =newLineNumberReader(newFileReader(filename))){try(BufferedWriter writer =newBufferedWriter(newFileWriter(filename1))){
linerd.skip(Long.MAX_VALUE);int lines = linerd.getLineNumber();int num=lines/8;for(int i=0;i<num;i++){
u.read2(reader);if(acnt.equals(u.account)){page();String op=Input.in.nextLine(),ch;while(!op.equals("9")){switch(op){case"1":System.out.println("Your nickname:");System.out.println(u.nickname+"\n");choose();
ch=Input.in.nextLine();while(!ch.equals("0")&&!ch.equals("1")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}if(ch.equals("0")){System.out.println("||================== Please input your new information. ==================||");
u.nickname=Input.in.nextLine();System.out.println("||================= Modified successfully! (っ•̀ω•́)っ✎⁾⁾ =================||"+"\n");}elsebreak;break;case"2":System.out.println("Your gender:");System.out.println(u.gender+"\n");choose();
ch=Input.in.nextLine();while(!ch.equals("0")&&!ch.equals("1")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}if(ch.equals("0")){System.out.println("||================== Please input your new information. ==================||");
u.gender=Input.in.nextLine();System.out.println("||================= Modified successfully! (っ•̀ω•́)っ✎⁾⁾ =================||"+"\n");}elsebreak;break;case"3":System.out.println("Your age:");System.out.println(u.age+"\n");choose();
ch=Input.in.nextLine();while(!ch.equals("0")&&!ch.equals("1")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}if(ch.equals("0")){System.out.println("||================== Please input your new information. ==================||");
u.age=Input.in.nextLine();System.out.println("||================= Modified successfully! (っ•̀ω•́)っ✎⁾⁾ =================||"+"\n");}elsebreak;break;case"4":System.out.println("Your birthday:");System.out.println(u.birthday+"\n");choose();
ch=Input.in.nextLine();while(!ch.equals("0")&&!ch.equals("1")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}if(ch.equals("0")){System.out.println("||================== Please input your new information. ==================||");
u.birthday=Input.in.nextLine();System.out.println("||================= Modified successfully! (っ•̀ω•́)っ✎⁾⁾ =================||"+"\n");}elsebreak;break;case"5":System.out.println("Your personal profile:");System.out.println(u.profile+"\n");choose();
ch=Input.in.nextLine();while(!ch.equals("0")&&!ch.equals("1")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}if(ch.equals("0")){System.out.println("||================== Please input your new information. ==================||");
u.profile=Input.in.nextLine();System.out.println("||================= Modified successfully! (っ•̀ω•́)っ✎⁾⁾ =================||"+"\n");}elsebreak;break;case"6":System.out.println("Your game score:");System.out.println(u.tot_score+"\n");System.out.println("||========= 0 Return =========||");
ch=Input.in.nextLine();while(!ch.equals("0")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}break;case"7":System.out.println("Your level:");System.out.println(u.level+"\n");System.out.println("||========= 0 Return =========||");
ch=Input.in.nextLine();while(!ch.equals("0")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}break;case"8":info(u);
ch=Input.in.nextLine();while(!ch.equals("0")){System.out.println("||===================== Invaild! Please input again. =====================||");
ch=Input.in.nextLine();}break;default:System.out.println("========Invaild! Please input again.=======");break;}page();
op=Input.in.nextLine();}break;}}
u.write2(writer);}}}
read.close();
fp.delete();
fp1.renameTo(fp);}publicstaticvoidpage(){System.out.println("======================Welcome to the \"Personal\" page! =====================");System.out.println("||=============You can modify your personal information here.=============||");System.out.println("||========= Please enter your choice =========||");System.out.println("||========= 1 Nickname =========||");System.out.println("||========= 2 Gender =========||");System.out.println("||========= 3 Age =========||");System.out.println("||========= 4 Birthday =========||");System.out.println("||========= 5 Personal Profile =========||");System.out.println("||========= 6 Game Score =========||");System.out.println("||========= 7 Level =========||");System.out.println("||========= 8 All My Information =========||");System.out.println("||========= 9 Return Menu =========||\n");}publicstaticvoidchoose(){System.out.println("||========= 0 Modify =========||");System.out.println("||========= 1 Return =========||");}publicstaticvoidinfo(User u){System.out.println("||================== All your information ヾ(•ω•`。) ==================||");System.out.println("Your nickname:");System.out.println(u.nickname);System.out.println("Your gender:");System.out.println(u.gender);System.out.println("Your age:");System.out.println(u.age);System.out.println("Your birthday:");System.out.println(u.birthday);System.out.println("Your personal profile:");System.out.println(u.profile);System.out.println("Your game score:");System.out.println(u.tot_score);System.out.println("Your level:");System.out.println(u.level);System.out.println("||========= 0 Return =========||");}}