c语言应用(2)试卷管理

试卷管理


老师在教学过程中,会经常以试卷的形式来检验学生的学习情况。先由你来 帮助老师设计一个系统。该系统中只有 2 种题型:单项选择题、填空题。其中 单项选择题:题目编号、题目、选项 A、选项 B、选项 C、选项 D、答案 填空题:题目编号、题目、答案 功能: 功能:试题添加、删除、修改、查询功能
(1)试题添加:向试题库追加写入一道新的题目,要求题目编号与已存题目 的编号不重复;所有内容不能为空;
(2)试题删除:通过题目编号进行题目的删除;
(3)删除全部题目;
(4)试题修改:通过题目编号修改指定的题目的内容;
(5)试题查询:通过题目编号查询指定的题目的所有内容;
(6)统计共有多少道题目;
(7)查询题目中含有某个特定内容(用户输入)的所有题目内容;
(8)自动随机生成由单项选择题、填空题合在一起的试卷及答案 2 个文件, 各题型的题目数由用户输入;
(9)以上功能要求通过菜单的方式进行操作;要求对相应内容进行必要的合 法性检查

主函数

#include <bits/stdc++.h>

using namespace std;

const int N = 1024;
const int N1 = 120;
int main()
{
    int n;
    int i,j;
    printf("                -------------------试卷管理系统------------------\n");
    printf("                -------------------------------------------------\n");
    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("\n");
    printf("\n");
    printf("                --------------->输入你想选择的操作<--------------\n");
    printf("                -------------------------->  <-------------------\n");
    printf("                ---------------1-8-功能键--0-退出键--------------\n");
    for(i = 0; i < 5; i ++)
    {
    printf("                -----------------------------------------------Q-Q\n");
    }
    while(scanf("%d",&n)&&n!=0)
    {
        if(n==1)
        {
            printf("**试题增加**\n");
            printf("--        --\n");
            printf("--        --\n");
            printf("选,填,退出(1,2,0)\n");
            int cc = 1;
            int zc1;
            scanf("%d",&zc1);
            while(cc)
            {
            if(0<=zc1&&zc1<=2)
            {
            cc = 0;
            printf("输入合法\n");
            }
            else
            {
            printf("请重新输入\n");
            scanf("%d",&zc1);
            }
            }
        if(zc1==0)
        {
            printf("正在退出\n");
            printf("请重新选择功能\n");
            printf("--->  <----\n");
            printf("请输入1-8是功能键,0是退出键\n");
        for(i = 0; i < 5; i ++)
        {
            printf("-----------------------------------------------Q-Q\n\n");
        }
            continue;
        }
       else if(zc1==1)
        {
        printf("进入选择题填入模式\n");
        printf("你想增加多少题目?\n");
        FILE *fp;
        fp = fopen("选择题.txt","a");
        if(fp==NULL)
        {
        printf("无法打开文件");
        exit(0);//退出文件
        }
        int wgg;
        scanf("%d",&wgg);
        for(i = 0; i < wgg;i ++)
        {
        printf("请你准备好输入题目\n");
        char *th = NULL;
        char *tm = NULL;
        char *answer = NULL;
        th  = (char*)malloc(N1);
        tm = (char*)malloc(N);
        answer  = (char*)malloc(N1);
        printf("输入题号\n");
        scanf("%s",th);
        printf("输入题目\n");
        scanf("%s",tm);
        printf("输入answer\n");
        scanf("%s",answer);

        FILE *fp4,*fpzc;
        fp4 = fopen("选择题题号.txt","a");
        if(fp4==NULL)
        {
        printf("无法打开文件");
        exit(0);//退出文件
        }
        fpzc = fopen("answer.txt","a");
        if(fpzc==NULL)
        {
        printf("无法打开文件");
        exit(0);//退出文件
        }
        fprintf(fp,"%s\n",tm);
        fprintf(fp4,"%s\n",th);
        fprintf(fpzc,"%s\n",answer);
        fclose(fp4);
        fclose(fpzc);
        free(th);
        free(tm);
        free(answer);
        }
        fclose(fp);
        printf("加题结束\n");
        printf("请重新选择功能\n");
        printf("     --->  <---\n");
        printf("请输入1-8是功能键,0是退出键\n");
        for(i = 0; i < 5; i ++)
        {
            printf("-----------------------------------------------Q-Q\n\n");
        }
        }
        else
        {
        printf("进入填空题填入模式\n");
        printf("你想增加多少题目?\n");
        FILE *fp2;
        fp2 = fopen("填空题.txt","a");
        if(fp2==NULL)
        {
        printf("无法打开文件");
        exit(0);//退出文件
        }
        int wgg1;
        scanf("%d",&wgg1);
        for(i = 0; i < wgg1;i ++)
        {
        printf("请你准备好输入题目\n");
         char *th1 = NULL;
         char *tm1 = NULL;
         char *answer1 = NULL;
        th1  = (char*)malloc(N1);
        tm1 = (char*)malloc(N);
        answer1  = (char*)malloc(N1);
        printf("输入题号\n");
        scanf("%s",th1);
        printf("输入题目\n");
        scanf("%s",tm1);
        printf("输入answer\n");
        scanf("%s",answer1);
        FILE *fp3,*fpgg;
        fp3 = fopen("填空题题号.txt","a");
        if(fp3==NULL)
        {
        printf("无法打开文件");
        exit(0);//退出文件
        }
        fpgg = fopen("answer1.txt","a");
        if(fpgg==NULL)
        {
        printf("无法打开文件");
        exit(0);//退出文件
        }
        fprintf(fp2,"%s\n",tm1);
        fprintf(fp3,"%s\n",th1);
        fprintf(fpgg,"%s\n",answer1);
        fclose(fp3);
        fclose(fpgg);
        free(th1);
        free(tm1);
        free(answer1);
        }
        fclose(fp2);
        printf("加题结束\n");
        printf("请重新选择功能\n");
        printf("--->  <----\n");
        printf("请输入1-8是功能键,0是退出键\n");
        for(i = 0; i < 5; i ++)
        {
            printf("-----------------------------------------------Q-Q\n\n");
        }
        }
    }
    else if(n==5)
    {
    printf("**统计功能**\n");
    printf("--        --\n");
    printf("--        --\n");
    int x1 = 0;
    int x2 = 0;
    char buf1[N];
    char buf2[N];
    int len1;
    int len2;
    FILE *fp10,*fp11;
    fp10 = fopen("选择题题号.txt","r");
    if(fp10==NULL)
    {
    printf("无法打开文件");
    exit(0);//退出文件
    }
    printf("1\n");
    while(fgets(buf1,N,fp10) != NULL )
    {
        x1++;
    }
    printf("1\n");
    fp11 = fopen("填空题题号.txt","r");
    if(fp11==NULL)
    {
    printf("无法打开文件");
    exit(0);//退出文件
    }
    while(fgets(buf2,N,fp11) != NULL )
    {
        x2++;
    }
    printf("选择题%d 填空题 %d\n",x1,x2);
    printf("总计%d\n",x1+x2);
    printf("结束\n");
    printf("请重新选择功能\n");
    printf("--->  <---\n");
    printf("请输入1-8是功能键,0是退出键\n");
    for(i = 0; i < 5; i ++)
    {
    printf("<-AVA->\n");
    }
    }
    else if(n==2)
    {
        printf("**试题删除**\n");
        printf("--        --\n");
        printf("--        --\n");
        int m;
        printf("选择题.填空题( 1 or 2 )\n");
        printf("输入‘0’退出\n");
        scanf("%d",&m);
        int mm=1;
        while(mm)
        {
            if(m==1||m==2||m==0)
            {
                mm=0;
            }
            else
            {
                printf("》输入数据错误请重新输入《\n");
                scanf("%d",&m);
            }
        }
        if(m==0)
        {
            printf("正在退出\n");
            printf("结束\n");
            printf("请重新选择功能\n");
            printf("--->  <---\n");
            printf("请输入1-8是功能键,0是退出键\n");
            for(i = 0; i < 5; i ++)
            {
            printf("-----------------------------------------------Q-Q\n\n");
            }
        }
        else if(m==1)
        {
            printf("选择题删除\n");
            int ff;
            printf("输入需要删除的题数\n");
            scanf("%d",&ff);
            for(i = 0; i < ff; i ++)
            {
            char  tth[N1];
            char  ttm[N1];
            char  answer0[N1];
            printf("输入题号\n");
            scanf("%s",tth);
            printf("输入题目\n");
            scanf("%s",ttm);
            printf("输入答案\n");
            scanf("%s",answer0);
            printf("调试中\n");
            char edg[N];
            char Rng[N];
            char WE[N];
            FILE *fpw,*fpa,*fpcz,*fp77,*fp78,*fpdd;
            fpw = fopen("选择题.txt","r");
            fpcz = fopen("选择题题号.txt","r");
            fpdd = fopen("exchange1.txt","a");
            fp77 = fopen("answer.txt","r");
            fp78 = fopen("exchange2.txt","a");
            fpa = fopen("exchange.txt","a");
            if(fpw==NULL||fpa==NULL||fpcz==NULL||fp77==NULL||fp78==NULL||fpdd==NULL)
            {
                printf("open the file failure\n");
                exit(0);
            }
            while(fgets(edg,N,fpw))
            {
               if(strcmp(edg,ttm)!=0)
               {
                   fputs(edg,fpa);
               }
            }
            while(fgets(Rng,N,fpcz))
            {
               if(strcmp(Rng,tth)!=0)
               {
                   fputs(Rng,fpdd);
               }
            }
            while(fgets(WE,N,fp77))
            {
               if(strcmp(WE,answer0)!=0)
               {
                   fputs(WE,fp78);
               }
            }
            fclose(fpa);
            fclose(fpw);
            fclose(fpcz);
            fclose(fpdd);
            fclose(fp77);
            fclose(fp78);
            remove("选择题.txt");
            remove("选择题题号.txt");
            remove("answer.txt");
            rename("exchange.txt","选择题.txt");
            rename("exchange1.txt","选择题题号.txt");
            rename("exchange2.txt","answer.txt");
            }
             printf("请重新选择功能\n");
            printf("--->  <---\n");
            printf("请输入1-8是功能键,0是退出键\n");
            for(i = 0; i < 5; i ++)
            {
            printf("-----------------------------------------------Q-Q\n\n");
            }
        }
        else
            {
              printf("填空题删除\n");
            int ff;
            printf("输入需要删除的题数\n");
            scanf("%d",&ff);
            for(i = 0; i < ff; i ++)
            {
            char  tth[N1];
            char  ttm[N1];
            char  answer0[N1];
            printf("输入题号\n");
            scanf("%s",tth);
            printf("输入题目\n");
            scanf("%s",ttm);
            printf("输入答案\n");
            scanf("%s",answer0);
            printf("调试中\n");
            char edg[N];
            char Rng[N];
            char WE[N];
            FILE *fpw,*fpa,*fpcz,*fp77,*fp78,*fpdd;
            fpw = fopen("填空题.txt","r");
            fpcz = fopen("填空题题号.txt","r");
            fpdd = fopen("exchange1.txt","a");
            fp77 = fopen("answer1.txt","r");
            fp78 = fopen("exchange2.txt","a");
            fpa = fopen("exchange.txt","a");
            if(fpw==NULL||fpa==NULL||fpcz==NULL||fp77==NULL||fp78==NULL||fpdd==NULL)
            {
                printf("open the file failure\n");
                exit(0);
            }
            while(fgets(edg,N,fpw)!=NULL)
               if(strcmp(edg,ttm)!=0)
               fputs(edg,fpa);
               fclose(fpa);
               fclose(fpw);

            while(fgets(Rng,N,fpcz)!=NULL)
            if(strcmp(Rng,tth)!=0)
            fputs(Rng,fpdd);
            fclose(fpcz);
            fclose(fpdd);

            while(fgets(WE,N,fp77))
            if(strcmp(WE,answer0)!=0)
            fputs(WE,fp78);
            fclose(fp77);
            fclose(fp78);

            remove("选择题.txt");
            remove("选择题题号.txt");
            remove("answer1.txt");
            rename("exchange.txt","选择题.txt");
            rename("exchange1.txt","选择题题号.txt");
            rename("exchange2.txt","answer1.txt");
            }
             printf("请重新选择功能\n");
            printf("--->  <---\n");
            printf("请输入1-8是功能键,0是退出键\n");
            for(i = 0; i < 5; i ++)
            {
            printf("-----------------------------------------------Q-Q\n\n");
            }
            }

    }

    }
    return 0;
}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dearzcs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值