夜深深~帮别人做课程设计。。。
生活随笔
收集整理的這篇文章主要介紹了
夜深深~帮别人做课程设计。。。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/***
Answer.cpp
單項選擇題標準化考試系統設計
***/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN sizeof(struct test)
struct test
{
char number[10];
char que[81];
char answer1[81];
char answer2[81];
char answer3[81];
char answer4[81];
char ture;
struct test *next;
};
struct test *head;//全局變量儲存第一個結構體的指針
struct test *p_head=NULL;//儲存所有的題目
int que_number=-1;
char que_number_string[10];
/***
put_all_que() 修改后的試題重新寫入
return int 寫入是否成功標志
***/
int put_all_que()
{
FILE *fp;
int n=1;
char number[10];
struct test *p;
remove("test.txt");
if((fp=fopen("test.txt","a"))==NULL)
{
printf("文件打開失敗請檢查當前文件夾下的test.txt文件。\n");
exit(0);
}
p=p_head->next;
do
{
fputc('\n',fp);
itoa(n,number,10);
fputs(number,fp);
fputc(' ',fp);
fputs(p->que,fp);
fputc(' ',fp);
fputs(p->answer1,fp);
fputc(' ',fp);
fputs(p->answer2,fp);
fputc(' ',fp);
fputs(p->answer3,fp);
fputc(' ',fp);
fputs(p->answer4,fp);
fputc(' ',fp);
fputc(p->ture,fp);
p=p->next;
n++;
}
while (p!=NULL);
fclose(fp);
return 1;
}
/***
get_all_que() 獲取全部的題目
return void
***/
void get_all_que()
{
FILE *fp;
struct test *p1;
struct test *p2;
char ch,ch1[5];
int n=1,i,wz,py;
if((fp=fopen("test.txt","r"))==NULL)//只讀方式打開文件
{
printf("文件打開失敗請檢查當前程序文件夾下的test.txt文件。\n");
exit(0);
}
do
{
py=1;
ch=fgetc(fp);
if (ch==EOF) break;
for(i=0;ch!='\n'&&ch!=-1;i++)//循環判斷回車符個數
{
py++;
ch=fgetc(fp);
}
p1=(struct test *)malloc(LEN);
wz=ftell(fp);//記錄指針當前位置
fseek(fp,(wz-py-1),0);//調整指針位置到行首
fscanf(fp,"%s%s%s%s%s%s%s",&p1->number,&p1->que,&p1->answer1,&p1->answer2,&p1->answer3,&p1->answer4,&ch1);
fseek(fp,wz,0);//調整指針位置到行末
p1->ture=ch1[0];
if (n==1)
{
p_head=p1;
n=0;
}
else p2->next=p1;
p2=p1;
}while(!feof(fp));//文件結束跳出循環
p2->next=NULL;
fclose(fp);
}
/***
now_que_number_exe() 檢查當前有多少題目
return int 當前題目數
***/
int now_que_number_exe() //檢查當前有多少題目
{
FILE *fp;
int now_que_number=0;
char ch;
char cc[810];
if((fp=fopen("test.txt","r"))==NULL)//只讀方式打開文件
{
printf("文件打開失敗請檢查當前程序文件夾下的test.txt文件。\n");
exit(0);
}
ch=fgetc(fp);
if (ch!=EOF)
{
do
{
now_que_number++;
fgets(cc,sizeof(cc),fp);
if (cc[0]==EOF) break;
}
while(!feof(fp));
}
fclose(fp);
return now_que_number;
}
int zts(int m)//將第m道題裝入內存,輸入-1時將返回總題數
{
FILE *fp;
struct test *p1=NULL;
char ch,ch1[5];
char number[10];
int i,n=0,wz,py;
if((fp=fopen("test.txt","r"))==NULL)//只讀方式打開文件
{
printf("文件打開失敗請檢查當前程序文件夾下的test.txt文件。\n");
exit(0);
}
do
{
py=1;
ch=fgetc(fp);
for(i=0;ch!='\n'&&ch!=-1;i++)//循環判斷回車符個數
{
py++;
ch=fgetc(fp);
}
n++; //儲存行數的變量
if(n==m)//如果當前行數與傳入參數相等
{
if(p1==NULL)//判斷是否是第一次開辟內存空間
{
p1=(struct test *)malloc(LEN);
head=p1;
p1->next=NULL;
}
else
{
p1->next=p1;
p1=(struct test *)malloc(LEN);
p1->next=NULL;
}
wz=ftell(fp);//記錄指針當前位置
fseek(fp,(wz-py-1),0);//調整指針位置到行首
fscanf(fp,"%s%s%s%s%s%s%s",&number,&p1->que,&p1->answer1,&p1->answer2,&p1->answer3,&p1->answer4,&ch1);
fseek(fp,wz+1,0);//調整指針位置到行末
p1->ture=ch1[0];
break;//將數據裝入內存后跳出循環
}
}while(!feof(fp));//文件結束跳出循環
fclose(fp);
return n;//返回題目總數n
}
void exe1()
{
void main();
void exe2();
int n,m=0,tm,i,t=0,f=0;
char ans[2];
struct test *p1;
system("cls");
printf("請輸入要答題數:");
scanf("%d",&n);
tm=zts(-1);
if(0>n||n>tm)
{
printf("答題數應小于總數!");
exe1();
}
for(i=0;i<n;i++)//n為用戶要答題數
{
do
{
m=rand();//置隨機數
}while(!(0<m&&m<=tm));//判斷產生的隨機數是否符合要求
zts(m);
p1=head;//將zts開辟的結構體首地址賦給p1
printf("\n第%d題:\n",i+1);
printf("%s\n%s\n%s\n%s\n%s\n請輸入答案:",p1->que,p1->answer1,p1->answer2,p1->answer3,p1->answer4);
scanf("%s",&ans);
if(toupper(ans[0])==p1->ture)//判斷用戶輸入答案是否正確
{
printf("恭喜你答對了!\n\n");
t++;//回答正確統計
}
else
{
printf("對不起,你答錯了。。。\n正確答案是:%c\n\n",p1->ture);
f++;//回答錯誤統計
}
}
p1=head;
do
{
head=p1->next;
free(p1);
p1=head;
}while(p1!=NULL);//釋放結構體占用內存
printf("*******************************\n");
printf("\n已完成測試!\n共做%d道題:%d錯誤,%d正確。\n正確率:%5.2f%%\n\n",n,f,t,(float)t/n*100);
printf("*******************************\n");
printf("\n\n1.繼續答題;2.添加題目;3.返回主菜單;\n請選擇:");
i=0;
scanf("%d",&i);
if(i==1)
exe1();//繼續答題
else
if(i==2)
exe2();//添加題目
else
main();//返回主菜單
}
void exe2()//實現用戶自主輸入題目
{
void main();
system("cls");
int n;
FILE *fp;
if((fp=fopen("test.txt","a"))==NULL)
{
printf("文件打開失敗請檢查當前文件夾下的test.txt文件。\n");
exit(0);
}
struct test *p1=NULL;
p1=(struct test *)malloc(LEN);//開辟內存空間
do
{
printf("請輸入題目:");
scanf("%s",&p1->que);
}while(p1->que[0]=='\0');
do
{
printf("請輸入選項A:");
scanf("%s",&p1->answer1);
}while(p1->answer1=='\0');
do
{
printf("請輸入選項B:");
scanf("%s",&p1->answer2);
}while(p1->answer2=='\0');
do
{
printf("請輸入選項C:");
scanf("%s",&p1->answer3);
}while(p1->answer3=='\0');
do
{
printf("請輸入選項D:");
scanf("%s",&p1->answer4);
}while(p1->answer4=='\0');
printf("請輸入答案:");
do
{
scanf("%c",&p1->ture);
p1->ture=toupper(p1->ture);
}while(p1->ture!='A'&&p1->ture!='B'&&p1->ture!='C'&&p1->ture!='D');
printf("\n確認輸入題目?\n1.是。 2.否。\n");
scanf("%d",&n);
if(n==1)
{
fputc('\n',fp);
if (que_number==-1)
{
que_number=now_que_number_exe()+1;
itoa(que_number,que_number_string,10);
fputs(que_number_string,fp);
fputc(' ',fp);
}
else
{
que_number++;
itoa(que_number,que_number_string,10);
fputs(que_number_string,fp);
fputc(' ',fp);
}
fputs(p1->que,fp);
fputc(' ',fp);
fputs("A.",fp);
fputs(p1->answer1,fp);
fputc(' ',fp);
fputs("B.",fp);
fputs(p1->answer2,fp);
fputc(' ',fp);
fputs("C.",fp);
fputs(p1->answer3,fp);
fputc(' ',fp);
fputs("D.",fp);
fputs(p1->answer4,fp);
fputc(' ',fp);
fputc(p1->ture,fp);
fclose(fp);
printf("保存成功!");
system("cls");
free(p1);
printf("是否繼續添加?\n1.繼續添加 2.返回主菜單\n");
scanf("%d",&n);
if(n==1)
exe2();
else
main();
}
else
{
free(p1);
exe2();
}
}
void exe3(int change_number) //修改試題
{
struct test *p;
struct test *pt;
int n;
int is_changed_choose;
char que_content[81];
int number;
system("cls");
if (p_head==NULL)
get_all_que();
if (p_head!=NULL)
{
if (change_number==-1) printf("所有題目如下\n");
p=p_head->next;
do
{
number=atoi(p->number);
if (number==change_number)
{
printf("是否修改題目? 是(1) , 否(0)");
do
{
scanf("%d",&is_changed_choose);
}while (is_changed_choose!=1 && is_changed_choose!=0);
if (is_changed_choose)
{
printf("\n你想修改成什么題目:");
scanf("%s",&que_content);
strcpy(p->que,que_content);
}
printf("是否修改選項? 是(1) , 否(0)");
scanf("%d",&is_changed_choose);
while (is_changed_choose==1)
{
}
printf("是否修改標準答案? 是(1) , 否(0)");
scanf("%d",&is_changed_choose);
if (is_changed_choose)
{
}
break;
}
if (change_number==-1) printf("%s. %s\n %s %s\n %s %s",p->number,p->que,p->answer1,p->answer2,p->answer3,p->answer4);
if (change_number==-1) printf("%c\n",p->ture);
p=p->next;
}
while (p!=NULL);
if (change_number==-1) printf("所有題目如上\n輸入想要修改題目的編號");
if (change_number==-1)
{
scanf("%d",&n);
exe3(n);
}
else
{
if (put_all_que())
{
printf("修改成功!");
p_head=NULL;
}
else printf("修改失敗!");
}
}
}
void exe4(int del_number) //刪除試題
{
struct test *p;
struct test *pt;
int n;
int number;
system("cls");
if (p_head==NULL)
get_all_que();
if (p_head!=NULL)
{
if (del_number==-1) printf("所有題目如下\n");
p=p_head->next;
do
{
if (del_number==1)
{
p_head->next=p->next;
break;
}
number=atoi(p->number);
if (number+1==del_number)
{
pt=p->next;
p->next=pt->next;
break;
}
if (del_number==-1) printf("%s. %s\n %s %s\n %s %s",p->number,p->que,p->answer1,p->answer2,p->answer3,p->answer4);
if (del_number==-1) printf("%c\n",p->ture);
p=p->next;
}
while (p!=NULL);
if (del_number==-1) printf("所有題目如上\n輸入想要刪除題目的編號");
if (del_number==-1)
{
scanf("%d",&n);
exe4(n);
}
else
{
if (put_all_que())
{
printf("刪除成功!");
p_head=NULL;
}
else printf("刪除失敗!");
}
}
}
void exe5() //查看英雄榜
{
}
void main()
{
system("cls");
int n;
printf("********************************\n");
printf("歡迎使用單項選擇題標準化考試系統\n");
printf("********************************\n");
printf("\t1.開始答題。\n");
printf("\t2.添加試題。\n");
printf("\t3.修改試題。\n");
printf("\t4.刪除試題。\n");
printf("\t5.查看英雄榜。\n");
printf("\t6.退出系統。\n");
printf("\n請選擇:");
scanf("%d",&n);
switch(n)
{
case 1:exe1();break;
case 2:exe2();break;
case 3:exe3(-1);break;
case 4:exe4(-1);break;
case 5:exe5();break;
case 6:printf("\n^-^,goodbye!\n");
}while(n!=6);
}
?
????????????4點多了,這幾天重慶的天氣一天比一天涼了,幫同學的同學寫課程設計。。。(寫完了請我吃飯,真心無所謂了)。寫了一點點,上面的代碼等到大學畢業的時候看看,會有什么感覺哩(這也挺有意思的!)。
????????????現在晚上基本睡不著了,話說鍛煉熬夜編程的能力,盡然搞成了這種狀況,黑白顛倒。其實黑白顛倒倒也好,但是我是白天也不怎么睡覺,真成神仙了。就怕萬一年紀輕輕怎么了。-?-!?誒!現在什么身體亞健康已經不存在了,根本就是不健康。其實現在的狀況也要說是我脾氣的原因,往往不做完事不罷休。想著今天的事情今天一定要做完(殊不知已經熬夜過了今天,挺搞笑的!)。
????????????4:30,祝福所有人健康。while(1)?echo?"Happy";
轉載于:https://blog.51cto.com/hirube/1288856
總結
以上是生活随笔為你收集整理的夜深深~帮别人做课程设计。。。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python天天美味(13) - str
- 下一篇: Android NDK: WARNING