日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

综合能力测评系统

發(fā)布時(shí)間:2024/3/12 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 综合能力测评系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是我在大一和同伴們一起做的一個(gè)實(shí)訓(xùn)項(xiàng)目(主要是進(jìn)行小學(xué)生的加減乘除等一系列數(shù)學(xué)操作的),是東軟這個(gè)公司的。如果你正在做相關(guān)相似的項(xiàng)目,可以借鑒一下。(因?yàn)槲易约鹤鲞@個(gè)項(xiàng)目時(shí),沒有找到相似的可以借鑒的文章,所以寫下這篇文章希望能帶給你幫助!)

目錄

一、系統(tǒng)設(shè)計(jì)思路

二、系統(tǒng)功能流程圖

?三、文字講解+展示效果+功能代碼

(一)身份選擇

(二)教師服務(wù)

1、登錄注冊(cè)操作

2、老師功能菜單

3、查看老師信息

?4、查看學(xué)生信息

5、系統(tǒng)評(píng)價(jià)與建議

(三)學(xué)生服務(wù)

1、登錄注冊(cè)操作

2、學(xué)生功能菜單

?3、日常測試

4、考試測試

5、猜數(shù)小游戲

?6、系統(tǒng)評(píng)價(jià)與建議

四、完整代碼

五、路徑下的文件


一、系統(tǒng)設(shè)計(jì)思路

這個(gè)系統(tǒng)是為了實(shí)現(xiàn)小學(xué)生日常測試與考試測試的而設(shè)計(jì)的。利用不同用戶身份的選擇系統(tǒng)將為不同用戶提供不同的功能。

我們的學(xué)生用戶下可以注冊(cè)或者登錄賬號(hào),進(jìn)入對(duì)應(yīng)的賬號(hào)后,系統(tǒng)將為學(xué)生提供測試功能,游戲功能,系統(tǒng)評(píng)價(jià)功能。測試分為考試測試與日常測試兩個(gè)類別,在兩個(gè)測試下可以實(shí)現(xiàn)題目類別選擇,題目難度選擇,在考試測試下我們可以自定義要做的題目數(shù)量,完成所有的題后系統(tǒng)將給出等級(jí)、正確率、答對(duì)題目數(shù)量。在日常測試下,我們可以隨時(shí)終止做題,每做一道題系統(tǒng)會(huì)自動(dòng)給出提示,或者顯示答案。

對(duì)于老師用戶界面,我們可以查看老師、學(xué)生信息,也可以對(duì)系統(tǒng)作出評(píng)價(jià)。

為了實(shí)現(xiàn)學(xué)生和老師的信息查找,我們將老師和學(xué)生的個(gè)人注冊(cè)登錄信息都放進(jìn)一個(gè)結(jié)構(gòu)體中,用兩個(gè)不同的文件來存儲(chǔ)學(xué)生和老師信息。

二、系統(tǒng)功能流程圖

(這是一個(gè)簡單的系統(tǒng)操作圖,后面有文字+代碼講解)

?三、文字講解+展示效果+功能代碼

(每個(gè)不同的功能我都寫成了函數(shù),方便引用)

(一)身份選擇

進(jìn)入系統(tǒng)后,首先要進(jìn)行身份的選擇,1代表不同,2代表學(xué)生,不同的身份后續(xù)對(duì)應(yīng)的操作也不同。

?

//身份選擇 void identity() {int n=N;cout << "歡迎進(jìn)入學(xué)生綜合素質(zhì)測評(píng)系統(tǒng)" << endl;puts("");do {if (n != N) cout << "您輸入的身份信息有誤,請(qǐng)重新輸入" << endl;cout << "請(qǐng)選擇您的身份(1代表教師,2代表學(xué)生):";cin >> n;//輸入身份}while(n!=1&&n!=2);//學(xué)生身份if(n==2){LORE(); //學(xué)生登錄與注冊(cè) sstudent(); //選擇 }else //老師 {teaLORE(); //老師登錄與注冊(cè)tteacher(); //選擇 }}

(二)教師服務(wù)

(該項(xiàng)目進(jìn)行的前提是在最開始時(shí)選擇的 1-教師)

1、登錄注冊(cè)操作

(進(jìn)行此操作需要用到文件這一知識(shí)點(diǎn),因?yàn)槟阈枰梦募泶鎯?chǔ)老師賬號(hào)、密碼等信息,注冊(cè)的信息存在文檔里,后面才能進(jìn)行登錄。所以你需要在存儲(chǔ)代碼的相同路徑下,新建一個(gè) txt 的文本文檔,我存儲(chǔ)老師信息的文本文檔叫做data.txt)

(1)可以選擇 0-退出 ,直接退出整個(gè)系統(tǒng);

(2)也可以選擇 1-登錄,需要輸入賬號(hào),若該賬號(hào)未提前注冊(cè)過,系統(tǒng)將提示“該賬號(hào)不存在,請(qǐng)先注冊(cè)”,若賬號(hào)已注冊(cè)過,則輸入密碼,若密碼錯(cuò)誤,系統(tǒng)將提示“密碼錯(cuò)誤,請(qǐng)重新輸入”,只有當(dāng)賬號(hào)和密碼都正確時(shí),才能進(jìn)入系統(tǒng);

(3)若選擇 2-注冊(cè),你需要現(xiàn)輸入賬號(hào),若該賬號(hào)已注冊(cè)過,系統(tǒng)將提示“該賬號(hào)已注冊(cè)過”,繼續(xù)彈出登錄注冊(cè)菜單欄,若該賬號(hào)未注冊(cè)過,繼續(xù)輸入姓名、性別、密碼、再次輸入密碼等信息。

?

?

//登錄注冊(cè)需要用到結(jié)構(gòu)體存儲(chǔ)姓名、賬號(hào)、密碼等信息 typedef struct User_basicinfo {char id[15]; //賬號(hào)char paw[20]; //密碼char name[15]; //姓名char sex[5]; //性別 }Users; Users a={0},b={0}; int fflag=0,fllag=0; int LOGIN() //老師登錄 {Users a={0},b={0};FILE *pf=fopen("data.txt","r");if(pf==NULL){printf("文件打開失敗\n");return 0;}printf("歡迎來到登錄界面!\n");printf("請(qǐng)輸入賬號(hào)->");scanf("%s",a.id);fread(&b, sizeof(Users), 1, pf);while(1){if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0)//未到文件尾 {fread(&b, sizeof(Users), 1, pf);}else{printf("該賬號(hào)不存在,請(qǐng)先注冊(cè)\n");fclose(pf); pf=NULL;return 0;}}else//賬號(hào)注冊(cè)過->跳到輸入密碼 {break; //退出無限循環(huán),跳到輸入密碼 }} //【輸入密碼】 printf("請(qǐng)輸入密碼->"); do{scanf("%s",a.paw);if(strcmp(a.paw, b.paw)!=0 )printf("密碼錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("登錄成功!\n");return 1;fclose(pf); pf=NULL; } void REGIST() //老師注冊(cè) {char tmp[20]={-1};FILE *pf=NULL;pf=fopen("data.txt","r");//用pf去指向文件 if(pf==NULL){printf("注冊(cè)時(shí)打開文件失敗\n");return ;}printf("\t\t\t歡迎來到注冊(cè)界面\n\n");printf("\t\t\t輸入賬號(hào)->");scanf("%s",a.id);printf("輸入成功!\n"); fread(&b, sizeof(Users), 1, pf); //【判斷】有沒有注冊(cè)過-比較字符串是否相等 //不相等->是否到文件尾 while(1) {if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0 )//未到文件尾 fread(&b, sizeof(Users), 1, pf);else//到了文件尾仍然沒有相同的字符串-說明輸入的賬號(hào)使新的 可以去注冊(cè)界面 {printf("賬號(hào)未注冊(cè)過,將跳轉(zhuǎn)到注冊(cè)界面\n");system("pause");break;//利用break來跳出無限循環(huán) }}else{printf("該賬號(hào)已注冊(cè)過\n");fclose(pf); pf=NULL;return;} } //【注冊(cè)界面】 printf("\t\t\t請(qǐng)輸入姓名->"); scanf("%s",a.name);printf("\t\t\t請(qǐng)輸入性別:男/女->"); do{getchar();scanf("%s",a.sex);if(strcmp(a.sex, "男")!=0&&strcmp(a.sex, "女")!=0)printf("\t\t\t輸入錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("\t\t\t請(qǐng)輸入密碼->"); scanf("%s",a.paw);printf("\t\t\t請(qǐng)?jiān)佥斎胍淮蚊艽a->"); do{scanf("%s",tmp);if(strcmp(tmp,a.paw)!=0)printf("\t\t\t兩次輸入密碼不一致,請(qǐng)?jiān)佥斎胍淮蚊艽a->");else break;}while(1);//兩次密碼一致fclose(pf); pf=NULL;pf=fopen("data.txt","a");//fwrite會(huì)在當(dāng)前文件指針的位置寫入數(shù)據(jù)//"w" 打開,文件指針指到頭,只寫;"a" 打開,指向文件尾fwrite(&a, sizeof(Users) , 1, pf );printf("\t\t\t注冊(cè)成功!\n"); fclose(pf); pf=NULL;return; } void teaLORE() //老師登錄與注冊(cè)函數(shù) {int input=-1,flagg=0; do{printf("\t\t\t----------------------------------\n");printf("\t\t\t| 1.登錄 |\n");printf("\t\t\t| 2.注冊(cè) |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t----------------------------------\n");printf("請(qǐng)選擇功能->");scanf("%d",&input);switch(input){case 1:flagg=LOGIN();break; //登錄 case 2:REGIST();break; //注冊(cè) case 0:puts("退出成功"); exit(0); //退出 }if(flagg==1) break;}while(input); //如果輸入除 1、2、0以外的數(shù),將提示重新選擇功能 return ; }

2、老師功能菜單

老師登錄成功后,系統(tǒng)會(huì)給出老師可以選擇的功能菜單。

?

void tteacher() //老師的服務(wù) {int nn=N; srand (time(NULL));if(fflag==0) cout << "老師,歡迎進(jìn)入老師管理系統(tǒng)" << endl;puts("");printf("\t\t\t============================================\n");printf("\t\t\t| |\n");printf("\t\t\t| 綜合能力測試系統(tǒng) |\n");printf("\t\t\t| |\n");printf("\t\t\t|==========================================|\n");printf("\t\t\t| 請(qǐng)選擇要操作的命令 |\n");printf("\t\t\t|------------------------------------------|\n");printf("\t\t\t| |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t| 1.查看老師信息 |\n");printf("\t\t\t| 2.查看學(xué)生信息 |\n");printf("\t\t\t| 3.系統(tǒng)評(píng)價(jià)與建議 |\n");printf("\t\t\t| |\n");printf("\t\t\t============================================\n");printf("\t\t\t選擇(0---4):\t\t\t");fflag++;do {if (nn != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> nn;} while (nn != 0 && nn != 1 && nn != 2 && nn != 3 ); puts("");if(nn==0){cout<<"退出成功,祝您生活愉快!!"<<endl; exit(0);}else if(nn==1) readteacher(); //平時(shí)測試 else if(nn==2) readstudent(); //老師查看個(gè)人信息 else if(nn==3) estimate(1); //系統(tǒng)評(píng)價(jià)建議 }

3、查看老師信息

在老師菜單里,我們可以選擇 1-查看老師信息,系統(tǒng)將給出老師的姓名、賬號(hào)等相關(guān)信息。

void readteacher() //老師查看個(gè)人信息 {cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;printf(" "); fstream f;//文件讀取,把原來的ios::out改成ios::in f.open("data.txt",ios::in);string s;//一直讀到文件末尾 while(f>>s)cout<<s<<endl; //顯示讀取內(nèi)容 f.close();puts(""); puts("");tteacher(); }

?4、查看學(xué)生信息

在老師菜單里,我們可以選擇 2-查看學(xué)生信息,系統(tǒng)將給出學(xué)生的姓名、賬號(hào)等相關(guān)信息。

void readstudent() //老師查看學(xué)生信息 {cout<<endl<<HEADER11<<HEADER2<<HEADER3 ;printf(" "); fstream f;//文件讀取,把原來的ios::out改成ios::in f.open("users.txt",ios::in);string s;//一直讀到文件末尾 while(f>>s)cout<<s<<endl; //顯示讀取內(nèi)容 f.close();puts("");puts("");tteacher(); }

5、系統(tǒng)評(píng)價(jià)與建議

?

void estimate(int xx) //統(tǒng)評(píng)價(jià)與建議 {int sorce;string words;printf("歡迎進(jìn)入系統(tǒng)評(píng)價(jià)界面\n"); printf("您對(duì)我們系統(tǒng)滿意程度是多少呢?\n");printf("請(qǐng)打分(0-10):\n"); cin>>sorce;printf("感謝您的評(píng)價(jià),我們會(huì)繼續(xù)努力的,為您提供更優(yōu)質(zhì)的服務(wù)\n");puts("");printf("您對(duì)我們的系統(tǒng)有什么建議嗎?\n");cin>>words;puts("");printf("您的建議是我們前進(jìn)的動(dòng)力,最后,祝您生活愉快喲 ≧▽≦\n");puts("");puts("");if(xx==0) sstudent(); //學(xué)生 else if(xx==1) tteacher(); //老師 }

(三)學(xué)生服務(wù)

(該項(xiàng)目進(jìn)行的前提是在最開始時(shí)選擇的 2-學(xué)生)

1、登錄注冊(cè)操作

([注]:該操作與老師的登錄注冊(cè)是相通的,只是存儲(chǔ)老師和學(xué)生信息的文件不同)

(進(jìn)行此操作需要用到文件這一知識(shí)點(diǎn),因?yàn)槟阈枰梦募泶鎯?chǔ)學(xué)生賬號(hào)、密碼等信息,注冊(cè)的信息存在文檔里,后面才能進(jìn)行登錄。所以你需要在存儲(chǔ)代碼的相同路徑下,新建一個(gè) txt 的文本文檔,我存儲(chǔ)學(xué)生信息的文本文檔叫做users.txt)

(1)可以選擇 0-退出 ,直接退出整個(gè)系統(tǒng);

(2)也可以選擇 1-登錄,需要輸入賬號(hào),若該賬號(hào)未提前注冊(cè)過,系統(tǒng)將提示“該賬號(hào)不存在,請(qǐng)先注冊(cè)”,若賬號(hào)已注冊(cè)過,則輸入密碼,若密碼錯(cuò)誤,系統(tǒng)將提示“密碼錯(cuò)誤,請(qǐng)重新輸入”,只有當(dāng)賬號(hào)和密碼都正確時(shí),才能進(jìn)入系統(tǒng);

(3)若選擇 2-注冊(cè),你需要現(xiàn)輸入賬號(hào),若該賬號(hào)已注冊(cè)過,系統(tǒng)將提示“該賬號(hào)已注冊(cè)過”,繼續(xù)彈出登錄注冊(cè)菜單欄,若該賬號(hào)未注冊(cè)過,繼續(xù)輸入姓名、性別、密碼、再次輸入密碼等信息。

