first commit

master
p83456109 7 years ago
commit 958e2f2256

@ -0,0 +1,62 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define M 100
void add()
{typedef struct question{
char mainq[500];
char ala[150];
char alb[150];
char alc[150];
char ald[150];
char ans;
}ques;
char _m[20]="password";
char _n[20];
int z=3;
while(z--)
{
printf("你还有%d次机会输入管理员密码",z+1);//管理员密码:password
scanf("%s",_n);
printf("\n");
if(strcmp(_m,_n)==0)//判断是否与管理员密码一致
{
system("cls");
int i,n;
FILE *fp;
ques que[M];
printf("请输入你想添加的试题数量小于100");//限定数量以保证不出错
scanf("%d",&n);
fp=fopen("question.dat","ab");
if(fp==NULL)
{
printf("文件处理失败!");
return ;
}
for(i=1;i<=n;i++)
{
printf("输入第%d个试题的题干",i);
scanf("%s",que[i].mainq);
printf("输入该题的选项A");
scanf("%s",que[i].ala);
printf("输入该题的选项B");
scanf("%s",que[i].alb);
printf("输入该题的选项C");
scanf("%s",que[i].alc);
printf("输入该题的选项D");
scanf("%s",que[i].ald);
getchar();
printf("请输入该题的正确选项:");
scanf("%c",&que[i].ans);
printf("\n");
fwrite(&que[i],sizeof(struct question),1,fp);//将试题加入到题库中
}
fclose(fp);
printf("\t\t\t\t试题录入完成,按任意键返回主菜单");
break;
}
}
return ;
}

Binary file not shown.

@ -0,0 +1,42 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define M 100
void browse()
{typedef struct question{
char mainq[500];
char ala[150];
char alb[150];
char alc[150];
char ald[150];
char ans;
}ques;
char _m[20]="password";
char _n[20];
int z=3;
while(z--)
{
printf("你还有%d次机会输入管理员密码",z+1);//密码:password
scanf("%s",_n);
printf("\n");
if(strcmp(_m,_n)==0)
{
ques que[1000];
FILE *fp=fopen("question.dat","rb");
int i;
for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++)//当fread函数返回值不为1时代表已经到文件末尾
{
printf("%d.%s\n",i+1,que[i].mainq);
printf("A.%s\n",que[i].ala);
printf("B.%s\n",que[i].alb);
printf("C.%s\n",que[i].alc);
printf("D.%s\n",que[i].ald);
printf("正确选项:%c\n\n",que[i].ans);
}
fclose(fp);
break;
}
}
return ;
}

Binary file not shown.

@ -0,0 +1,110 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define M 100
void change(){
typedef struct question{
char mainq[500];
char ala[150];
char alb[150];
char alc[150];
char ald[150];
char ans;
}ques;
int z=3;
char _m[]="password";
char _n[20];
while(z--)
{
printf("你还有%d次机会输入管理员密码",z+1);//密码password
scanf("%s",_n);
printf("\n");
if(strcmp(_m,_n)==0)
{
FILE *fp,*fp2;
int flag=0,n,jud,i,N;
system("cls");
char q[500];
ques que[M],ll;
fp=fopen("question.dat","ab+");
if(fp==NULL)
{
printf("文件处理失败");
return ;
}
do{
jud=flag=0;
rewind(fp);
printf("请输入您想更改的试题的完整题干:\n");
scanf("%s",q);
for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++)
{
if(strcmp(q,que[i].mainq)==0)
{
printf("该题目前状态如下:\n");
printf("%s\n",que[i].mainq);
printf("A.%s\n",que[i].ala);
printf("B.%s\n",que[i].alb);
printf("C.%s\n",que[i].alc);
printf("D.%s\n",que[i].ald);
printf("正确选项:%c\n",que[i].ans);
N=i;
flag=1;
break;
}
}
if(flag==1)
{
printf("请输入您想修改的项1.选项A\t2.选项B\t3.选项C\t4.选项D\t5.题干\t6.正确选项\t0.取消修改:\n\t\t\t\t\t\t");
scanf("%d",&n);
switch(n)
{
case 1:printf("请输入您想修改成的选项A");
scanf("%s",que[i].ala);break;
case 2:printf("请输入您想修改成的选项B");
scanf("%s",que[i].alb);break;
case 3:printf("请输入您想修改成的选项C");
scanf("%s",que[i].alc);break;
case 4:printf("请输入您想修改成的选项D");
scanf("%s",que[i].ald);break;
case 5:printf("请输入您想修改成的题干:");
scanf("%s",que[i].mainq);break;
case 6:printf("请输入您想修改成的正确选项:");
getchar();
scanf("%c",&que[i].ans);break;
case 0:printf("取消修改成功");break;
}
ll=que[i];
fclose(fp);
fp=fopen("question.dat","rb");
fp2=fopen("que2.dat","wb");
for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++)
{
if(i!=N)
fwrite(&que[i],sizeof(ques),1,fp2);//将除了要修改的试题之外的所有题,原样复制给另外一个文件,需要修改的,将修改之后的输入另外一个文件
else
fwrite(&ll,sizeof(ques),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("question.dat","wb");
fp2=fopen("que2.dat","rb");
for(i=0;fread(&que[i],sizeof(ques),1,fp2)==1;i++)
fwrite(&que[i],sizeof(ques),1,fp);//再复制到回原来的这个文件
fclose(fp);
fclose(fp2);
printf("\n");
printf("\t\t\t\t修改完成\n");
}
else
printf("\t\t\t\t未找到该试题\n");
printf("如还需做其它修改请输入1,如无需再进行修改请输入0:");
scanf("%d",&jud);
}while(jud==1);
fclose(fp);
break;
}
}
return ;
}

@ -0,0 +1,84 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define M 100
void dele(){
typedef struct question{
char mainq[500];
char ala[150];
char alb[150];
char alc[150];
char ald[150];
char ans;
}ques;
char _m[20]="password";
char _n[20];
int z=3;
while(z--)
{
printf("你还有%d次机会输入管理员密码",z+1);
scanf("%s",_n);
printf("\n");
if(strcmp(_m,_n)==0)
{
FILE *fp,*fp2;
int flag=0,n,jud,i;
system("cls");
char q[500];
ques que[M];
fp=fopen("question.dat","ab+");
if(fp==NULL)
{
printf("文件处理失败");
return ;
}
jud=flag=0;
printf("请输入您想删除的试题的完整题干:\n");
scanf("%s",q);
for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++)
{
if(strcmp(q,que[i].mainq)==0)
{
printf("该题目前状态如下:\n");
printf("%s\n",que[i].mainq);
printf("A.%s\n",que[i].ala);
printf("B.%s\n",que[i].alb);
printf("C.%s\n",que[i].alc);
printf("D.%s\n",que[i].ald);
printf("正确选项:%c\n",que[i].ans);
flag=1;
fclose(fp);
fp2=fopen("que2.dat","wb");
fp=fopen("question.dat","rb");
break;
}
}
if(flag)
{
for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++){
if(strcmp(q,que[i].mainq)!=0)
fwrite(&que[i],sizeof(ques),1,fp2);}//把除要删除的试题外的所有试题复制给另外一个文件,再把另外一个文件复制回来
fclose(fp);
fclose(fp2);
fp=fopen("question.dat","wb");
fp2=fopen("que2.dat","rb");
for(i=0;fread(&que[i],sizeof(ques),1,fp2)==1;)
{
fwrite(&que[i],sizeof(ques),1,fp);
i++;
}
fclose(fp);
fclose(fp2);
printf("\t\t\t\t成功删除该试题");
}
else
{
fclose(fp);
printf("\t\t\t\t未找到该试题");
}
break;
}
}
return ;
}

Binary file not shown.

@ -0,0 +1,92 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define M 100
void test()
{typedef struct question{
char mainq[500];
char ala[150];
char alb[150];
char alc[150];
char ald[150];
char ans;
}ques;
srand(unsigned(time(0)));//时间种子
FILE *fp;
ques que[1000];
int f[10000];
memset(f,0,sizeof(int)*10);
int a[1000],flak;
char b[1000]={0},c[1000];
int i,n,N,count1=0,count=0,sel,j,temp;
fp=fopen("question.dat","rb");
if(fp==NULL)
{
printf("文件处理错误\n");
return ;
}
for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++);
N=i;
printf("请输入你想选择的题数(考试分数将会是你的正确题数/总题数*100题量需小于%d):",N);
scanf("%d",&n);
while(count<n)//随机选择n个题目
{
sel=rand()%N;
if(f[sel]==0)
{
a[count++]=sel;
f[sel]=1;
}
}
for(i=0;i<count-1;i++)
{
for(j=0;j<count-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
count=0;
for(i=0;count<n;i++)//将题目按原顺序输出并记录答案
{
if(i==a[count])
{
fread(&que[i],sizeof(ques),1,fp);
printf("%d、%s\n",count+1,que[i].mainq);
printf("A.%s\n",que[i].ala);
printf("B.%s\n",que[i].alb);
printf("C.%s\n",que[i].alc);
printf("D.%s\n",que[i].ald);
b[count+1]=que[i].ans;
count++;
}
}
fclose(fp);
printf("开始答题第一题选A第二题选B第三题选C则先输入A再输入B在输入C,若选择不写则输入除ABCD外任意其它字符\n");
do{
flak=0;
getchar();
for(i=1;i<=count;i++)
{
scanf("%c",&c[i]);
getchar();
}
for(i=1;i<=count;i++)
printf("%d.%c ",i,c[i]);
printf("\n请核对答案如确定答案请输入0结束答题若要重新答题请输入1:");
scanf("%d",&flak);
}while(flak);
count=0;
for(i=1;i<=n;i++)
{
if(b[i]==c[i])
count++;
}//计算得分
printf("\n\t\t\t\t你的得分为%.2lf",((double)count)/n*100);
return ;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,47 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include"CHANGE.h"
#include"DELE.h"
#include"BROWSE.h"
#include"TEST.h"
#include"ADD.h"
#define M 100
typedef struct question{
char mainq[500];
char ala[150];
char alb[150];
char alc[150];
char ald[150];
char ans;
}ques;
int main()
{
int n;
do{
system("cls");
printf("\t\t\t\t\t\t************************\t\t\t\n");
printf("\t\t\t\t\t\t单项选择题标准化考试系统\t\t\t\n");
printf("\t\t\t\t\t\t1.开始考试\t\t\t\n");
printf("\t\t\t\t\t\t2.添加试题\t\t\t\n");
printf("\t\t\t\t\t\t3.删除试题\t\t\t\n");
printf("\t\t\t\t\t\t4.修改试题\t\t\t\n");
printf("\t\t\t\t\t\t5.查看题库\t\t\t\n");
printf("\t\t\t\t\t\t0.退出系统\t\t\t\n");
printf("请输入需要使用的功能0~5");
scanf("%d",&n);
switch(n)
{
case 1:test();system("pause");break;
case 2:add();system("pause");break;
case 3:dele();system("pause");break;
case 4:change();system("pause");break;
case 5:browse();system("pause");break;
case 0:printf("\t\t\t\t\t感谢您的使用! 再见!");break;
default:printf("请输入正确的选择项0~5");system("pause");
break;
}printf("\n");
}while(n!=0);
return 0;
}
Loading…
Cancel
Save