组名 Python天下第一

组长

周诗颖
组员 胡硕帅,温文侃

                 怀化学院计算机科学与工程学院

课程: C语言

1901第五组

 

一.课程设计题目基本要求介绍

本软件为答题软件,其主要功能为:

  1. 可判断用户答题前输入的信息是否为学号加姓名,若不是则提醒用户重新输入,若正确则可将窗口标题修改为该用户的“学号+姓名”。
  2. 答题限时120秒,答题前有5秒倒计时的准备时间,倒计时时每秒倒数一次,不计入答题总时间。
  3. 可随机从题库中出题,判断正确性并提示用户是否回答正确,若真确则用绿色字体提示其回答正确,若错误则用红色字体提示其回答错误,还能将正确答案告诉给用户。
  4. 限制最大答题量,即在规定时间之前回答完一定数量的问题后则不能继续答题。
  5. 题库中的题目分为难易两档,随即抽题时按一定的概率抽取题目。
  6. 每答完一道题提示用户所用的总时间,回答本道题的所用时间,已回答完几道题,正确多少题,错误多少题。
  7. 对于答题输入答案时开始输入回车,空格和字符之间的空格以及大小写不会影响其正确性。
  8. 超时后不再允许用户输入,但不关闭程序,提示其共回答多少题,答对多少题,错误多少题,正确率多少。
  9. 打印出学生回答的成绩单,并根据回答正确数,回答总题数,正确率,耗时等因素制定出一个百分之的评分标准,并显示出成绩单。
  10. 服务端能及时记录下用户的答题信息。
  11.  答题日志:记录所有屏幕上打印出的语句,将所有语句按输出的程序
  12. 全部记录在【学生基本信息_EXAM.txt】之中。
  13. :考生答题时(客户端)将某些重要的连接信息发送给服务端,服务端可以生成特定的文件来记录下这些客户端发来的连接信息。
  14. 考生答完后(客户端)将某些重要的考生完成信息发送给服务端,服务端可以生成特定的文件来记录下这些客户端发来的考生完成信息。
  15. 如果考生达到某个级别以上,考生会将【学生基本信息_EXAM.txt】自动发送给服务器端,在服务器端中保存下来。 

二.流程图 

1901第五组课程设计报告

三. 项目目前进展

主要已实现的功能有:

  1. 可判断用户答题前输入的信息是否为学号加姓名,若不是则提醒用户重新输入,若正确则可将窗口标题修改为该用户的“学号+姓名”。
  2. 答题限时120秒,答题前有5秒倒计时的准备时间,倒计时时每秒倒数一次,不计入答题总时间。
  3. 可随机从题库中出题,判断正确性并提示用户是否回答正确,若真确则用绿色字体提示其回答正确,若错误则用红色字体提示其回答错误,还能将正确答案告诉给用户。
  4. 限制最大答题量,即在规定时间之前回答完一定数量的问题后则不能继续答题。
  5. 题库中的题目分为难易两档,随即抽题时按一定的概率抽取题目。
  6. 每答完一道题提示用户所用的总时间,回答本道题的所用时间,已回答完几道题,正确多少题,错误多少题。
  7. 对于答题输入答案时开始输入回车,空格和字符之间的空格以及大小写不会影响其正确性。
  8. 超时后不再允许用户输入,但不关闭程序,提示其共回答多少题,答对多少题,错误多少题,正确率多少。
  9. 打印出学生回答的成绩单,并根据回答正确数,回答总题数,正确率,耗时等因素制定出一个百分之的评分标准,并显示出成绩单。
  10. 服务端能及时记录下用户的答题信息。
  11.  答题日志:记录所有屏幕上打印出的语句,将所有语句按输出的程序全部记录在【学生基本信息_EXAM.txt】之中。
  12. :考生答题时(客户端)将某些重要的连接信息发送给服务端,服务端可以生成特定的文件来记录下这些客户端发来的连接信息。
  13. 考生答完后(客户端)将某些重要的考生完成信息发送给服务端,服务端可以生成特定的文件来记录下这些客户端发来的考生完成信息。
  14. 如果考生达到某个级别以上,考生会将【学生基本信息_EXAM.txt】自动发送给服务器端,在服务器端中保存下来。

 

 

核心功能讲解

(1)可判断用户答题前输入的信息是否为学号加姓名,若不是则提醒用户重新输入,若正确则可将窗口标题修改为该用户的“学号+姓名”。

*实现该功能的思想:因为学号是10位数字,则用循环判断学生输入的前十位是否为数字即可。应为本班学生学号第一位都为1,第二位都为9,则判断期前两位是否为1和9.

 

*核心代码:

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

{

if(x[i]<'0'||x[i]>'9')

{

return 0;

break;

}

}

 

*效果图:

1901第五组课程设计报告

  1. 答题限时120秒,答题前有5秒倒计时的准备时间,倒计时时每秒倒数一次,不计入答题总时间。

*实现该功能的思想:用循环输出还剩几秒,每输出一次使程序暂停一秒。

 

*核心代码:while(a>0)