typedef struct User_basicinfo {char id[15];char paw[20];char name[15];char sex[5]; }Users; Users a={0},b={0}; int fflag=0,fllag=0; //學(xué)生注冊(cè)函數(shù) void Regist() {char tmp[20]={-1};FILE *pf=NULL;pf=fopen("users.txt","r");//用pf去指向文件 if(pf==NULL){printf("注冊(cè)時(shí)打開文件失敗\n");return ;}printf("\t\t\t歡迎來到注冊(cè)界面\n\n");printf("\t\t\t輸入賬號(hào)->");scanf("%s",a.id);printf("輸入成功!\n"); fread(&b, sizeof(Users), 1, pf); //【判斷】有沒有注冊(cè)過-比較字符串是否相等 //不相等->是否到文件尾 while(1) {if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0 )//未到文件尾 fread(&b, sizeof(Users), 1, pf);else//到了文件尾仍然沒有相同的字符串-說明輸入的賬號(hào)使新的 可以去注冊(cè)界面 {printf("賬號(hào)未注冊(cè)過,將跳轉(zhuǎn)到注冊(cè)界面\n");system("pause");break;//利用break來跳出無限循環(huán) }}else{printf("該賬號(hào)已注冊(cè)過\n");fclose(pf); pf=NULL;return;} } //【注冊(cè)界面】 printf("\t\t\t請(qǐng)輸入姓名->"); scanf("%s",a.name);printf("\t\t\t請(qǐng)輸入性別:男/女->"); do{getchar();scanf("%s",a.sex);if(strcmp(a.sex, "男")!=0&&strcmp(a.sex, "女")!=0)printf("\t\t\t輸入錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("\t\t\t請(qǐng)輸入密碼->"); scanf("%s",a.paw);printf("\t\t\t請(qǐng)?jiān)佥斎胍淮蚊艽a->"); do{scanf("%s",tmp);if(strcmp(tmp,a.paw)!=0)printf("\t\t\t兩次輸入密碼不一致,請(qǐng)?jiān)佥斎胍淮蚊艽a->");else break;}while(1);//兩次密碼一致fclose(pf); pf=NULL;pf=fopen("users.txt","a");//fwrite會(huì)在當(dāng)前文件指針的位置寫入數(shù)據(jù)//"w" 打開,文件指針指到頭,只寫;"a" 打開,指向文件尾fwrite(&a, sizeof(Users) , 1, pf );printf("\t\t\t注冊(cè)成功!\n"); fclose(pf); pf=NULL;return; }//登錄函數(shù) int Login() {Users a={0},b={0};FILE *pf=fopen("users.txt","r");if(pf==NULL){printf("文件打開失敗\n");return 0;}printf("歡迎來到登錄界面!\n");printf("請(qǐng)輸入賬號(hào)->");scanf("%s",a.id);fread(&b, sizeof(Users), 1, pf);while(1){if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0)//未到文件尾 {fread(&b, sizeof(Users), 1, pf);}else{printf("該賬號(hào)不存在,請(qǐng)先注冊(cè)\n");fclose(pf); pf=NULL;return 0;}}else//賬號(hào)注冊(cè)過->跳到輸入密碼 {break; //退出無限循環(huán),跳到輸入密碼 }} //【輸入密碼】 printf("請(qǐng)輸入密碼->"); do{scanf("%s",a.paw);if(strcmp(a.paw, b.paw)!=0 )printf("密碼錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("登錄成功!\n");fclose(pf); pf=NULL;return 1; } //學(xué)生登錄與注冊(cè)函數(shù) void LORE() {int input=-1,flagg=-1; do{printf("\t\t\t----------------------------------\n");printf("\t\t\t| 1.登錄 |\n");printf("\t\t\t| 2.注冊(cè) |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t----------------------------------\n");printf("請(qǐng)選擇功能->");scanf("%d",&input);switch(input){case 1:flagg=Login();break; //登錄 case 2:Regist();break; //注冊(cè) case 0:puts("退出成功"); exit(0); //退出 }if(flagg==1) break;}while(input); //如果輸入除 1、2、0以外的數(shù),將提示重新選擇功能 return ; }

2、學(xué)生功能菜單

學(xué)生登錄成功后,系統(tǒng)會(huì)給出學(xué)生可以選擇的功能菜單。

//學(xué)生選擇測試類型(日常、考試、小游戲、系統(tǒng)評(píng)價(jià)建議) void sstudent() {int nn=N; srand (time(NULL));if(fllag==0) cout << "同學(xué),歡迎進(jìn)入學(xué)生測評(píng)系統(tǒng)" << endl;puts("");printf("\t\t\t============================================\n");printf("\t\t\t| |\n");printf("\t\t\t| 綜合能力測試系統(tǒng) |\n");printf("\t\t\t| |\n");printf("\t\t\t|==========================================|\n");printf("\t\t\t| 請(qǐng)選擇要操作的命令 |\n");printf("\t\t\t|------------------------------------------|\n");printf("\t\t\t| |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t| 1.日常測試 |\n");printf("\t\t\t| 2.考試測試 |\n");printf("\t\t\t| 3.猜數(shù)小游戲 |\n");printf("\t\t\t| 4.系統(tǒng)評(píng)價(jià)與建議 |\n");printf("\t\t\t| |\n");printf("\t\t\t============================================\n");printf("\t\t\t選擇(0---4):\t\t\t");fllag++;do {if (nn != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> nn;} while (nn != 0 && nn != 1 && nn != 2 && nn != 3 && nn != 4); puts("");if(nn==0){cout<<"退出成功,祝您生活愉快!!"<<endl; exit(0);}else if(nn==1) timetest(); //平時(shí)測試 else if(nn==2) examtest(); //考試測試else if(nn==3) gametest(); //猜數(shù)小游戲 else if(nn==4) estimate(0); //系統(tǒng)評(píng)價(jià)建議 }

?3、日常測試

選擇 1-日常測試 后,系統(tǒng)又會(huì)給出運(yùn)算類型菜單(加減乘除)、運(yùn)算難度菜單(簡單--一位數(shù)的運(yùn)算,中等--兩位數(shù)的運(yùn)算,困難--三位數(shù)的運(yùn)算),選擇不同的類型、難度,系統(tǒng)將提供相應(yīng)的題目。日常測試不需要選擇題目數(shù)量,隨做隨停,作對(duì)做錯(cuò)都有相關(guān)的提示,若想要正確答案,則輸入一個(gè) ? 即可,若要停止作答,則輸入一個(gè)除數(shù)字、?的其他字符即可。

?

// 1代表日常測試 函數(shù) void timetest() // {int n=N,a=N,b=N,c;int x,y;srand (time(NULL));cout << "您選擇了“日常測試”" << endl; cout << "那么,本次測試的成績將不會(huì)計(jì)入總分" << endl; printf(" **************題目類型*************\n");printf(" *--------------0.退出--------------*\n");printf(" *-------1.加法 2.減法-------*\n");printf(" *-------3.乘法 4.除法-------*\n");printf(" *************************************\n");do{//類型 if (b != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";printf(" 請(qǐng)輸入:"); cin >> b; if(b==0) exit(0); //退出系統(tǒng) } while (b != 1 && b != 2 && b != 3 && b != 4); puts("");cout<<" *********題目難度*********"<<endl;cout<<" ** 0.退出 **"<<endl;cout<<" ** 1.簡單 **"<<endl;cout<<" ** 2.中等 **"<<endl;cout<<" ** 3.困難 **"<<endl;cout<<" **&&&&&&&&&&&&&&&&&&&&&&**" <<endl; cout<<" 請(qǐng)輸入:"; do {//難度 if (a != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> a;if(a==0) exit(0); //退出系統(tǒng) } while (a != 1 && a != 2 && a != 3);puts("");cout << "即將開始測試" << endl;cout << "【注 1】若您需要退出,請(qǐng)?jiān)诖痤}區(qū)域輸入一個(gè)或多個(gè)除數(shù)字、問號(hào)以外的其他字符" << endl;cout << "【注 2】若您需要答案提示,請(qǐng)?jiān)诖痤}區(qū)域輸入一個(gè)問號(hào)" << endl; puts(""); cout << "測試開始!" << endl;puts("");string ans = "1";int res; //res是系統(tǒng)給出的正確答案 int flag = 0;while (1) //運(yùn)算開始 {flag = 0;if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難 // *******加法******* if (b == 1){res = x + y; //res是系統(tǒng)給出的正確答案 cout << "請(qǐng)輸入" << x << " + " << y << "的答案:";cin >> ans; //學(xué)生自行運(yùn)算的答案 getchar ();if (ans[0] >= '0' && ans[0] <= '9'){while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff1a;";cin >> ans;if (ans[0] == '?') //答案提示 { cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;puts("");flag = 1; break;}else if (ans[0] < '0' || ans[0] > '9') //不是數(shù)字 退出作答 {cout << "作答結(jié)束,即將退出,期待與您下次相遇!!"; flag = 2; break;} }if (flag == 1) continue; if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl; //輸出正確答案 cout << "請(qǐng)您再接再厲,加油!" << endl; puts(""); }else{cout << "作答結(jié)束,即將退出,期待與您下次相遇";break;} }// *******減法******* else if (b == 2) // 減法{if(x<y) swap(x,y);res = x - y; // 正確答案 cout << "請(qǐng)輸入" << x << " - " << y << "的答案:";cin >> ans; //學(xué)生自行運(yùn)算的答案if (ans[0] >= '0' && ans[0] <= '9') {while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff1a;";cin >> ans;if (ans[0] == '?') {cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;flag = 1;puts("");break;} else if (ans[0] < '0' || ans[0] > '9') {cout << "作答結(jié)束,即將退出,期待與您下次相遇"; flag = 2;break;}}if (flag == 1) continue;if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl; puts(""); }else {cout << "作答結(jié)束,即將退出,期待與您下次相遇";break;} }// *******乘法******* else if (b == 3) // 乘法{res = x * y;cout << "請(qǐng)輸入" << x << " * " << y << "的答案:";cin >> ans;if (ans[0] >= '0' && ans[0] <= '9') {while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff1a;";cin >> ans;if (ans[0] == '?') {cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;flag = 1;puts("");break;}else if (ans[0] < '0' || ans[0] > '9') {cout << "作答結(jié)束,即將退出,期待與您下次相遇"; flag = 2;break;}}if (flag == 1) continue;if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;puts(""); }else {cout << "作答結(jié)束,即將退出,期待與您下次相遇";break;} }// *******除法******* else //除法 {res = x / y;cout << "請(qǐng)輸入" << x << " / " << y << "的答案(答案取下整):";cin >> ans;if (ans[0] >= '0' && ans[0] <= '9'){while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff08;答案取下整):";cin >> ans;if (ans[0] == '?') {cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl; flag = 1;puts ("");break;} else if (ans[0] < '0' || ans[0] > '9') {cout << "作答結(jié)束,即將退出,期待與您下次相遇"; flag = 2;break;}}if (flag == 1) continue;if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;puts(""); }else {cout << "作答結(jié)束,即將退出,期待與您下次相遇";break; } } }puts("");puts(""); sstudent(); }

4、考試測試

選擇 2-考試測試 后,系統(tǒng)又會(huì)給出運(yùn)算類型菜單(加減乘除)、運(yùn)算難度菜單(簡單--一位數(shù)的運(yùn)算,中等--兩位數(shù)的運(yùn)算,困難--三位數(shù)的運(yùn)算),選擇不同的類型、難度,系統(tǒng)將提供相應(yīng)的題目。考試測試需要輸入需要做的題目的數(shù)量,作答結(jié)束后,系統(tǒng)會(huì)給出此次作答的正確題量、正確率、系統(tǒng)等級(jí)等信息。

?

void examtest() //考試測試 {int n,a=N,b=N,c;cout << "您選擇了“終極測試”" << endl; cout << "那么,本次測試的成績將會(huì)計(jì)入總分,請(qǐng)細(xì)心作答" << endl;printf(" **************題目類型***************\n");printf(" *--------------0.退出---------------*\n");printf(" *-------1.加法 2.減法-------*\n");printf(" *-------3.乘法 4.除法-------*\n");printf(" *************************************\n");printf(" 請(qǐng)輸入:"); do {//題目類型if (b != N) cout << " 當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> b;if(b==0) exit(0);} while (b != 1 && b != 2 && b != 3 && b != 4);cout<<" *********題目難度*********"<<endl;cout<<" ** 0.退出 **"<<endl;cout<<" ** 1.簡單 **"<<endl;cout<<" ** 2.中等 **"<<endl;cout<<" ** 3.困難 **"<<endl;cout<<" **&&&&&&&&&&&&&&&&&&&&&&**" <<endl;cout<<" 請(qǐng)輸入:";do {//題目的難度if (a != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> a;if(a==0) exit(0);} while (a != 1 && a != 2 && a != 3);cout << " 請(qǐng)選擇題目數(shù)量(建議能做多少選多少,否則會(huì)影響你的信譽(yù)哦):";cin >> c; //題量while (c<=0) {cout << " 您輸入的題量有誤,請(qǐng)重新選擇:" << endl;cin >> c;}if(b==1) Add(a,c);//加法 (難度,題量) else if(b==2) Sub(a,c); //減法 (難度,題量)else if(b==3) Mul(a,c); //乘法 (難度,題量)else if(b==4) Div(a,c); //除法 (難度,題量)puts("");puts("");sstudent(); } //判斷計(jì)算輸入答案是否正確 void result(double res, double ans,int xx) { if(xx==1) //加 減 乘 { if (ans==res) printf("答案正確了耶≧▽≦\n");else printf("正確答案應(yīng)該是%d\n答錯(cuò)了~(′·︵ ·`)~沒關(guān)系再繼續(xù)加油!!\n", res);}else if(xx==0) //除 {if (fabs(ans-res)<=0.01) printf("答案正確了耶≧▽≦\n");else printf("正確答案應(yīng)該是%d\n答錯(cuò)了~(′·︵ ·`)~沒關(guān)系再繼續(xù)加油!!\n", res);} puts(""); } //考試結(jié)果評(píng)價(jià) void evaluate(int num,int c) {printf("\n你一共答對(duì)了%d題\n", num);double acc;acc=100.0*(num*1.0)/(c*1.0); //正確率 printf("正確率為%.2f%%\n",acc); if (acc>=0 && acc<60) printf("等級(jí)為D 還要繼續(xù)加油啊!!\n");else if (acc>=60 && acc<70)printf("等級(jí)為C 還不錯(cuò)喲!!繼續(xù)加油\n");else if (acc>=70 && acc<90)printf("等級(jí)為B 不錯(cuò)不錯(cuò),朝著A奮斗吧\n");elseprintf("等級(jí)為A 天吶,太棒啦,繼續(xù)保持喲!!\n"); }void Add(int a,int c) 考試測試中的加法 (難度,題量) {printf("加法測試現(xiàn)在開始!!\n");int x,y,i,num=0; double res,ans;srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難res = x + y; //正確答案 cout << "第" << i << "題: 請(qǐng)輸入" << x << " + " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (ans == res) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) } void Sub(int a,int c) //考試測試中的減法 (難度,題量) {printf("減法測試現(xiàn)在開始!!\n");int x,y,i,num=0; double res,ans; srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難if(x<y) swap(x,y); res = x - y; //正確答案 cout << "第" << i << "題: 請(qǐng)輸入" << x << " - " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (ans == res) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) } void Mul(int a,int c) //乘法 (難度,題量) {printf("乘法測試現(xiàn)在開始!!\n");int x,y,i,num=0; double res,ans; srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難res = x*y; //正確答案 cout << "第" << i << "題: 請(qǐng)輸入" << x << " * " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (ans == res) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) } void Div(int a,int c) //試測試中的除法 (難度,題量) {printf("除法測試現(xiàn)在開始!!\n"); printf("【注】保留兩位小數(shù)\n"); int x,y,i,num=0; double res,ans;srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難res =(x*1.0)/(y*1.0);cout << "第" << i << "題: 請(qǐng)輸入" << x << " / " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (fabs(ans-res)<=0.01) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) }

