单位名 怀化学院计算机科学与工程学院
课程名称 《高级语言程序设计》
班级组号 1901班 第13组
团队名称 踏金小组
课程设计题目 学生限时答题测评系统

一、课程设计题目基本要求介绍
这是一个可以让学生限时答题的测评软件,可以让学生在规定时间内答题,题目是从题库中随机不重复的抽取,并将学生的成绩按等级划分出来,可供学生知道自己的水平怎么。
二、流程图
课程设计:学生限时答题测评系统感悟 图1登录和测验前预备流程图课程设计:学生限时答题测评系统感悟
图二答题过程流程图课程设计:学生限时答题测评系统感悟
图3答案分析和版本发布流程图

三、项目目前的进展
*主要写已实现的功能,功能完成的具体程度

1.如果没有按学号+姓名的方式可以提示重新输入。
2.一旦输入正式的学号和姓名之后,窗口标题应该修改为该生输入的“学号+姓名”。
3.答题开始时,倒数5秒,每秒倒数1次,倒数不计时
4.支持大小写答题功能,如学生输入fF,等同于ff,支持开头是空格或者回车的错误输入,不会因为误输入而判错,如输入 \nff(空白表示空格,\n表示回车),等同于输入ff。
5.题库中的题目分为难易两档,随机抽题时,可以设定抽取难题的比例,比如63%的几率会抽到难题,那么37%的几率会抽取容易的题目。
6.每完成一道题目,提示该同学已正确多少道,已耗时多少秒。
7.每道题回答正确还是错误,应该易于辨识,比如正确的提示为绿色,错误的提示为红色。
8.超时后不关闭程序。
9.根据学生表现的不同等级,显示不同颜色的成绩单,还可以根据学生不同的等级,输出不同的提示话语。
10.(5) 答题日志:记录所有屏幕上打印出的语句,将所有语句按输出的程序全部记录在【学生基本信息_EXAM.txt】之中。
网络版程序:以上功能属于单机版内容,大概看懂参考程序server.c和client.c程序,了解大概意思,能阅读已有的可运行程序将自己已完成的单机版程序改为客户端和服务端的网络版程序。
11.如果考生达到某个级别以上,考生会将【学生基本信息_EXAM.txt】自动发送给服务器端,在服务器端中保存下来。
12.考生答完后(客户端)将某些重要的考生完成信息发送给服务端,服务端可以生成特定的文件来记录下这些客户端发来的考生完成信息。(文件记录的语句越完整越好)
13…布一种新的练习模式,练习模式可以自己设定限制的时间,属于单机版,用于个人练习,但功能基本类似。

