小学数学测试系统C课程设计报告及源程序代码


    


    课 程 设 计 报 告

    课程名称 C语言课程设计
    课题名称 学数学测试系统

    专 业
    班 级
    学 号
    姓 名
    指导教师

    2016年 X 月 X 日


    XX学院
    课 程 设 计 务 书


    课程名称 C语言课程设计
    课 题 学数学测试系统


    专业班级
    学生姓名
    学 号
    指导老师
    审 批




    务书达日期 2015 年 12 月 26 日
    务完成日期 2016年 01 月 06 日


    设计容设计
    课题九:学数学测试系统具体容见附录
    2.设计求:
    1)设计正确方案合理
    2)界面友方便
    3)程序精炼结构清晰
    4)机演示
    3.设计报告求:
    课程设计报告格式:
    1)正文格式:级标题3号黑体二级标题四号宋体加粗正文四号宋体行距22
    2)正文容:课题功课题功模块划分功实现程序调试总结附件(程序源代码求程序写出必注释)课程设计报告需5000字左右(含附件)
    3)课程设计报告装订序:封面务书目录正文评分程序清单附件

    二进度安排
    星期日
    (17周)
    星期
    (18周)
    星期四
    (18周)
    星期五
    (18周)
    星期日
    (18周)
    14001700
    18002100
    18002100
    18002100
    交报告
    课时间外安排










    附录:
    设计课题九:学数学测试系统

    问题描述:
    系统进行简单数学测试累计成绩包括户注册户登录户删题目测试信息保存等功
    二功描述:
    1系统采结构体数组数结构应包括:户名户密码测试题目数答题目数
    2系统功:
    a 户注册:添加新户名户密码
    b 户登录:进行数学测试前需进行登录没该户需进行注册
    c 题目测试:系统动生成题目(注意题目合理性题目结果负数数0等)户出答案系统动测试正确性时统计成绩
    d 信息保存 注册成功题目测试完毕户信息成绩保存文件
    e退出系统
    3系统说明:执行具体功程序重新显示功菜单系统功限述进行扩充完善题目动生成简单加减运算生成复杂四混合运算时户界面友重输入错误答案需出提示信息
    三测试数:
    户>3题目数>5





    目 录

    1 系统需求分析 6
    2 概设计 6
    3 详细设计 10
    4 系统测试 15
    5 课程设计总结 18
















    1 系统需求分析
    学生数学测试系统具机出题动评分查答案错题重做等功系统属性:
    1 界面设计选择种功
    2 系统机出题显示算式含加减四运算
    3 练时系统机出题键入答案显示错
    4 测试时系统动出题题分统计分
    5 题错信息错误出答案

    2 概设计
    系统功模块图:
    学数学测试系统
    学生成绩理模块
    测试模块
    注册登录模块
    查结果模块
    错题重做模块

    21注册登录模块
    提示户输入姓名学号果已记录次登录户信息追加储存文件中果没记录创建新文件储存:模块图图示:


    注册登录模块
    提示输入姓名学号
    创建文件记录学生信息
    判断否记录
    22测试模块
    进入开始测试菜单开始计时选择加减四种运算类型总体说测试模块分:加法运算减法运算法运算法运算四部分
    四部分功相似选择类型选择题数目(5102050100)然选择难度时开始做题(题目利机函数机出题)然判断正误出正确率错误结果存入文件中备错题重做做题结果存入文件中便查结果

    测试模块
    加法运算
    减法运算
    法运算
    法运算

    23 学生成绩理模块
    模块首先次测试学姓名学号成绩存入文件中次测试学信息覆盖前学信息然文件中信息读取结构体中进行排序利结构体排序成绩显示屏幕模块示图:
    学生成绩理模块
    存入测试学生成绩信息
    查排名榜
    创建学生成绩信息文件
    排列序

    24 查结果模块
    利测试模块存储结果信息文件进行直接读取期间fgetc函数文件信息读取出图图示:
    查结果模块
    开存储结果文件
    读取文件




    25 错题重做模块
    测试模块程已错题错题答案分出入文件中直接进行开存储错题文件逐读取错题时利scanf函数输入答题者答案开储存错题答案文件进行核正确答案模块图示:


    错题重做模块
    读取错题
    进行重做
    核答案
    开错题存储文件

    系统流程图:

    开始
    输入姓名

    输入学号
    菜单




    查排名
    错题重做
    查结果

    结束测试

    加法
    减法


    选择题数
    选择难度
    测试
    退出
    返回
    保存








































    3 详细设计
    31登录功具体实现:
    两函数Savemessage()Judge()两函数中 Savemessage()函数保存学生输入信息输入学生信息保存studentmessagetxtTestResulttxt文件中保存程中先输入结构体中利fwrite(&s[0]sizeof(struct Student)1fp)语句文件studentmessagetxt中写入条记录刚刚输入学生姓名学号
    利fprintf(fp1姓名:s\ns[0]name)fprintf(fp1 学号:s\ns[0]num) 文件TestResulttxt中写入刚刚输入学生信息
    登录完进入测试界面时开始计时
    语句{printf( 请计时输入开始时间(点分)) scanf(dd&hourA&minA)}进行输入计时
    然进入测试界面菜单:
    32 测试功实现
    ①选测试类型:
    测试功菜单分5中1~4选择类型5返回菜单具体实现选择功
    while(choose<1||choose>5) {printf( 超出功范围请重新选择(15))scanf(d&choose)}输入1~5间数switch(choose) { }进行选择应功
    图选择1进入
    ②选题数目:
    进行选择题目数目输入测试题目数限制(5102050100)五数句
    while(thnum<5||thnum>5&&thnum<10||thnum>10&&thnum<||thnum>20&&thnum<50||thnum>50&&thnum<100||thnum>100)
    {printf(超出功范围请重新选择(5102050100))scanf(d&thnum)} 语句实现题目数限制超出范围提示重新输入begain()中调Addition(int number)控制循环语句for(int i0i{ if(m1){num1rand()n num2rand()n } 产生位机数num1num2
    if(m2){num110+rand()(n10) 产生两位机数 num1num2
    num210+rand()(n10)}
    if(m3){num1100+rand()(n100) 产生三位机数 num1num2
    num2100+rand()(n100)}
    printf( d + d num1num2)
    scanf(d&num4)通控制循环次数控制产生题数目
    ③选难度实现:
    利机函数rand()n中n值产生位数机书实现难度控制n10时语句num1rand()n产生位数n100时语句num110+rand()(n10)产生二位数n1000时num1100+rand()(n100)产生三位数
    具体语句
    printf(请选择难度 ) scanf(d&m)system(cls) 清屏
    { if(m1) n10 if(m2) n100
    else if(m3) n1000 }
    for(int i0i { if(m1){num1rand()n num2rand()n }
    if(m2){num110+rand()(n10)
    num210+rand()(n10)}
    if(m3){num1100+rand()(n100)
    num2100+rand()(n100)}}
    实现控制难度rand()n产生机数实现机出题功
    ④动评分实现数储存
    系统会输入答案正确答案进行逐较果正确结果记录TestResulttxt中便查结果果错误错误题正确结果记录failedResulttxt中便错题重做错误题正确结果记录rightResulttxt中TestResulttxt中便核错题答案程中系统会动统计正确结果数错误数利averagefloat(count1)float(number)动分数
    具体程序
    if(num3num4)
    {fprintf(fp d + d d d \nnum1num2num4num3)
    count1++}
    else
    {fprintf(fp d + d d d ×\nnum1num2num4num3) fprintf(fp2 d + d \nnum1num2num4num3)
    错误题记录failedResulttxt中
    fprintf(fp3 d + d d \nnum1num2num3)}}} averagefloat(count1)float(number)
    fprintf(fp 正确 d 道错误 d 道正确率:f\n\ncount1count2average)
    AA+average*100总分
    nu++记录做类型题次数便算均分
    ⑤减程原理加法样工作界面分
    减法法法
    法功实现加法样分母零num2n10+rand()(nn10)语句进行实现中rand()(nn10)产生0nn101数n10+rand()(nn10)产生n10n1数例n100时产生1099两位数实现分母零时实现难度控制
    33查结果实现
    测试程中已结果记录存TestResulttxt中需开文件读取出记录
    void ShowResult()显示测试结果函数
    {FILE *fp
    if((fpfopen(TestResulttxtr))NULL) exit(0)}
    char ch chfgetc(fp) 文件开头字符
    while(chEOF) 文件没尾时直循环
    { putchar(ch) 输出字符
    chfgetc(fp)}
    fclose(fp)} 函数直接读取查结果
    34 排名实现
    程中次做题情况学生信息记录文件nrecordtxt中然nrecordtxt中条条记录读取结构体中泡法进行排序直接结构体中读取排序成绩具体程序:
    void sort() 实现排序
    {FILE *fp5
    int ijm
    s[0]avscoreAnu
    fp5fopen(nrecordtxta+)
    fprintf(fp5s s f\ns[0]names[0]nums[0]avscore)刚刚做测试记录文件nrecordtxt中
    fclose(fp5)
    fp5fopen(nrecordtxtrb)
    for(i0feof(fp5)i++)
    {fscanf(fp5s sf\ns[i]names[i]num&s[i]avscore)} fclose(fp5) mi
    struct Student temp
    for(i0i{ for(j0j if(s[j]avscore {strcpy(tempnames[j]name)
    strcpy(tempnums[j]num)
    tempavscores[j]avscore

    strcpy(s[j]names[j+1]name)
    strcpy(s[j]nums[j+1]num)
    s[j]avscores[j+1]avscore

    strcpy(s[j+1]nametempname)
    strcpy(s[j+1]numtempnum)
    s[j+1]avscoretempavscore}}
    输出排名结果
    printf******************************************************\n)
    printf( 查排名(排序结果高低)\n)
    printf( 姓名 学号 分数\n)
    for(i0i {printf( s s42f\ns[i]names[i]nums[i]avscore)}}
    35错题重做
    测试程中已错题错题答案分存入failedResulttxt rightResulttxt文件中直接进行开存储错题文件逐读取错题时利scanf函数输入答题者答案开储存错题答案文件进行核正确答案具体程序:
    void rework() 错题重做
    {int a
    char ch
    FILE *fp2*fp3
    if((fp2fopen(failedResulttxta+))NULL)
    {printf(开文件失败\n)
    exit(0)}

    if((fp3fopen(rightResulttxta+))NULL)
    {printf(开文件失败\n)
    exit(0)}
    printf(********************错题重做***************************************\n)
    while(feof(fp2))
    {chfgetc(fp2)printf(cch)读取failedResulttxt中错题
    if(ch'')
    scanf(d&a)} 输入答案
    fp2fopen(failedResulttxtw)清空前数
    fclose(fp2)
    printf(朋友请查正确答案\n)
    while(feof(fp3))
    { chfgetc(fp3)printf(cch)}读取rightResulttxt中错题答案
    fclose(fp3)fp3fopen(rightResulttxtw)清空
    fclose(fp3)}
    36结束测试
    选择菜单结束功时系统提示输入结束时间输入系统动生成时间然系统学生信息记录学生学号命名文件中具体实现程
    void FileCopy()文件复制函数保存测试结果然文件名重复
    {FILE *in*out
    strcat(s[0]numtxt)字符串txt连接字符串student[0]num学号文件名缀txt文件中保存工程目录
    if((infopen(TestResulttxtr))NULL)
    { infopen(TestResulttxtw+)
    printf(文件记录已新建\n)}
    if((outfopen(s[0]numw))NULL)开文件学号txt 文件(030txt)w方式写方式
    { printf(开文件失败\n)
    exit(0)}
    while(feof(in))文件TestResulttxt没结束时循环
    fputc(fgetc(in)out)逐字符写入
    fclose(in)
    fclose(out)}
    void TestOver()程序测试完毕函数
    {printf(\n\n测试完毕测试结果保存 s 中\n\ns[0]num) 输出测试结果记录提示}





    4 系统测试
    41注册登录模块

    42测试模块

    ①选测试类型



    ②选题数目



    ③选难度实现



    43 查学生成绩模块


    44 错题重做模块


    45 测试时出现错误分析总结
    程序设计结构化模块化函数间相互调实现系统功调试带定方便 调试程中出现问题中文件结构体间转换困难段时间影响错题重做排名等功实现
    问题:程序中次文件读写文件记录信息次出现读出记录文件中出现乱码
    解决方法认真学反复研究文件读写函数fprintffscanffreadfwritefgetc反复调试中终解决问题
    问题二学生信息均记录文件中文件直接排序需转换结构体中进行排序整排序程带相困难出现转换结构体中乱码现象
    解决方法首先检查文件否信息记录确认数fscanf fread进行反复更换程中反复运行查结构体否输出终实现文件结构体间数传递实现排序功
    问题三:错题重做定困难样错题记录读出重新做产生定困难
    解决方法:采文件记录错题错题答案fgetc函数实现读出记录错题实现错题重做功
    外调试程中遇相问题整体结构设计功实现

    5 课程设计总结
    次课程设计实验进入学学C语言结果次考验动手发现问题解决问题发现许足时没掌握知识实践中暴漏断思考查阅书籍网查资料机运行解决部分问题稍微问题相信学中定解决计算机应生活中说处作二十世纪学说掌握程序开发技术十分重C语言常见功强种高级语言做C语言课程设计十分必 仅巩固C语言程序设计课程学容掌握设计基方法强化机动手力
    次课程设计编写学数学测试系统具机出题动评分动排名查正确答案错题重做等功系统功强程序编写难度相编程中知识片空白通书网络慢慢知道点
    通次课程设计更加深刻体会c语言程序编写程严谨细致做事耐心懂理实际相结合重理知识远远够学理知识实践相结合起理中出结真正社会服务提高实际动手力独立思考力课程设计程中收获知识提高力时学生哲理懂样制定计划样实现计划掌握执行程中样克服心理良情绪生活学程中定会课程设计精神带生活中生活更加
    谢谢田老师天时间指导





    计算机科学技术系课程设计评分表


    课程名称: C语言程序设计



    项 目
    评 价
    设计方案合理性创造性

    设计调试结果

    设计说明书质量

    答辩陈述回答问题情况

    课程设计周表现情况

    综合成绩



    教师签名:
    日 期: 20160110












    附录:
    源程序
    #include C语言标准输入输出头文件
    #include 字符串操作需头文件
    #include 文件操作需头文件
    #include 产生机数需头文件
    float A0
    int nu0
    int hourAhourBminAminB
    struct Student
    { char name[21] 姓名
    char num[10] 学号
    float avscore}s[50] 结构体数组存储学生信息初定50改


    **

    void Savemessage() 保存学生输入信息函数
    {
    FILE *fp*fp1定义文件指针判断文件开否 a方式开文件尾写数

    if((fpfopen(studentmessagetxtwb+))NULL)开文件studentmessagetxt
    { printf(开文件失败\n)
    exit(0)}
    if((fp1fopen(TestResulttxta))NULL)开文件TestResulttxt
    { printf(开文件失败\n)
    exit(0)}

    printf( 输入姓名:) 学生输入信息
    scanf(ss[0]name)

    printf( 输入学号:)
    scanf(s&s[0]num)


    fwrite(&s[0]sizeof(struct Student)1fp)文件studentmessagetxt中写入条记录刚刚输入学生信息
    fprintf(fp1 姓名:s\ns[0]name)文件TestResulttxt中写入刚刚输入学生信息
    fprintf(fp1 学号:s\ns[0]num)
    fclose(fp)关闭文件studentmessagetxt
    fclose(fp1)
    system(cls) 清屏
    }


    void Judge()判断函数
    {int i0
    FILE *fp 文件指针判断文件开否 r读开方式
    printf(\n\n\n)
    printf( *************************学数学测试系统********************\n)
    printf( **\n)
    printf( **\n)
    printf( *************************************************************\n)
    printf( *注 册*\n)
    printf( **\n)
    printf( *输入姓名*\n)
    printf( **\n)
    printf( *输入学号*\n)
    printf( **\n\n\n)
    if((fpfopen(studentmessagetxtr))NULL) 判断文件开否 a方式开文件尾写数开文件studentmessagetxt
    { fpfopen(studentmessagetxtw+) 果没studentmessagetxt文件新建文件w+开方式新建文件
    printf(文件记录已新建\n)}

    while(feof(fp))判断否文件尾
    {fread(&s[i]sizeof(struct Student)1fp)行行文件中读出学生信息保存结构体数组student[]中
    fscanf(fp\n) 读取换行符
    i++ i变量保存学生记录数
    if(i50) 数满时50满时数组标0开始i29时
    {printf(数已满已法测试\n)
    fclose(fp)
    exit(0)}}}

    **
    void Addition(int number) 加法运算函数number题目数形参
    {

    FILE *fp*fp2*fp3
    if((fpfopen(TestResulttxta))NULL)
    { printf(开文件失败\n)
    exit(0)}
    if((fp2fopen(failedResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}

    if((fp3fopen(rightResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}
    int num1num2num3num4mncount10count20
    float average00 正确率变量注意float类型
    srand(time(0)) 初始化机数果没语句次运行程序时机数样
    fprintf(fp 加法测试:\n) 文件写入
    fprintf(fp 加数 + 加数 结果 正确结果 否正确\n)文件写入
    {
    printf( *************************************************************\n)*选择难度*
    printf( * 请选择难度*\n)
    printf( * 1简 单 *\n)
    printf( * 2 般 *\n)
    printf( * 3困 难 *\n)
    printf( **\n\n\n)
    printf(请选择难度 ) scanf(d&m)system(cls) 清屏
    { if(m1) n10 *m值转化应n值机函数出现位2位3位*
    if(m2) n100
    else if(m3) n1000 }
    printf( \n **************************************************************************\n\n)
    for(int i0i {if(m1)
    {num1rand()n num2rand()n } 产生位机数num1num2

    if(m2)
    {num110+rand()(n10) 产生两位机数 num1num2
    num210+rand()(n10)}
    if(m3)
    {num1100+rand()(n100) 产生三位机数 num1num2
    num2100+rand()(n100)}
    num3num1+num2 num3保存正确结果
    printf( d + d num1num2)终端屏幕输出题目
    scanf(d&num4)输入计算结果

    if(num3num4)正确结果计算结果较正确话
    {fprintf(fp d + d d d √\nnum1num2num4num3)结果记录TestResulttxt中
    count1++}变量count1记录正确题目数

    else错误话num1num2时
    {fprintf(fp d + d d d ×\nnum1num2num4num3)结果记录TestResulttxt中
    fprintf(fp2 d + d \nnum1num2num4num3)错误题记录failedResulttxt中
    fprintf(fp3 d + d d \nnum1num2num3)}}}错误题正确结果记录failedResulttxt中

    averagefloat(count1)float(number)计算正确率注意int整型转换float类型

    fprintf(fp 正确 d 道错误 d 道正确率:f\n\ncount1count2average)
    AA+average*100
    nu++
    fclose(fp)
    fclose(fp3)
    fclose(fp2)}
    **

    void Subtracter(int number) 减法运算函数注释加法样
    {
    FILE *fp*fp2*fp3
    if((fpfopen(TestResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}
    if((fp2fopen(failedResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}
    if((fp3fopen(rightResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}

    int num1num2num3num4count10nmcount20
    float average00
    srand(time(0))
    fprintf(fp 减法测试:\n)
    fprintf(fp 减数 减数 结果 正确结果 否正确\n)

    printf( *************************************************************\n)*选择难度*
    printf( * 请选择难度*\n)
    printf( * 1简 单 *\n)
    printf( * 2 般 *\n)
    printf( * 3困 难 *\n)
    printf( **\n\n\n)
    printf(请选择 ) scanf(d&m)system(cls) 清屏
    {if(m1) n10
    if(m2) n100
    else if(m3) n1000 }
    printf( \n **************************************************************************\n\n)
    for(int i0i {if(m1)
    {num1rand()n num2rand()n } 产生位机数num1num2

    if(m2)
    {num110+rand()(n10) 产生两位机数 num1num2
    num210+rand()(n10)}
    if(m3)
    {num1100+rand()(n100) 产生三位机数 num1num2
    num2100+rand()(n100)}
    num3num1num2
    printf( d d num1num2)
    scanf(d&num4)
    if(num3num4)
    {fprintf(fp d d d d √ \nnum1num2num4num3)
    count1++}
    else
    {fprintf(fp d d d d ×\nnum1num2num4num3)
    count2++
    fprintf(fp2 d d \nnum1num2num4num3)
    fprintf(fp3 d d d \nnum1num2num3)}}
    averagefloat(count1)float(number)

    fprintf(fp 正确 d 道错误 d 道正确率:f\n\ncount1count2average)
    AA+average*100
    nu++
    fclose(fp)fclose(fp2)
    fclose(fp3)
    }
    **

    void Multiplication(int number)法运算函数注释加法样
    {
    FILE *fp*fp2*fp3
    if((fpfopen(TestResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}

    if((fp2fopen(failedResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}
    if((fp3fopen(rightResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}

    int num1num2num3num4mncount10count20
    float average00
    srand(time(0))
    fprintf(fp 法测试:\n)
    fprintf(fp 数 * 数 结果 正确结果 否正确\n)

    { printf( *************************************************************\n)*选择难度*
    printf( * 请选择难度*\n)
    printf( * 1简 单 *\n)
    printf( * 2 般 *\n)
    printf( * 3困 难 *\n)
    printf( **\n\n\n)
    printf(请选择 )}
    scanf(d&m)
    system(cls) 清屏

    {if(m1) n10
    if(m2) n100
    else if(m3) n1000 }
    printf( \n **************************************************************************\n\n)
    for(int i0i{if(m1)
    {num1rand()n num2rand()n }
    if(m2)
    {num110+rand()(n10)
    num210+rand()(n10)}
    if(m3)
    {num1100+rand()(n100)
    num2100+rand()(n100)}
    num3num1*num2
    printf( d * d num1num2)
    scanf(d&num4)
    if(num3num4)
    {fprintf(fp d * d d d √\nnum1num2num4num3)
    count1++}
    else
    {fprintf(fp d * d d d ×\nnum1num2num4num3)
    count2++
    fprintf(fp2 d * d \nnum1num2num4num3)
    fprintf(fp3 d * d d \nnum1num2num3)}}
    averagefloat(count1)float(number)

    fprintf(fp 正确 d 道错误 d 道正确率:f\n\ncount1count2average)
    AA+average*100
    nu++
    fclose(fp)
    fclose(fp2)
    fclose(fp3)
    }
    **
    void Division(int number) 加法运算函数注释样
    {FILE *fp*fp2*fp3
    if((fpfopen(TestResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}

    if((fp2fopen(failedResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}
    if((fp3fopen(rightResulttxta))NULL)
    {printf(开文件失败\n)
    exit(0)}

    int num1num2mncount10count20
    float num3num4average 正确率变量注意float类型
    srand(time(0)) 初始化机数果没语句次运行程序时机数样
    fprintf(fp 加法测试:\n) 文件写入
    fprintf(fp 数数数结果 正确结果 否正确\n)文件写入

    { printf( *************************************************************\n)*选择难度*
    printf( * 请选择难度*\n)
    printf( * 1简 单 *\n)
    printf( * 2 般 *\n)
    printf( * 3困 难 *\n)
    printf( **\n\n\n)
    printf(请选择:)
    scanf(d&m)system(cls) 清屏

    {if(m1) n10
    if(m2) n100
    else if(m3) n1000 }

    printf( \n **************************************************************************\n\n)
    printf( 请保留保留数点位 \n)
    for(int i0i{if(m1)
    num1rand()n
    if(m2)
    num110+rand()(n10)

    if(m3)
    num1100+rand()(n100)
    num2n10+rand()(nn10) 产生等零机数num3
    num3(float)(num1)(float)(num2) num3保存正确结果
    printf( d d num1num2)终端屏幕输出题目
    scanf(f&num4)输入计算结果
    num3(int)(num3*10)100 实现保留数点位
    if(num3num4) 正确结果计算结果较正确话
    {fprintf(fp d d 1f 1f √\nnum1num2num4num3)文件中写入
    count1++ 变量count1记录正确题目数
    }
    else 错误话num1num2时
    {fprintf(fp d d 1f 1f ×\nnum1num2num4num3)
    count2++变量count2记录错误题目数
    fprintf(fp2 d d \nnum1num2)
    fprintf(fp3 d d 1f \nnum1num2num3)}}}
    averagefloat(count1)float(number)计算正确率注意int整型转换float类型
    fprintf(fp 正确 d 道错误 d 道正确率:f\n\ncount1count2average)
    AA+average*100
    nu++
    fclose(fp)
    fclose(fp2)
    fclose(fp3)
    }
    **
    void rework() 错题重做
    {int a
    char ch
    FILE *fp2*fp3

    if((fp2fopen(failedResulttxta+))NULL)
    {printf(开文件失败\n)
    exit(0)}

    if((fp3fopen(rightResulttxta+))NULL)
    {printf(开文件失败\n)
    exit(0)}
    printf(********************错题重做***************************************\n)
    while(feof(fp2))
    {chfgetc(fp2)printf(cch)读取failedResulttxt中错题
    if(ch'')
    scanf(d&a)} 输入答案
    fp2fopen(failedResulttxtw)清空前数
    fclose(fp2)
    printf(朋友请查正确答案\n)
    while(feof(fp3))
    { chfgetc(fp3)printf(cch)}读取rightResulttxt中错题答案
    fclose(fp3)fp3fopen(rightResulttxtw)清空
    fclose(fp3)}



    void sort() 实现排序
    {FILE *fp5
    int ijm
    s[0]avscoreAnu
    fp5fopen(nrecordtxta+)
    fprintf(fp5s s f\ns[0]names[0]nums[0]avscore)刚刚做测试记录文件nrecordtxt中
    fclose(fp5)
    fp5fopen(nrecordtxtrb)
    for(i0feof(fp5)i++)
    {fscanf(fp5s s f\ns[i]names[i]num&s[i]avscore)}文件nrecordtxt记录存结构体struct Student中
    fclose(fp5)
    实现排序
    mi
    struct Student temp
    for(i0i{
    for(j0j if(s[j]avscore {
    strcpy(tempnames[j]name) 利时结构变量temp实现数组元素交换
    strcpy(tempnums[j]num)
    tempavscores[j]avscore

    strcpy(s[j]names[j+1]name)
    strcpy(s[j]nums[j+1]num)
    s[j]avscores[j+1]avscore

    strcpy(s[j+1]nametempname)
    strcpy(s[j+1]numtempnum)
    s[j+1]avscoretempavscore
    }
    n0意味着没交换排序已完成
    }
    输出排名结果
    printf( ****************************************************************\n)
    printf( 查排名(排序结果高低)\n)
    printf( 姓名 学号 分数\n)
    for(i0i {printf( s s 42f\ns[i]names[i]nums[i]avscore)}}


    **


    void TestOver()程序测试完毕函数
    {
    printf(\n\n测试完毕测试结果保存 s 中\n\ns[0]num) 输出测试结果记录提示
    }


    void ShowResult()显示测试结果函数
    {
    FILE *fp
    if((fpfopen(TestResulttxtr))NULL)
    { printf(开文件失败\n)
    exit(0)}
    char ch
    chfgetc(fp)文件开头字符
    while(chEOF)文件没尾时直循环
    { putchar(ch)输出字符
    chfgetc(fp)}
    fclose(fp)
    }


    void FileCopy()文件复制函数保存测试结果然文件名重复
    {
    FILE *in*out
    strcat(s[0]numtxt)字符串txt连接字符串student[0]num学号文件名缀txt文件中保存工程目录
    if((infopen(TestResulttxtr))NULL)
    { infopen(TestResulttxtw+)
    printf(文件记录已新建\n)
    }
    if((outfopen(s[0]numw))NULL)开文件学号txt 文件(03071361txt)w方式写方式
    { printf(开文件失败\n)
    exit(0)
    }
    while(feof(in))文件TestResulttxt没结束时循环
    fputc(fgetc(in)out)逐字符写入
    fclose(in)
    fclose(out)}
    **
    void ChooseFunc()
    void begain()
    {printf(\n\n\n)
    printf( \n)
    printf( *************************************************************\n)
    printf( *1加法测试*\n)
    printf( *2减法测试*\n)
    printf( *3法测试*\n)
    printf( *4法测试*\n)
    printf( *5返回菜单*\n)
    printf( **\n\n\n)
    int choosethnum bool judgefalse
    printf( 选择功:)
    scanf(d&choose)
    while(choose<1||choose>5)列功时循环
    {
    printf( 超出功范围请重新选择(15))
    scanf(d&choose)
    }
    switch(choose)switch语句选择执行功
    {
    case 1执行功1
    system(cls) 清屏
    printf(\n\n\n)
    printf( 加法测试:输入测试题目数(5102050100):&thnum)
    scanf(d&thnum)

    while(thnum<5||thnum>5&&thnum<10||thnum>10&&thnum<20||thnum>20&&thnum<50||thnum>50&&thnum<100||thnum>100)列功时循环
    { printf(超出功范围请重新选择(5102050100))
    scanf(d&thnum)}

    system(cls) 清屏
    Addition(thnum)调加法运算函数
    begain()

    break
    case 2
    system(cls) 清屏
    printf(\n\n\n)
    printf( 减法测试:输入测试题目数(5102050100)&thnum)
    scanf(d&thnum)

    while(thnum<5||thnum>5&&thnum<10||thnum>10&&thnum<20||thnum>20&&thnum<50||thnum>50&&thnum<100||thnum>100)列功时循环
    { printf(超出功范围请重新选择(5102050100))
    scanf(d&thnum)}

    system(cls) 清屏
    Subtracter(thnum)
    begain()
    break
    case 3
    system(cls) 清屏
    printf(\n\n\n)
    printf( 法测试:输入测试题目数(5102050100)&thnum)
    scanf(d&thnum)
    while(thnum<5||thnum>5&&thnum<10||thnum>10&&thnum<20||thnum>20&&thnum<50||thnum>50&&thnum<100||thnum>100)列功时循环
    { printf(超出功范围请重新选择(5102050100))
    scanf(d&thnum)}

    system(cls) 清屏
    printf(\n\n\n)
    Multiplication(thnum)
    begain()
    break
    case 4
    system(cls) 清屏
    printf(\n\n\n)
    printf( 法测试:输入测试题目数(5102050100)&thnum)
    scanf(d&thnum)
    while(thnum<5||thnum>5&&thnum<10||thnum>10&&thnum<20||thnum>20&&thnum<50||thnum>50&&thnum<100||thnum>100)列功时循环
    { printf(超出功范围请重新选择(5102050100))
    scanf(d&thnum)}
    system(cls) 清屏
    printf(\n\n\n)
    Division(thnum)begain()
    break
    case 5
    system(cls) 清屏

    ChooseFunc()
    break}}
    **

    void ChooseFunc()功选择函数
    {
    printf(\n\n\n)
    printf( *************************************************************\n)
    printf( *1开始测试*\n)
    printf( *2查结果*\n)
    printf( *3查排名*\n)
    printf( *4错题重做*\n)
    printf( *5结束测试 *\n)
    printf( **\n\n\n)
    int choosetime

    printf( 选择功:)
    scanf(d&choose)
    while(choose<1||choose>5)列功时循环
    {
    printf( 超出功范围请重新选择(15))
    scanf(d&choose)
    }
    switch(choose)switch语句选择执行功
    {
    case 1功1
    system(cls)
    printf( *************************************************************\n)
    {printf( 请计时输入开始时间(点分)) 开始时间
    scanf(dd&hourA&minA)
    system(cls) }
    显示时间
    *gettime(&tim)printf(\n开始时间:02d02d02d\ntimti_hourtimti_mintimti_sec)*

    begain()

    break
    case 2功2
    system(cls)
    printf(\n\n)
    ShowResult()调函数输出测试结果
    ChooseFunc()
    break
    case 3功2
    system(cls)
    printf(\n\n)
    sort()调函数输出测试结果
    ChooseFunc()
    break

    case 4功4
    system(cls) 清屏
    printf(\n\n)
    rework()调函数输出测试结果
    ChooseFunc()
    break
    case 5功5
    system(cls) 清屏
    printf(\n\n)

    { printf(请输入结束时间:点分) 结束时间
    scanf(dd&hourB&minB)
    time(hourBhourA)*60+(minBminA)
    printf( **\n)
    printf( *朋友答题时*\n)
    printf( * d分钟 *\n time) }
    FileCopy()调函数复制测试结果
    TestOver()
    break}}
    **
    ***********************************************************************************************************************************
    void main()
    {
    FILE *fp*fp2*fp3
    fpfopen(TestResulttxtw) 写方式开文件果文件存清空什结束程序时复制测试结果
    fp2fopen(failedResulttxtw)清空前数
    fclose(fp2)
    fp3fopen(rightResulttxtw)清空
    fclose(fp3)
    Judge() 调函数
    Savemessage() 调函数
    ChooseFunc() 调函数

    }






    湖nna工程学院
    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    c++超市管理系统课程设计报告

    c++超市管理系统课程设计报告第1章 任务描述本次C++实践课题为“超市管理系统”。要求功能有A、添加商品信息,有商品编号、商品名、供应商代号、进货价、售出价、存货数等。进货:若商品已存在...

    2年前   
    550    0

    C语言代码大全

     乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); pr...

    5年前   
    1760    0

    快递管理系统项目测试报告C

    成绩 课程设计报告 题 目 快递管理系统 项目测试报告 课 程 名 称 软件项目实践 ...

    2年前   
    393    0

    C语言课程设计学生考勤系统

    设计任务:C语言课程设计任务书题目:学生考勤系统设计功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够...

    2年前   
    523    0

    C语言课程设计通讯录管理系统

     课程设计报告书 课程名称: C语言课程设计 班 级: 学 号: ...

    5年前   
    2399    0

    C语言通讯录报告及源代码

    XX学院《C语言程序设计》课程设计报告 学 院:_电气与信息工程学院_ 专业班级: 计科班 学生姓名: 学 号: ...

    3年前   
    354    0

    软件测试课程设计医院管理系统

    成绩 课程设计报告 题 目 易非医院管理系统 课 程 名 称 软件测试课程设计 院 部 名 称 专...

    1年前   
    326    0

    课程设计报告《某中小学视频监控系统设计报告》

    计算机网络技术教研室目录第1章 概述 11.1 课程设计的核心任务 21.2 课程设计工作进程 2第2章 需求分析 32.1 用户需求2.2 可行性分析 32.2.1 技术可行性 32.2.2...

    3年前   
    572    0

    小学数学圆的课程设计

    教学目标:• 了解圆的概念;• 认识圆的直径和半径;• 会画圆;• 能测量圆的周长和面积。教学重难点:• 理解圆的直径和半径;会画圆;能测量圆的周长和面积。教学准备:

    2个月前   
    158    0

    C语言课程设计学生通讯录管理系统设计

    C语言课程设计学生通讯录管理系统设计一、题目内容的描述学生通讯录管理系统设计设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类...

    4年前   
    720    0

    银行账户管理系统(c++课程设计)

     2015-2016学年第二学期 面向对象程序设计(c++)大作业说明书学院名称: 计算机与信息工程学院 班级名称: 计算机科学与技术(对口)...

    3年前   
    728    0

    C语言课程设计学校运动会管理系统

    C语言课程设计 学 校 运 动 会 管理系统代码有误运行不了 专业:网络工程 班级: 报告人: ...

    1年前   
    232    0

    c++课程设计及图书管理系统(窗口界面)

    C++课程设计课程设计系部:计算机应用技术系专业:计算机应用技术班级学号: 姓名: 一、系统功能分析: 图书...

    3年前   
    585    0

    小学算术运算测试程序JAVA课程设计报告

    面向对象程序设计(JAVA)课程设计说明书学院名称: 计算机与信息工程学院 班级名称: 20XX级计算机科学与技术 题 目: ...

    3年前   
    699    0

    C课程设计题目及要求

    课程设计题目 选题一: 学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。(测试数据不少5个人,可以用本班同学的具体数据为背景) 软件由下...

    7年前   
    3876    0

    物料代码输入ERP系统流程6

    1. 目的 使MRPⅡ系统的供应商规格范围吻合合格供应商的限定。 2. 适用范围 本公司所有合格供应商的物料代码。 3. 流程/职责和工作要求 流 程 职 责 工作要求 ...

    8年前   
    12879    0

    物业管理系统课程设计报告

    物业管理系统课程设计报告目 录第一章 前 言 11. 物业管理系统研究的意义 12. 数据库开发简介 13. asp.net简介 2第二章 数据库设计 31.选择数据库管理系统 ...

    3年前   
    867    0

    Web系统开发课程设计报告

    录入学生基本信息的功能学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。1.2、修改学生基本信息的功能

    4年前   
    1232    0

    某中学的排课管理系统课程设计报告

    学号《某中学的排课管理系统》课程设计报告题目:某中学的排课管理系统专业:网络工程班级:姓名:指导教师:成绩:计算机学院2017年X月X日目录一、 设计内容及要求 21.1研究的目的和意义 21...

    1年前   
    288    0

    物流信息系统课程设计报告

    课程设计指导教师评定成绩表项目分值优秀(100>x≥90)良好(90>x≥80)中等(80>x≥70)及格(70>x≥60)不及格(x<60)评分参考标准参考标准参考标准参考标准参考标准学习态...

    3年前   
    930    0

    文档贡献者

    文***享

    贡献于2021-06-03

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档