5、猜數(shù)小游戲

這是一個(gè)休閑小游戲,輸入你想猜的數(shù)字范圍,系統(tǒng)將生成相應(yīng)的隨機(jī)數(shù),學(xué)生按照提示猜數(shù)。

void gametest() //簡單小游戲 {game();puts("");puts("");sstudent(); } int game() {int input = 0;srand((unsigned int)time(NULL)); do{printf("請(qǐng)選擇是否開始游戲?\n");printf("開始請(qǐng)按1! \t退出請(qǐng)按0!\n"); scanf("%d",&input);switch(input){case 1:printf("游戲開始! \n");guess();break;case 0:printf("退出游戲! \n");//exit(0);break;default:printf("選擇錯(cuò)誤,請(qǐng)重新開始!\n");break;}if(input==0) break; }while(input);getchar(); } int guess() {int n=0;//接收隨機(jī)數(shù) int s;//s表示生成數(shù)的范圍 int count=1;//計(jì)數(shù)猜了多少次 int x;//用戶猜的數(shù)字 printf("我想要猜的數(shù)字范圍:"); scanf("%d",&s); n=rand() % s + 1;do{printf("請(qǐng)猜數(shù)字:"); scanf("%d",&x); if(x>n){printf("你猜的數(shù)字太大了!");printf("請(qǐng)繼續(xù)猜!\n"); }else if(x<n){printf("你猜的數(shù)字太小了!");printf("請(qǐng)繼續(xù)猜!\n"); }else{printf("太棒了!你猜對(duì)了!\n"); break;} count++;}while(n!=x);printf("你猜了%d次!\n",count); }

?6、系統(tǒng)評(píng)價(jià)與建議

此項(xiàng)目與老師系統(tǒng)評(píng)價(jià)與建議相同。

四、完整代碼

(完整代碼中的注釋請(qǐng)仔細(xì)閱讀哦~~有一些小細(xì)節(jié))