3.核心功能讲解
(1)窗口名修改,格式判断功能
* 实现该功能的思想
* 核心代码(部分,不要全贴)
* 效果图
(2)时间计时限制功能
* 实现该功能的思想:第一次未精确到毫秒,使用一个time库函数,来获取当前的系统时间(time函数获取得日历时间,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数,然后精确到毫秒加上秒数(秒数+毫秒部分),通过相减计算用时。
* 核心代码课程设计:学生限时答题测评系统感悟
* 效果图
* 课程设计:学生限时答题测评系统感悟
(3)难易题按比例抽取功能
* 实现该功能的思想:题库中的题目分为难易两档,随机抽题时,可以设定抽取难题的比例,比如63%的几率会抽到难题,那么37%的几率会抽取容易的题目。以一个0-9的随机数来限定比例,列如(随机了0-3数就从难题库中随机抽取一个反之亦然)利用程序随机数来控制。
* 核心代码(部分,不要全贴)

  1. srand((unsigned)time(NULL)); k=rand()%(10); if(k<3) {
    file=fopen(“intput.txt”,“r”); } else {
    file=fopen(“intput2.txt”,“r”); }

    • 效果图
      (4)信息上传文件并屏幕中输出功能

    • 实现该功能的思想:创建一个文件读入我需要的内容但是又在屏幕中打印出。

    • 核心代码(部分,不要全贴)
      头文件:

  2. #include<stdio.h>
    #include <stdarg.h>
    #include <windows.h>

  3. va_start(args,cmd); //使args指向可变参数的第一个参数
    vprintf(cmd,args); //必须用vprintf等带V的
    va_end(args); //结束可变参数的获取

    • 效果图课程设计:学生限时答题测评系统感悟
      (5)题干与答案判断功能
    • 实现该功能的思想:题目是按照题目与答案一起存放所以需要分割来划分,题干就输出,然后与多个答案进行比较(割一次就比较一次),判断正误,直到没有分割对象。
    • 核心代码
  4. for(i=0;i<2;i++){ printf("%s\n",input[i]); printf(“开始前:
    input=%s\n”,input[i]); printf(“开始分割:\n”);

  5. ptr = strtok(input[i],"||"); //sprintf(question[i],ptr);
    puts(ptr); gets(myanswer);

    • 效果图课程设计:学生限时答题测评系统感悟
      (2)获取本机的IP地址功能
    • 实现该功能的思想:客服每次都要输入IP地址,所以写入程序来自行算出本机的IP地址和传递信息。
    • 核心代码
  6. WSADATA wsaData; char name[155]; char ip; PHOSTENT
    hostinfo; if (WSAStartup(MAKEWORD(2, 0), &wsaData) == 0) {
    if (gethostname(name, sizeof(name)) == 0)
    {
    if ((hostinfo = gethostbyname(name)) != NULL)
    {
    ip = inet_ntoa(
    (struct in_addr *)*hostinfo->h_addr_list);
    sprintf(IP_adress,"%s",ip);
    //printf(" IP地址: %s ", ip);
    }
    }
    WSACleanup(); }

    • 效果图课程设计:学生限时答题测评系统感悟

四、项目未完成的功能
正在实现的功能有哪些(觉得能做出来的,技术层面已经没什么问题了,只是时间问题)
1.打印出学生回答的成绩单,并且根据学生回答的正确数、回答的总题数、正确率、耗时等因素制定出一个百分制的评分标准(制定百分比标注有阻碍)

今后打算实现的功能哪些(觉得现阶段自己无法完成的功能)
1.版本发布:学会最终发布Release版,不再使用默认的Debug版本
2.超时后不再允许学生输入,以回车为一个时间取值判断所以为实现题目出现到达时间用户不能输入答案。

五、每日项目进度表及版本更新日志说明(注意:用表格填空)
第1列 第2列 第3列 第4列 该功能的工作量占总工作量的比例(%)
第1行 编号1 功能1 负责人姓名 完成日期 X%

课程设计:学生限时答题测评系统感悟

六、相关文档地址
1.【PPT链接,点击直接下载PPT】关于技术层面的核心、特色功能的报告PPT(要封面,有主讲人,有目录,每个功能先讲思想,后讲少许核心代码)
2.【视频链接,点击直接下载视频】项目演示视频(视频需要附讲、有声音,讲到一个点的时候提示观众是什么功能了)

七、每位成员的过程体会
组长姓名:姚弯
这一次课程设计,我很荣幸,他们让我来当这个组长,我也意识到我要承担很多的责任,但是也是来磨砺自己,在这两周课程设计中,遇到了很多的麻烦,我也知道这个组长很不容易,我也犯了很多的错误,在分配任务,团结团队这方面,然后整理和修改等等,然后在管理方面出现了混乱,以至于很多的数据丢失和管理不当,然后再分布任务和组织讨论。理解这个项目的过程中也没做然后再分不任务和组织讨论理解这个项目的过程中也没做好。
在这个项目学习中,学会了很多课外知识,也提高了自己的实践能力,更是让自己的组织和调配能力有了进一步提高,我十分的感谢我的组员积极配合和信任我,虽然结果可能不会像预想中的那么顺利,但是的确,我们在此次项目中收益颇多,也增进了彼此之间的感情和对这个,学科专业的深度认识和了解,很感谢这一次的挑战!

组员1姓名:李润湘
在这个团队一起努力的两周以来,我大体上知道了该如何去编写代码以及如何将函数拆分出来为自己的自定义函数,也知道了该如何去借鉴别人的代码,明白一个函数的用途是什么。这次,我们组的分工很明确,组长也很负责。在这个团队中,我明白了分工合作的重要性,虽然我现在敲代码还很菜,每次一敲,就错误百出,然后又疯狂的为直接挖的坑自己来填。但是这让我明白了自主学习的重要性,为此我还特地去网上搜视频看,虽然看的不是很懂,但我尽量的学会去如何套用,像这次的要消除空格和回车的失误输入的函数,一开始写的时候是毫无头绪,后来通过去网上搜以及问助教之后就有点思绪了,尽管写出来的还是有bug,但在几经波折下,还是成功了。后来的将函数分割出来又出现bug,但这并没有打击我的自信心,而是脚踏实地一遍又一遍的修改。通过这次的团队协作,我学到了很多课本上没有的东西,这不仅能巩固我们之前学的知识,也可以学到很多课本之外的东西,同样能弥补自己之前不足的地方,虽然这次,我们有苦有乐,但更多的是乐吧,因为学到了新知识,也让自己成长了,从以前那个什么都不懂,只知道背代码到现在的自己去学习该如何敲代码。总之,这次的团队协作让我领悟到了很多。

组员2姓名:胡湘宇
回顾起此次课程设计,至今我仍感慨颇多,的确,从选择讨论到决定,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,如基本库函数的使用,常见bug的解决,程序的解决,优化等都还有很大的提示空间。
这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计的完成,也要得以与小组队员的大力发挥和老师对我们的指导,在设计中遇到了很多编程问题一步步解决。

八、组长想说的话
自我批评篇:
对于这次任务,虽然我们学到了很多,但我们也有很多不足的地方,例如:版本的管理不是很好,自己都弄混了最终版本以及我们修改过程中的版本了;代码写的不通用,像我们最初的版本能使用,到最后的把自己的函数拆分出来成自定义函数就不使用了管理出现混乱,以至于以前可以运行的代码无法使用,导致所有进程的落后,理解任务分配任务有误,以至于协调不好。

自夸篇:
对于这次的任务,这无疑对我们整组成员都是一个很大的挑战,但是我们并没有为此而止步,而是迎难而上,通过自己的查询网站、自学书本内容和询问助教来写好这次的代码,为此,我们组分工明确,分配的任务也及时完成了,这充分体现了我们组团结协作的精神,在两周的辛勤努力下,我们终于完成了学生限时答题测评系统的最终运行,这次的程序编写过程中,我们经历了一次次的代码修改和完善功能,最终实现了能运行的全部功能。从一开始的学如何套用别人的代码,到最后的学依据别人的代码来写自己代码,这的确是一个成长的过程,在这个过程中,我们不仅巩固了以前的知识,还学到了课本以外的知识,同样也领悟到了自学的重要性。

相关文章:

  • 2021-11-07
  • 2021-08-14
  • 2021-11-19
  • 2021-09-27
  • 2021-09-19
  • 2022-01-03
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-17
  • 2022-12-23
  • 2021-12-15
  • 2021-09-20
  • 2022-12-23
  • 2021-05-26
相关资源
相似解决方案