當前位置:編程學習大全網 - 源碼下載 - 做壹個c語言程序單項選擇題標準化考試系統

做壹個c語言程序單項選擇題標準化考試系統

h"

ncompare()

{

char s[100];

char key[100]="haha";

while(1)

{

printf("請輸入密碼進行驗證:");

there: scanf("%s",s);

if(strcmp(s,key)==0)

{

printf("密碼驗證正確,進入答題系統........\n");

break;

}

else

{

printf("密碼錯誤,請重新輸入:");

goto there;

}

}

}

//菜單

menu_list()

{

int c;

printf(" *******************主菜單**********************\n");

printf(" 1 進入答題\n");

printf(" 2 錄入新的試題\n");

printf(" 3 刪除記錄試題\n");

printf(" 4 插入試題到指定位置\n");

printf(" 5 保存試題到文本\n");

printf(" 6 判斷試題,查看成績\n");

printf(" 7 輸出例題以及答案\n");

printf(" 8 載入試題庫\n");

printf(" 9 退出答題系統\n");

printf(" ***********************************************\n");

printf(" 請選擇妳想要的操作(1-9):");

scanf("%d",&c);

if(c<1||c>9)

{

printf("操作數據錯誤!請重新輸入選項:\n");

return 0;

}

else

return c;

}

//答題系統

test_test(struct test *p,int n)

{

int j;

int num;

int i;

int th=0;

int tem[100];

if(n==0)

printf("目前題庫中還沒有題目,請載入題庫後在進行操作\n");

else

{

printf("首先請輸入妳希望測試的題目個數,系統會隨機分配妳輸入個數的題目(目前總題目個數為%d)\n請輸入要測試的題目個數:",n);

scanf("%d",&num);

for(i=0;i<num;i++)

{

here: th=rand()%n;

tem[i]=th;

for(j=0;j<i;j++)

if(tem[j]==tem[i])

{

goto here;

}

printf(" =============================================\n");

printf(" 題目:%s\n",p[th].tm);

for(j=0;j<4;j++)

{

printf(" 選項:%s\n",p[th].xx[j]);

}

printf(" 請輸入妳的答案(註意是大小寫,大小寫錯誤記零分):");

scanf("%s",p[th].as);

printf(" =============================================\n");

}

}

}

//試題錄入

test_in(struct test *p,int n)

{

int i,j=0;

char sign='y';

while(sign=='Y'||sign=='y')

{

printf("===========請按提示輸入數據===========\n");

printf("請輸入題目:");

getchar();

aa: gets(p[n+j].tm);

for(i=0;i<n+j;i++)

if(p[n+j].tm[0]==p[i].tm[0])

{

printf("已有題號,請重新輸入!\n題號:");

goto aa;

}

for(i=1;i<=4;i++)

{

printf("請輸入第%d個選項:",i);

gets(p[n+j].xx[i-1]);

}

printf("請輸入正確答案:");

scanf("%s",p[n+j].da);

printf("====>提示是否繼續錄入試題(Y or y繼續,任意鍵退出):\n");

getchar();

scanf("%c",&sign);

j++;

}

printf(" ===============轉到主菜單==================\n");

return n+j;

}

//文件保存

void save(struct test *ts,int n)

{

FILE *fp;

int i=0;

char filename[50];

printf("請輸入導出文件夾,列如:G:\\f1\\score.txt\n");

scanf("%s",filename);

if((fp=fopen(filename,"w+"))==NULL)

{

printf("文件保存失敗!");

exit(1);

}

while(i<n)

{

fwrite(&ts[i],sizeof(struct test),1,fp);

i++;

}

fclose(fp);

printf("------記錄已保存到文件中-------\n");

}

//評分系統

test_compare(struct test *p,int n)

{

int i;

int temp=0;

int count=0;

if(n==0)

{

printf("目前題庫中還沒有題目,請載入題庫後在進行操作\n");

return 0;

}

else

{

for(i=0;i<n;i++)

{

if(!strcmp(p[i].da,p[i].as))

{

count++;

}

}

printf("妳答對的總題數是%d\n",count);

return n;

}

}

//例題以及答案

test_out(struct test *p,int n)

{

int i=0,j=0;

if(n==0)

{

printf("很抱歉,試題庫中暫時沒有任何試題!\n");

printf(" ===============轉到主菜單==================\n");

}

else

while(i<n)

{

printf(" =============================================\n");

printf(" 題目:%s\n",p[i].tm);

for(j=0;j<4;j++)

{

printf(" 選項:%s\n",p[i].xx[j]);

}

printf(" 正確答案:%s\n",p[i].da);

printf(" =============================================\n");

i++;

}

}

//試題庫載入

test_under(struct test *p)

{

int i;

FILE *fp;

char filename[20];

printf("請輸入妳要導入的文件名及路徑:");

scanf("%s",filename);

if((fp=fopen(filename,"rb"))==NULL)

{

printf("文件打開失敗!\n");

return 0;

}

i=0;

while(!feof(fp))

{

if(1!=fread(&p[i],sizeof(struct test),1,fp))

break;

i++;

}

fclose(fp);

printf("已經成功從文件%s導入數據!\n",filename);

return i;

}

//主函數

main()

{

int n=0;

struct test ts[100];

system("color 1f");

ncompare();

while(1)

{

switch(menu_list())

{

case 1: test_test(ts,n);break;

case 2: n=test_in(ts,n);break;

case 3: n=delete1(ts,n);break;

case 4: n=insert(ts,n);break;

case 5: save(ts,n);break;

case 6: test_compare(ts,n);break;

case 7: test_out(ts,n);break;

case 8: n=test_under(ts);break;

case 9: exit(0);

}

}

}

  • 上一篇:百度地圖API基本使用(壹)
  • 下一篇:深圳倡議掃碼消費不用關註公號,如何看待強制關註公眾號的行為?
  • copyright 2024編程學習大全網