#include <bits/stdc++.h> #include <windows.h> #include <mmsystem.h> #pragma comment (lib , "Winmm.lib") #include <string.h> #define HEADER1 "-------------------------老師信息------------------------ \n" #define HEADER11 "------------------------學(xué)生信息-------------------------\n" #define HEADER2 "| 賬號(hào) | 密碼 | 姓名 | 性別 |\n" #define HEADER3 "|-----------|--------------|-----------------|-----------|\n" using namespace std; const int N = 1e7 + 5; typedef struct User_basicinfo {char id[15];char paw[20];char name[15];char sex[5]; }Users; Users a={0},b={0}; int fflag=0,fllag=0;void identity(); //身份的選擇函數(shù)(1老師,2學(xué)生) //學(xué)生服務(wù) int Login();//學(xué)生登錄 void Regist();//學(xué)生注冊(cè) void LORE(); int to_digit(string s); //字符串轉(zhuǎn)換成數(shù)字的函數(shù) void sstudent(); //測試選擇 void timetest(); //平時(shí)測試 void examtest(); //考試測試 void evaluate(int num,int c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) void result(double res, double ans,int xx); //答案正確與否判斷 void Add(int a,int c); //考試測試中的加法 (難度,題量) void Sub(int a,int c); //考試測試中的減法 (難度,題量) void Mul(int a,int c); //試測試中的乘法 (難度,題量) void Div(int a,int c); //試測試中的除法 (難度,題量) void gametest(); //簡單小游戲 int game(); int guess(); void estimate(int xx); //系統(tǒng)評(píng)價(jià)//教師服務(wù) void teaLORE(); //學(xué)生登錄與注冊(cè)函數(shù) int LOGIN() ; //老師登錄 void REGIST(); //老師注冊(cè) void tteacher(); //老師的服務(wù) void readteacher(); //老師查看老師個(gè)人信息 void readstudent();//讀取現(xiàn)有學(xué)生信息 /* *******************我是友好的分界線***主函數(shù)******************* */ //主函數(shù) int main() {mciSendString ("open bgmm.mp3 alias bkmusic" , NULL , 0 , NULL);mciSendString ("play bkmusic repeat" , NULL , 0 , NULL);identity();return 0; }/* *******************我是友好的分界線***學(xué)生or老師選擇******************* */ //身份選擇 void identity() {int n=N;cout << "歡迎進(jìn)入學(xué)生綜合素質(zhì)測評(píng)系統(tǒng)" << endl;puts("");do {if (n != N) cout << "您輸入的身份信息有誤,請(qǐng)重新輸入" << endl;cout << "請(qǐng)選擇您的身份(1代表教師,2代表學(xué)生):";cin >> n;//輸入身份}while(n!=1&&n!=2);//學(xué)生身份if(n==2){LORE(); //學(xué)生登錄與注冊(cè) sstudent(); //選擇 }else //老師 {teaLORE(); //老師登錄與注冊(cè)tteacher(); //選擇 }}//學(xué)生注冊(cè)函數(shù) void Regist() {char tmp[20]={-1};FILE *pf=NULL;pf=fopen("users.txt","r");//用pf去指向文件 if(pf==NULL){printf("注冊(cè)時(shí)打開文件失敗\n");return ;}printf("\t\t\t歡迎來到注冊(cè)界面\n\n");printf("\t\t\t輸入賬號(hào)->");scanf("%s",a.id);printf("輸入成功!\n"); fread(&b, sizeof(Users), 1, pf); //【判斷】有沒有注冊(cè)過-比較字符串是否相等 //不相等->是否到文件尾 while(1) {if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0 )//未到文件尾 fread(&b, sizeof(Users), 1, pf);else//到了文件尾仍然沒有相同的字符串-說明輸入的賬號(hào)使新的 可以去注冊(cè)界面 {printf("賬號(hào)未注冊(cè)過,將跳轉(zhuǎn)到注冊(cè)界面\n");system("pause");break;//利用break來跳出無限循環(huán) }}else{printf("該賬號(hào)已注冊(cè)過\n");fclose(pf); pf=NULL;return;} } //【注冊(cè)界面】 printf("\t\t\t請(qǐng)輸入姓名->"); scanf("%s",a.name);printf("\t\t\t請(qǐng)輸入性別:男/女->"); do{getchar();scanf("%s",a.sex);if(strcmp(a.sex, "男")!=0&&strcmp(a.sex, "女")!=0)printf("\t\t\t輸入錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("\t\t\t請(qǐng)輸入密碼->"); scanf("%s",a.paw);printf("\t\t\t請(qǐng)?jiān)佥斎胍淮蚊艽a->"); do{scanf("%s",tmp);if(strcmp(tmp,a.paw)!=0)printf("\t\t\t兩次輸入密碼不一致,請(qǐng)?jiān)佥斎胍淮蚊艽a->");else break;}while(1);//兩次密碼一致fclose(pf); pf=NULL;pf=fopen("users.txt","a");//fwrite會(huì)在當(dāng)前文件指針的位置寫入數(shù)據(jù)//"w" 打開,文件指針指到頭,只寫;"a" 打開,指向文件尾fwrite(&a, sizeof(Users) , 1, pf );printf("\t\t\t注冊(cè)成功!\n"); fclose(pf); pf=NULL;return; }//登錄函數(shù) int Login() {Users a={0},b={0};FILE *pf=fopen("users.txt","r");if(pf==NULL){printf("文件打開失敗\n");return 0;}printf("歡迎來到登錄界面!\n");printf("請(qǐng)輸入賬號(hào)->");scanf("%s",a.id);fread(&b, sizeof(Users), 1, pf);while(1){if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0)//未到文件尾 {fread(&b, sizeof(Users), 1, pf);}else{printf("該賬號(hào)不存在,請(qǐng)先注冊(cè)\n");fclose(pf); pf=NULL;return 0;}}else//賬號(hào)注冊(cè)過->跳到輸入密碼 {break; //退出無限循環(huán),跳到輸入密碼 }} //【輸入密碼】 printf("請(qǐng)輸入密碼->"); do{scanf("%s",a.paw);if(strcmp(a.paw, b.paw)!=0 )printf("密碼錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("登錄成功!\n");fclose(pf); pf=NULL;return 1; } //學(xué)生登錄與注冊(cè)函數(shù) void LORE() {int input=-1,flagg=-1; do{printf("\t\t\t----------------------------------\n");printf("\t\t\t| 1.登錄 |\n");printf("\t\t\t| 2.注冊(cè) |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t----------------------------------\n");printf("請(qǐng)選擇功能->");scanf("%d",&input);switch(input){case 1:flagg=Login();break; //登錄 case 2:Regist();break; //注冊(cè) case 0:puts("退出成功"); exit(0); //退出 }if(flagg==1) break;}while(input); //如果輸入除 1、2、0以外的數(shù),將提示重新選擇功能 return ; }/* *******************我是友好的分界線***字符轉(zhuǎn)數(shù)字******************* */ //字符轉(zhuǎn)數(shù)字 int to_digit(string s) {int n = 0 , res = 0;while (s[n] != '\0') {res = res * 10 + (s[n] - '0');n ++;}return res; } /* *******************我是友好的分界線***服務(wù)類型(日常、考試、小游戲、系統(tǒng)評(píng)價(jià)建議)選擇***********/ //學(xué)生選擇測試類型(日常、考試、小游戲、系統(tǒng)評(píng)價(jià)建議) void sstudent() {int nn=N; srand (time(NULL));if(fllag==0) cout << "同學(xué),歡迎進(jìn)入學(xué)生測評(píng)系統(tǒng)" << endl;puts("");printf("\t\t\t============================================\n");printf("\t\t\t| |\n");printf("\t\t\t| 綜合能力測試系統(tǒng) |\n");printf("\t\t\t| |\n");printf("\t\t\t|==========================================|\n");printf("\t\t\t| 請(qǐng)選擇要操作的命令 |\n");printf("\t\t\t|------------------------------------------|\n");printf("\t\t\t| |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t| 1.日常測試 |\n");printf("\t\t\t| 2.考試測試 |\n");printf("\t\t\t| 3.猜數(shù)小游戲 |\n");printf("\t\t\t| 4.系統(tǒng)評(píng)價(jià)與建議 |\n");printf("\t\t\t| |\n");printf("\t\t\t============================================\n");printf("\t\t\t選擇(0---4):\t\t\t");fllag++;do {if (nn != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> nn;} while (nn != 0 && nn != 1 && nn != 2 && nn != 3 && nn != 4); puts("");if(nn==0){cout<<"退出成功,祝您生活愉快!!"<<endl; exit(0);}else if(nn==1) timetest(); //平時(shí)測試 else if(nn==2) examtest(); //考試測試else if(nn==3) gametest(); //猜數(shù)小游戲 else if(nn==4) estimate(0); //系統(tǒng)評(píng)價(jià)建議 }/* *******************我是友好的分界線***日常測試********************** */ // 1代表日常測試 函數(shù) void timetest() // {int n=N,a=N,b=N,c;int x,y;srand (time(NULL));cout << "您選擇了“日常測試”" << endl; cout << "那么,本次測試的成績將不會(huì)計(jì)入總分" << endl; printf(" **************題目類型*************\n");printf(" *--------------0.退出--------------*\n");printf(" *-------1.加法 2.減法-------*\n");printf(" *-------3.乘法 4.除法-------*\n");printf(" *************************************\n");do{//類型 if (b != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";printf(" 請(qǐng)輸入:"); cin >> b; if(b==0) exit(0); //退出系統(tǒng) } while (b != 1 && b != 2 && b != 3 && b != 4); puts("");cout<<" *********題目難度*********"<<endl;cout<<" ** 0.退出 **"<<endl;cout<<" ** 1.簡單 **"<<endl;cout<<" ** 2.中等 **"<<endl;cout<<" ** 3.困難 **"<<endl;cout<<" **&&&&&&&&&&&&&&&&&&&&&&**" <<endl; cout<<" 請(qǐng)輸入:"; do {//難度 if (a != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> a;if(a==0) exit(0); //退出系統(tǒng) } while (a != 1 && a != 2 && a != 3);puts("");cout << "即將開始測試" << endl;cout << "【注 1】若您需要退出,請(qǐng)?jiān)诖痤}區(qū)域輸入一個(gè)或多個(gè)除數(shù)字、問號(hào)以外的其他字符" << endl;cout << "【注 2】若您需要答案提示,請(qǐng)?jiān)诖痤}區(qū)域輸入一個(gè)問號(hào)" << endl; puts(""); cout << "測試開始!" << endl;puts("");string ans = "1";int res; //res是系統(tǒng)給出的正確答案 int flag = 0;while (1) //運(yùn)算開始 {flag = 0;if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難 // *******加法******* if (b == 1){res = x + y; //res是系統(tǒng)給出的正確答案 cout << "請(qǐng)輸入" << x << " + " << y << "的答案:";cin >> ans; //學(xué)生自行運(yùn)算的答案 getchar ();if (ans[0] >= '0' && ans[0] <= '9'){while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff1a;";cin >> ans;if (ans[0] == '?') //答案提示 { cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;puts("");flag = 1; break;}else if (ans[0] < '0' || ans[0] > '9') //不是數(shù)字 退出作答 {cout << "作答結(jié)束,即將退出,期待與您下次相遇!!"; flag = 2; break;} }if (flag == 1) continue; if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl; //輸出正確答案 cout << "請(qǐng)您再接再厲,加油!" << endl; puts(""); }else{cout << "作答結(jié)束,即將退出,期待與您下次相遇";break;} }// *******減法******* else if (b == 2) // 減法{if(x<y) swap(x,y);res = x - y; // 正確答案 cout << "請(qǐng)輸入" << x << " - " << y << "的答案:";cin >> ans; //學(xué)生自行運(yùn)算的答案if (ans[0] >= '0' && ans[0] <= '9') {while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff1a;";cin >> ans;if (ans[0] == '?') {cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;flag = 1;puts("");break;} else if (ans[0] < '0' || ans[0] > '9') {cout << "作答結(jié)束,即將退出,期待與您下次相遇"; flag = 2;break;}}if (flag == 1) continue;if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl; puts(""); }else {cout << "作答結(jié)束,即將退出,期待與您下次相遇";break;} }// *******乘法******* else if (b == 3) // 乘法{res = x * y;cout << "請(qǐng)輸入" << x << " * " << y << "的答案:";cin >> ans;if (ans[0] >= '0' && ans[0] <= '9') {while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff1a;";cin >> ans;if (ans[0] == '?') {cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;flag = 1;puts("");break;}else if (ans[0] < '0' || ans[0] > '9') {cout << "作答結(jié)束,即將退出,期待與您下次相遇"; flag = 2;break;}}if (flag == 1) continue;if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;puts(""); }else {cout << "作答結(jié)束,即將退出,期待與您下次相遇";break;} }// *******除法******* else //除法 {res = x / y;cout << "請(qǐng)輸入" << x << " / " << y << "的答案(答案取下整):";cin >> ans;if (ans[0] >= '0' && ans[0] <= '9'){while (res != to_digit(ans)) {cout << "答案錯(cuò)誤,請(qǐng)?jiān)俅屋斎?#xff08;答案取下整):";cin >> ans;if (ans[0] == '?') {cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl; flag = 1;puts ("");break;} else if (ans[0] < '0' || ans[0] > '9') {cout << "作答結(jié)束,即將退出,期待與您下次相遇"; flag = 2;break;}}if (flag == 1) continue;if (flag == 2) break;cout << "答案正確!" << endl;puts(""); }else if (ans[0] == '?'){cout << "本題答案為:" << res << endl;cout << "請(qǐng)您再接再厲,加油!" << endl;puts(""); }else {cout << "作答結(jié)束,即將退出,期待與您下次相遇";break; } } }puts("");puts(""); sstudent(); }/* *******************我是友好的分界線***考試測試********************** */ void examtest() //考試測試 {int n,a=N,b=N,c;cout << "您選擇了“終極測試”" << endl; cout << "那么,本次測試的成績將會(huì)計(jì)入總分,請(qǐng)細(xì)心作答" << endl;printf(" **************題目類型***************\n");printf(" *--------------0.退出---------------*\n");printf(" *-------1.加法 2.減法-------*\n");printf(" *-------3.乘法 4.除法-------*\n");printf(" *************************************\n");printf(" 請(qǐng)輸入:"); do {//題目類型if (b != N) cout << " 當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> b;if(b==0) exit(0);} while (b != 1 && b != 2 && b != 3 && b != 4);cout<<" *********題目難度*********"<<endl;cout<<" ** 0.退出 **"<<endl;cout<<" ** 1.簡單 **"<<endl;cout<<" ** 2.中等 **"<<endl;cout<<" ** 3.困難 **"<<endl;cout<<" **&&&&&&&&&&&&&&&&&&&&&&**" <<endl;cout<<" 請(qǐng)輸入:";do {//題目的難度if (a != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> a;if(a==0) exit(0);} while (a != 1 && a != 2 && a != 3);cout << " 請(qǐng)選擇題目數(shù)量(建議能做多少選多少,否則會(huì)影響你的信譽(yù)哦):";cin >> c; //題量while (c<=0) {cout << " 您輸入的題量有誤,請(qǐng)重新選擇:" << endl;cin >> c;}if(b==1) Add(a,c);//加法 (難度,題量) else if(b==2) Sub(a,c); //減法 (難度,題量)else if(b==3) Mul(a,c); //乘法 (難度,題量)else if(b==4) Div(a,c); //除法 (難度,題量)puts("");puts("");sstudent(); } //判斷計(jì)算輸入答案是否正確 void result(double res, double ans,int xx) { if(xx==1) //加 減 乘 { if (ans==res) printf("答案正確了耶≧▽≦\n");else printf("正確答案應(yīng)該是%d\n答錯(cuò)了~(′·︵ ·`)~沒關(guān)系再繼續(xù)加油!!\n", res);}else if(xx==0) //除 {if (fabs(ans-res)<=0.01) printf("答案正確了耶≧▽≦\n");else printf("正確答案應(yīng)該是%d\n答錯(cuò)了~(′·︵ ·`)~沒關(guān)系再繼續(xù)加油!!\n", res);} puts(""); } //考試結(jié)果評(píng)價(jià) void evaluate(int num,int c) {printf("\n你一共答對(duì)了%d題\n", num);double acc;acc=100.0*(num*1.0)/(c*1.0); //正確率 printf("正確率為%.2f%%\n",acc); if (acc>=0 && acc<60) printf("等級(jí)為D 還要繼續(xù)加油啊!!\n");else if (acc>=60 && acc<70)printf("等級(jí)為C 還不錯(cuò)喲!!繼續(xù)加油\n");else if (acc>=70 && acc<90)printf("等級(jí)為B 不錯(cuò)不錯(cuò),朝著A奮斗吧\n");elseprintf("等級(jí)為A 天吶,太棒啦,繼續(xù)保持喲!!\n"); }void Add(int a,int c) 考試測試中的加法 (難度,題量) {printf("加法測試現(xiàn)在開始!!\n");int x,y,i,num=0; double res,ans;srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難res = x + y; //正確答案 cout << "第" << i << "題: 請(qǐng)輸入" << x << " + " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (ans == res) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) } void Sub(int a,int c) //考試測試中的減法 (難度,題量) {printf("減法測試現(xiàn)在開始!!\n");int x,y,i,num=0; double res,ans; srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難if(x<y) swap(x,y); res = x - y; //正確答案 cout << "第" << i << "題: 請(qǐng)輸入" << x << " - " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (ans == res) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) } void Mul(int a,int c) //乘法 (難度,題量) {printf("乘法測試現(xiàn)在開始!!\n");int x,y,i,num=0; double res,ans; srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難res = x*y; //正確答案 cout << "第" << i << "題: 請(qǐng)輸入" << x << " * " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (ans == res) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) } void Div(int a,int c) //試測試中的除法 (難度,題量) {printf("除法測試現(xiàn)在開始!!\n"); printf("【注】保留兩位小數(shù)\n"); int x,y,i,num=0; double res,ans;srand (time(NULL));for(i=1;i<=c;i++){if (a == 1) x = rand() % 10 + 1 , y = rand() % 10 + 1; //簡單 if (a == 2) x = rand() % 100 + 1 , y = rand() % 100 + 1; //中等 if (a == 3) x = rand() % 1000 + 1 , y = rand() % 1000 + 1; //困難res =(x*1.0)/(y*1.0);cout << "第" << i << "題: 請(qǐng)輸入" << x << " / " << y << "的答案:";cin >> ans; //學(xué)生輸入的答案 if (fabs(ans-res)<=0.01) num ++;//記錄正確的題目的數(shù)目 result(res,ans,0); }evaluate(num,c); //考試結(jié)果評(píng)價(jià) (正確數(shù)目,總數(shù)) } /* *******************我是友好的分界線***猜數(shù)小游戲********************** */ void gametest() //簡單小游戲 {game();puts("");puts("");sstudent(); } int game() {int input = 0;srand((unsigned int)time(NULL)); do{printf("請(qǐng)選擇是否開始游戲?\n");printf("開始請(qǐng)按1! \t退出請(qǐng)按0!\n"); scanf("%d",&input);switch(input){case 1:printf("游戲開始! \n");guess();break;case 0:printf("退出游戲! \n");//exit(0);break;default:printf("選擇錯(cuò)誤,請(qǐng)重新開始!\n");break;}if(input==0) break; }while(input);getchar(); } int guess() {int n=0;//接收隨機(jī)數(shù) int s;//s表示生成數(shù)的范圍 int count=1;//計(jì)數(shù)猜了多少次 int x;//用戶猜的數(shù)字 printf("我想要猜的數(shù)字范圍:"); scanf("%d",&s); n=rand() % s + 1;do{printf("請(qǐng)猜數(shù)字:"); scanf("%d",&x); if(x>n){printf("你猜的數(shù)字太大了!");printf("請(qǐng)繼續(xù)猜!\n"); }else if(x<n){printf("你猜的數(shù)字太小了!");printf("請(qǐng)繼續(xù)猜!\n"); }else{printf("太棒了!你猜對(duì)了!\n"); break;} count++;}while(n!=x);printf("你猜了%d次!\n",count); }/* *******************我是友好的分界線***系統(tǒng)評(píng)價(jià)與建議********************** */ void estimate(int xx) //統(tǒng)評(píng)價(jià)與建議 {int sorce;string words;printf("歡迎進(jìn)入系統(tǒng)評(píng)價(jià)界面\n"); printf("您對(duì)我們系統(tǒng)滿意程度是多少呢?\n");printf("請(qǐng)打分(0-10):\n"); cin>>sorce;printf("感謝您的評(píng)價(jià),我們會(huì)繼續(xù)努力的,為您提供更優(yōu)質(zhì)的服務(wù)\n");puts("");printf("您對(duì)我們的系統(tǒng)有什么建議嗎?\n");cin>>words;puts("");printf("您的建議是我們前進(jìn)的動(dòng)力,最后,祝您生活愉快喲 ≧▽≦\n");puts("");puts("");if(xx==0) sstudent(); //學(xué)生 else if(xx==1) tteacher(); //老師 }//老師的功能 /* *******************我是友好的分界線***學(xué)生注冊(cè)與登錄******************* */ int LOGIN() //老師登錄 {Users a={0},b={0};FILE *pf=fopen("data.txt","r");if(pf==NULL){printf("文件打開失敗\n");return 0;}printf("歡迎來到登錄界面!\n");printf("請(qǐng)輸入賬號(hào)->");scanf("%s",a.id);fread(&b, sizeof(Users), 1, pf);while(1){if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0)//未到文件尾 {fread(&b, sizeof(Users), 1, pf);}else{printf("該賬號(hào)不存在,請(qǐng)先注冊(cè)\n");fclose(pf); pf=NULL;return 0;}}else//賬號(hào)注冊(cè)過->跳到輸入密碼 {break; //退出無限循環(huán),跳到輸入密碼 }} //【輸入密碼】 printf("請(qǐng)輸入密碼->"); do{scanf("%s",a.paw);if(strcmp(a.paw, b.paw)!=0 )printf("密碼錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("登錄成功!\n");return 1;fclose(pf); pf=NULL; } void REGIST() //老師注冊(cè) {char tmp[20]={-1};FILE *pf=NULL;pf=fopen("data.txt","r");//用pf去指向文件 if(pf==NULL){printf("注冊(cè)時(shí)打開文件失敗\n");return ;}printf("\t\t\t歡迎來到注冊(cè)界面\n\n");printf("\t\t\t輸入賬號(hào)->");scanf("%s",a.id);printf("輸入成功!\n"); fread(&b, sizeof(Users), 1, pf); //【判斷】有沒有注冊(cè)過-比較字符串是否相等 //不相等->是否到文件尾 while(1) {if(strcmp(a.id, b.id)!=0 ){if(feof(pf)==0 )//未到文件尾 fread(&b, sizeof(Users), 1, pf);else//到了文件尾仍然沒有相同的字符串-說明輸入的賬號(hào)使新的 可以去注冊(cè)界面 {printf("賬號(hào)未注冊(cè)過,將跳轉(zhuǎn)到注冊(cè)界面\n");system("pause");break;//利用break來跳出無限循環(huán) }}else{printf("該賬號(hào)已注冊(cè)過\n");fclose(pf); pf=NULL;return;} } //【注冊(cè)界面】 printf("\t\t\t請(qǐng)輸入姓名->"); scanf("%s",a.name);printf("\t\t\t請(qǐng)輸入性別:男/女->"); do{getchar();scanf("%s",a.sex);if(strcmp(a.sex, "男")!=0&&strcmp(a.sex, "女")!=0)printf("\t\t\t輸入錯(cuò)誤,請(qǐng)重新輸入->");else break;}while(1);printf("\t\t\t請(qǐng)輸入密碼->"); scanf("%s",a.paw);printf("\t\t\t請(qǐng)?jiān)佥斎胍淮蚊艽a->"); do{scanf("%s",tmp);if(strcmp(tmp,a.paw)!=0)printf("\t\t\t兩次輸入密碼不一致,請(qǐng)?jiān)佥斎胍淮蚊艽a->");else break;}while(1);//兩次密碼一致fclose(pf); pf=NULL;pf=fopen("data.txt","a");//fwrite會(huì)在當(dāng)前文件指針的位置寫入數(shù)據(jù)//"w" 打開,文件指針指到頭,只寫;"a" 打開,指向文件尾fwrite(&a, sizeof(Users) , 1, pf );printf("\t\t\t注冊(cè)成功!\n"); fclose(pf); pf=NULL;return; } void teaLORE() //老師登錄與注冊(cè)函數(shù) {int input=-1,flagg=0; do{printf("\t\t\t----------------------------------\n");printf("\t\t\t| 1.登錄 |\n");printf("\t\t\t| 2.注冊(cè) |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t----------------------------------\n");printf("請(qǐng)選擇功能->");scanf("%d",&input);switch(input){case 1:flagg=LOGIN();break; //登錄 case 2:REGIST();break; //注冊(cè) case 0:puts("退出成功"); exit(0); //退出 }if(flagg==1) break;}while(input); //如果輸入除 1、2、0以外的數(shù),將提示重新選擇功能 return ; }/* *******************我是友好的分界線***老師的服務(wù)******************* */ void tteacher() //老師的服務(wù) {int nn=N; srand (time(NULL));if(fflag==0) cout << "老師,歡迎進(jìn)入老師管理系統(tǒng)" << endl;puts("");printf("\t\t\t============================================\n");printf("\t\t\t| |\n");printf("\t\t\t| 綜合能力測試系統(tǒng) |\n");printf("\t\t\t| |\n");printf("\t\t\t|==========================================|\n");printf("\t\t\t| 請(qǐng)選擇要操作的命令 |\n");printf("\t\t\t|------------------------------------------|\n");printf("\t\t\t| |\n");printf("\t\t\t| 0.退出 |\n");printf("\t\t\t| 1.查看老師信息 |\n");printf("\t\t\t| 2.查看學(xué)生信息 |\n");printf("\t\t\t| 3.系統(tǒng)評(píng)價(jià)與建議 |\n");printf("\t\t\t| |\n");printf("\t\t\t============================================\n");printf("\t\t\t選擇(0---4):\t\t\t");fflag++;do {if (nn != N) cout << "當(dāng)前選項(xiàng)不存在,請(qǐng)重新選擇:";cin >> nn;} while (nn != 0 && nn != 1 && nn != 2 && nn != 3 ); puts("");if(nn==0){cout<<"退出成功,祝您生活愉快!!"<<endl; exit(0);}else if(nn==1) readteacher(); //平時(shí)測試 else if(nn==2) readstudent(); //老師查看個(gè)人信息 else if(nn==3) estimate(1); //系統(tǒng)評(píng)價(jià)建議 } /* *******************我是友好的分界線***老師查看個(gè)人信息********************** */ void readteacher() //老師查看個(gè)人信息 {cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;printf(" "); fstream f;//文件讀取,把原來的ios::out改成ios::in f.open("data.txt",ios::in);string s;//一直讀到文件末尾 while(f>>s)cout<<s<<endl; //顯示讀取內(nèi)容 f.close();puts(""); puts("");tteacher(); } /* *******************我是友好的分界線***老師查看學(xué)生信息********************** */ void readstudent() //老師查看學(xué)生信息 {cout<<endl<<HEADER11<<HEADER2<<HEADER3 ;printf(" "); fstream f;//文件讀取,把原來的ios::out改成ios::in f.open("users.txt",ios::in);string s;//一直讀到文件末尾 while(f>>s)cout<<s<<endl; //顯示讀取內(nèi)容 f.close();puts("");puts("");tteacher(); }

五、路徑下的文件

?這就是我們小組這個(gè)項(xiàng)目的所有內(nèi)容,因?yàn)槲覀冞€在大一,還有很多其他功能我們想實(shí)現(xiàn)卻心有余而力不足,但是能做到這樣我們已經(jīng)很滿意了,希望能對(duì)你有幫助,可能有些細(xì)節(jié)我的文字描述不太清楚,有問題歡迎在評(píng)論區(qū)提!!

總結(jié)

以上是生活随笔為你收集整理的综合能力测评系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。