{

printf("测试即将开始,你有120秒的时间答题\n");

printf("还有%d秒开始,请做好准备\n",a);

if(a==1)

{

print(2,"祝你好运\n");

}

sprintf(save1,"测试即将开始,你有120秒的时间答题\n");

sprintf(save1,"还有%d秒开始,请做好准备\n",a);

senddata(save1);

save(save1);//将信息存入文件

Sleep(1000);

a--;    

https://blog.csdn.net/jmj18756235518/article/details/79888206

*效果图:

 

 

1901第五组课程设计报告

 

 

  1. 可随机从题库中出题,判断正确性并提示用户是否回答正确,若正确则用绿色字体提示其回答正确,若错误则用红色字体提示其回答错误,还能将正确答案告诉给用户。

*实现该功能的思想:

 

*核心代码:

getquestion();//从文件中获取题目

getanswer();//从文件中获取答案  

random_index=rand()% questionnum ;

printf("第1题:%s\n",question[random_index]);

sprintf(save1,"第1题:%s\n",question[random_index]);

*效果图:

 

1901第五组课程设计报告

 

  1. 制最大答题量,即在规定时间之前回答完一定数量的问题后则不能继续答题。

*实现该功能的思想:每答一个题记录一次答题数,当答题数达到一定值后则停止出题。

 

*核心代码: if(x>questionnum)

break;

 

*效果图:

1901第五组课程设计报告

 

 

  1. 题库中的题目分为难易两档,随即抽题时按一定的概率抽取题目。

*实现该功能的思想:设计产生一到一百的随机数,当数值在某一范围内对应某一难度的题目。

 

*核心代码:https://blog.csdn.net/ld851/article/details/73064777

 

*效果图:

 

 

 

  1. 每答完一道题提示用户所用的总时间,回答本道题的所用时间,已回答完几道题,正确多少题,错误多少题。

*实现该功能的思想:在答题前记录一次时间,学生回答完毕后后再记录一次时间,将两次的时间相减则为答题的总时间,同理可算出回答每道题的时间。

 

*核心代码:end = clock();//记录总时间

finish= clock();//记录本题结束时间

*效果图:

 

 

 

  1. 对于答题输入答案时开始输入回车,空格和字符之间的空格以及大小写不会影响其正确性。

*实现该功能的思想:因为scanf()函数再输入字符前输入空格和回车不记录为输入的字符,可是遇到空格则会停止这个字符串的输入,gets()函数遇到空格不会停止该字符串的输入,而是将空格当做一个字符记录下来,则综合两个两个函数,写成一个函数即可。

 

*核心代码:

删除字符中的空格:https://zhidao.baidu.com/question/1388402927305513740.html

大小写转换:https://zhidao.baidu.com/question/309610370826389044.html

*效果图:

1901第五组课程设计报告

 

 

  1. 超时后不再允许用户输入,但不关闭程序,提示其共回答多少题,答对多少题,错误多少题,正确率多少。

*实现该功能的思想:每次输入输出时读取现在时间  当时间已达到规定时间则不再输入输出。

 

 

 

  1. 打印出学生回答的成绩单,并根据回答正确数,回答总题数,正确率,耗时等因素制定出一个百分之的评分标准,并显示出成绩单。

*实现该功能的思想:每回答一道题记录一次回答的题目个数,正确的个数,错误的个数,然后算算出正确率,统计总用时,然后根据一定的方式评定其标准。

 

*核心代码:

 

*效果图:

1901第五组课程设计报告

 

 

  1. 服务端能及时记录下用户的答题信息。

*实现该功能的思想:用户每次输入一个信息在该用户的特定文件下加上这信息。

 

*核心代码:

 

*效果图:

 

四.项目未完成的功能

  1. 最终发布release版,不再是debug版
  2. 发布一种新的练习模式,练习模式可以自己设定限制的时间,单机版,用于自己练习但基本功能类似。
  3. 设置困难类题库

五.每日项目进度及版本更新日志说明 

功能 加分项 负责人姓名 完成日期 该功能的工作量占总工作量的比例
没有正确输入学号+姓名则重新输入 0 胡硕帅 2019.11.19  
最大答题数   胡硕帅 2019.11.19  
答题时间   胡硕帅 2019.11.19  
修改窗口标题 1 温文侃 2019.11.19  
五秒倒计时 2 胡硕帅 2019.11.19  
编辑题库   周诗颖 2019.11.19  
设置难易 6 周诗颖 2019.11.19  
抽取题目   周诗颖 2019.11.19  
输出题目   周诗颖 2019.11.19  
消除开始的回车和空格以及中间的空格 4,5 胡硕帅 2019.11.19  
大小写转换 3 温文侃 2019.11.19  
计算答题用时,答题数,合法 7 温文侃 2019.11.19  
判断正确和错误,用不同颜色辨别 8 周诗颖 2019.11.19  
超时不允许答题 9 胡硕帅 2019.11.19  
计算并打印用户答题数,总用时,准确率   温文侃 2019.11.19  
分为不同等级,用不同颜色 10 温文侃 2019.11.19  
存入学生信息文件中 12 温文侃 2019.11.19  
变换字体颜色   胡硕帅 2019.11.19  

 

六.相关文档地址

 

七.每位成员的过程体会 

周诗颖:这次课程设计对于我来说有一点难度,但是有了其他两位组员的帮助让我多多少少也收获了一点知识。

 

温文侃:这次课程设计很开心,下次还会来。也体会到了什么叫做世间冷暖,知道了如何苟代码,很有趣。

 

胡硕帅: 

 

 八.组长想说的话

自我批评篇:

 

自我夸奖篇: 

 

相关文章: