一、课程设计题目基本要求介绍
简单介绍要做一个什么软件,大概有什么功能,要用到哪些知识。(相当于简单的需求分析)
我们小组准备制作一个网络版的学生答题程序。
该程序需要有以下功能:
1.
(1)该函数判断账号是否由10位学号+姓名构成,10位学号的格式应该是1(【6-9】表示6-9中的1个数,13表示计算机学院)
(2)如果判断不合法就返回0,否则就返回1
(需要掌握数组,条件函数,c语言的基础知识)
2.
(1)该函数直接修改CMD的窗口标题,标题应该为账号名
3.
(1)创建一个TXT文本
(2)文本的名称为:学号+姓名
(3)向这个TXT文本中输入用户的答题信息
(需要掌握怎样设置文件指针对文本文件进行操作)
4.
(1)在程序的开始界面显示学生拥有的答题时间,学号,姓名
(需要掌握printf的基本用法)
5.
(1)在开始答题前先倒计时5秒,每倒计时1s显示倒计时的时间
(2)倒计时的5秒不计入答题时间
6.
(1)当学生开始答题时开始计时
7.
(1)随机抽取题库中的题目
(2)抽取的题目不重复
(3)难易比例为1:2
8.
(1)学生可以输入答案
9.
(1)开头的回车,空格不影响答案(该程序可以把学生误输入的空格、回车忽略)
(2)中间的空格不影响答案(该程序可以把学生误输入的空格忽略)
(3)大小写不影响答案(该程序可以把学生输入的大写答案全部改成小写)
9.
(1)将用户输入的答案与题库中对应的题目进行对比
(2)如果正确返回1,否则返回0
(3)后台的答题总数+1,如果正确,正确数+1
10.
(1)如果用户的答题数已达到上限(50题)则终止程序
(2)如果用户的答题时间已达到上限(120S)则终止程序
(3)如果以上均未达到上限则继续答题
11.
(1)输出语句,用户的答题数,正确数,正确率,耗时
(2)输出语句,按照用户的成绩输出不同的温馨语句
(3)输出语句,按照用户的成绩输出不同颜色的等级(S,A,B,C,D,E)
12.
(1)将TXT文件发送至服务端
13.
(1)发布软件的release版本

二、流程图

三、项目目前的进展
*主要写已实现的功能,功能完成的具体程度。
1.判断账号是否正确,不正确重复。
2.修改窗口标题为账号名
3.创建TXT文本并且将用户信息放入(不能讲全部放入)
4.显示用户有的答题时间,学号和姓名
5.倒计时
6.计时功能
7.随机抽取题目(难易比例,题目不重复没有完成)
8.处理用户输入的答案(开头的回车、空格,和中间的空格)
9.检查答案是否正确
10.输出语句,用户的答题数,正确数正确率,耗时,等级,温馨语句
11.如果超时或者完成题目数量了结束程序,否则继续抽题
12.release版本(未完成)
13.网络版可以讲TXT文件发送至服务端(未完成)
3.核心功能讲解
(1)检查账号功能

  • 实现该功能的思想
    利用ASCII码来排除不需要的数字和确定汉字

    • 核心代码
    •   else if((int)account[i] > 0  &&  (int)i < 13)    //判断汉字
      

      {
      return 1;
      }

    • 效果图
      (2)随机抽题功能
  • 实现该功能的思想
    将已经抽过的题目排除在抽题范围之外

    • 核心代码
    • 效果图

四、项目未完成的功能
正在实现的功能有哪些(觉得能做出来的,技术层面已经没什么问题了,只是时间问题)

  1. Release版本
    今后打算实现的功能哪些(觉得现阶段自己无法完成的功能)
  2. 网络版本有服务器和客户端
  3. TXT文件中记录全部的答题信息
  4. 随机抽题不重复,难易比1:2
  5. 发送TXT文件至服务端

五、每日项目进度表及版本更新日志说明(注意:用表格填空)

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

七、每位成员的过程体会
组长姓名:孔宏剑
这次的课程设计,我感觉我学到了很多东西,比如如何与组员们一起工作一起讨论问题。而且在完成我自己负责的这块功能时,遇到很多不会的东西,但是都通过我自己各方面的查找资料,解决了这些问题,提高了我的自信心以及专业能力。然后在过程当中,一开始我感觉十分的焦灼,一下子接触看上去这么高大上的东西,想着我真的完成的了吗?万幸的是,我完成了,虽然完成度不高,但是还是感觉非常棒的。在中期的时候,感觉走上正轨了,开始慢慢敲代码,慢慢解决难题。到了后期整合代码的时候,就又感觉非常头疼,有些东西就是不知道哪里错误,但是不找出来又不行,一个问题需要想几个小时。以上就是我的体会。
组员1姓名:倪鸿荣
这一次的课程对我本身也是一个挑战吧,刚开始就觉得很难吧,可是做起来更难,需要做的和考虑的很多很多,也发现了自己很多考虑不周到的地方,而且这一次编程用到了很多很多自己没学的地方,我只能在收集资料自己去学习,去应用,虽然这一次的编程不算成功,但是我在其中学习到了做一名优秀的程序员应有的品质,我也会向其靠齐
组员2姓名:阳睿
在为期一周的课程设计里,我们组三位成员从构思到实践,初步的完成了一次程序设计。在这其中,深刻的认识到自己在设计中,构思能力、动手实践能力有待加强。我们三个算是一个小小的团队,做好程序不是某一个人的事,个人觉得我们组在沟通交流方面比较密切,尽管没能完成每一个加分项,但是还是收获到了很多,非常感谢并且珍惜这样的一次机会。

八、组长想说的话
自我批评篇
对于这次课程设计,我们组还是存在很多问题的,首先是因为组内成员有女生,所以组员在线下很少在一起敲代码沟通,更多的是在线上沟通。其次,因为组员实力差距比较明显,所以分工有些不大合理,能者多劳,有能力的把大多数的难题解决了而能力偏弱的则没在此次编程中获得什么。第三,因为第一次接触这种形式的编程,所以我们组一开始有很长一段时间的迷茫期,不知道自己要干什么,也不知道自己要从何下手。最后,因为组员实力总体偏弱,所以我们做课程的时候大多数是在截止前几天,做工比较赶,程序也比较粗糙。
自夸篇
我们组的成员有不耻下问的好品行,没当遇到不懂得,就会面向百度,学长学姐以及老师进行编程。我们组的成员也是十分的扎实,负责的任务没有怨言,甚至在自己那块完成后会主动帮其他成员完成任务,大家一起完成课程。每当遇到难题的时候会一起想办法想思路,不会甩锅给负责的那个人。面对加分项,就算实力不够,我们也尽力去完成,不会直接放弃。

九、源码

#include<stdio.h>
#include<string.h>
#include<time.h>
clock_t start, stop; //clock_t为clock()函数返回的变量类型
#include<windows.h>
double duration;
int islogin(char account[]);
void color(short x);
void remove1 (char a[]);int main()
{char question[][100] = {"2^16的次方是多少?","2^15的次方是多少?","2^12的次方是多少?","2^11的次方是多少?","2^10的次方是多少?","2^9的次方是多少?","2^8的次方是多少?","2^6的次方是多少?","-1的补码是多少?","28的十六进制补码","32的十六进制补码","75的十六进制补码","60的十六进制补码","42的十六进制补码","48的十六进制补码","65的十六进制补码","97的十六进制补码","10(十进制转二进制)","12(十进制转二进制)","14(十进制转二进制)","6(十进制转二进制)","8(十进制转二进制)","内存的英文单词","数组的英文单词","语法的英文单词","交换的英文单词","变量的英文单词","参数的英文单词","0的ASCII值","A的ASCII值","a的ASCII值",};char answer[][100] = {"65536","32768","4096","2048","1024","512","256","64","ff","1c","20","4b","3c","2a","30","41","61","1010","1100","1110","110","1000","memory","array","syntax","swap","variable","parameter","48","65","97",};//题库char account[30];int i,d;//duo iint Countdown=5;char myanswer[100];int questionnum;int count = 0;int random_index;double a,b,c;int correct;//正确率FILE * file;char filename[20] = "input.txt";char ch ;srand((unsigned int)time(NULL));printf("请输入用户名:学号+姓名\n");gets(account);remove1(account);printf("%s\n",account);while(islogin(account)){printf("请输入正确的用户名:学号+姓名\n");memset(account,'\0',sizeof(account));gets(account);remove1(account);printf("%s\n",account);}SetConsoleTitle(account);//窗口改名printf("生成文件:%s\n",account);file = fopen(account,"w+");//以写入模式生成文件,并将文件地址赋给文件指针变量if( file == NULL) //生成文件失败,指针为空{printf("打开文件失败");}printf("%s\n",account);//将文件名_FLAG输出到屏幕fprintf(file,"%s\n",account); //将filename以%s的形式写入文件file中,在%s后面增加“_FLAG1”字符串作为标记//指定倒计时在运行时的颜色while(Countdown>=0){printf("距离开始答题还有%d秒\n",Countdown);Sleep(1000);Countdown=Countdown-1;}//以上为倒计时代码questionnum = sizeof(question)/sizeof(question[0]);printf("---------------------\n");a=clock();fprintf(file,"你的成绩如下\n");for( i = 0 ; i < questionnum ; i++){random_index=rand()% questionnum ;//random_index表示随机产生的下标,范围0~4d=random_index;color (15) ;printf("第%d题:%s\n",i+1,question[d]);//question[0],question[1] 教材P146页fprintf(file,"请输入第%d题的答案\n",i+1);gets(myanswer);fprintf(file,"%s\n",question[d]);fprintf(file,"%s\n",myanswer);remove1(myanswer);if( strcmp(strlwr(myanswer),answer[random_index]) == 0 ){count++;color(10);   printf("^_^恭喜你,回答正确你已经答对%d题\n",count);}else{color(12); printf(">_<你回答错误!\n");}printf("\n");b = clock();printf("您已耗时%.2lf秒\n",(b-a)/1000.0);if(((b-a)/1000)>=120){break;}//120秒限时}c = clock();correct = (float)count / 5 * 100;printf("你一共正确%d道题,你答题的正确率为%.2f%%\n",count,(float)count/(i+1)*100);//%f ieee754标准printf("您耗时%.2f秒\n",(c-a)/1000.0);//输出计时的时间if(correct==100)color(14);    printf("您的等级是S,你是最棒的\n");if(correct>89&&correct<100)color(10);   printf("您的等级是A,你好棒\n");if(79<correct&&correct<90)color(7);   printf("您的等级是B,加油,你离成功还差那么一点\n");if(69<correct&&correct<80)color(8);  printf("您的等级是C,你还需努力\n");if(59<correct&&correct<70)printf("您的等级是D,小心了,马上就不及格了\n");if(0<=correct&&correct<60)printf("您的等级是E,同学,上课少睡觉,少玩手机,多听老师,多学习!\n");//以上为计时代码return 0;
}fclose(file); //关闭文件指针变量
//——————自定义函数--------------------
int islogin(char account[])//10位数字加汉字功能
{int  i;if(strlen(account) < 11){return 1;}if(account[0] != '1' || account[1]<'6' || account[1]>'9' || account[2] != '0' || account[3] != '0' ||account[4] != '1' || account[5] != '3' || account[6] != '0'){return 1;}for(i = 7; i < strlen(account); i++){if(i<10){if(account[i]<'0' || account[i]>'9'){           return 1;}}else if((int)account[i] > 0  &&  (int)i < 13)    //判断汉字{return 1;}}return 0;
}void color(short x)//颜色
{if(x>=0 && x<=15){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);}else{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);}
}void remove1 (char a[])
{int i,k;char c[100];for(i = 0,k=0; i<strlen(a);i++){if(a[i]!=' '||a[i]!='\0'){c[k]=a[i];k++;}  }c[k]='\0';strcpy(a,c);}
//————————————————
//版权声明:本文为CSDN博主「viafcccy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
//原文链接:https://blog.csdn.net/viafcccy/article/details/85255754 //————————————————
//版权声明:本文为CSDN博主「comoca」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
//原文链接:https://blog.csdn.net/jmj18756235518/article/details/79888206

十、组员分数分配
倪鸿荣(45%)
阳睿(25%)
孔宏剑(30%)

怀院计科院1901班NICE组限时答题程序相关推荐

  1. xdoj系统_【战疫情】西电计科院教学在行动(6)——对话全面线上服务的万波老师...

    (通讯员 王孟晞 薛科)线上教学是疫情期间的特殊需要,更是我们进行信息化.智能化教学建设的需要.即使没有这次疫情,计科院也在着手进行"人工智能+教育","互联网+教育&q ...

  2. 用HTML+CSS编写一个计科院网站首页的静态网页

    用HTML+CSS编写一个计科院网站首页的静态网页 利用浏览器查看网页源代码,并将一些图片分门别类的下载到本地,然后删除javascript脚本. 项目的文件目录 最终效果 <!DOCTYPE ...

  3. 西电计算机学院名誉院长,杨孟飞院士受聘为西电计科院名誉院长及讲席教授

    西电新闻网讯(通讯员 陈龙)12月21日上午,西安电子科技大学计算机科学与技术学院名誉院长杨孟飞院士"华山学者"讲席教授及战略咨询委员会委员聘任仪式在北校区主楼Ⅱ区319会议室举行 ...

  4. 我的未来该何去何从?双非院校计科院学嵌入式的大四小菜鸡的自我反思...

    这篇文章其实挺早之前就想写的,而且当时就想好了两种心态来写.第一种是小有成就,拿到心满意足的offer来分享一下往昔踩过的坑:第二种就是庸庸碌碌,任重道远.很不幸现在的是第二种心态! 近来看到曾经的同 ...

  5. 2023武生院计科专升本指南

    自我介绍一下,我叫啊超,22级专升本上岸武生院考了211的计应学长,社恐,不善言辞,出门都走下水道,吃饭因社恐,屡次不敢买单.单身可撩,哈哈哈~ 我只是提出自己的一些个人建议,仅供参考:如果其中有你不 ...

  6. 北邮计科院导师简况2009-09-27 14:13:38

    李晓峰,女,研究员,硕士研究生导师,中国电子学会高级会员.1950年10月生,毕业于北京邮电大学电子交换专业,现任北京邮电大学程控交换技术与通信网国家重点实验室副主任.长期从事程控交换与计算机通信方面 ...

  7. 【20保研】西安电子科技大学计科院关于举办2020年“优研计划”暑期夏令营的通知...

    点击文末的阅读原文或者公众号界面左下角的保研夏令营或者公众号回复"夏令营"是计算机/软件等专业的所有保研夏令营信息集合,会一直更新的. 西安电子科技大学计算机专业源于1956年的导 ...

  8. 计算机组织电脑义诊是什么,计科院计算机协会开展电脑义诊活动

    2020年11月28日下午13时,计算机协会在本学期的第一次电脑义诊开启了准备工作,会长带领着理事们进行场地的布置.拿拆机工具等准备,大家凭借默契的合作,该准备工作在14时准时结束,首次电脑义诊也拉开 ...

  9. 西南石油大学计科院主页

    这次作业通过百度和审查元素的方法解决了很多问题 未解决问题:二级下拉栏多余部分没有背景,导航栏也有点问题,将在后续的编写中解决掉 网页显示 html文件网址:https://gitee.com/lgc ...

最新文章

  1. Google的系统工程师(SA)如何工作
  2. 杭电2097--Sky数
  3. JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
  4. Android 系统自带 Theme(主题)
  5. 一、 Log4E插件下载
  6. 轻量级锁的加锁和解锁逻辑
  7. PMP之项目风险管理---实施定性风险分析
  8. Educational Codeforces Round 88 (Rated for Div. 2) E(数学)
  9. oracle-扫盲贴:存储过程实现增删改查
  10. Outlook替代Hotmail:社交很重要,但邮箱是根本
  11. 2022年3月份报告合集(共353份)
  12. spoj COT COT2
  13. oracle数据文件recover,又遇BUG-ORA-01148:数据文件忽然变为recover状态
  14. 【网页处理与文本分析】某电视剧弹幕信息情感分析
  15. 密西西比河谷州立大学:Android应用程序开发(三)
  16. JavaScript代理模式之四大代理
  17. 【学术】如何长时间高效学习
  18. CIDR(构成超网)
  19. Linux主机名查看和更改
  20. matlab 1向量组,matlab-线性代数 rank 向量组的秩

热门文章

  1. 视频处理-按帧或者按秒截取图像
  2. 一键备份微博并导出生成PDF,顺便用Python分析微博账号数据!
  3. 全球及中国液压机行业应用范围调研及投资策略预测报告2022-2028年
  4. RPA机器人流程自动化(Robotic process automation)
  5. 数字证书与实现双向SSL认证
  6. ✨ StarRocks 9 月社区动态
  7. 按键精灵 识别图片形状_精灵形状的2D世界建筑物简介
  8. 语音之家SOTA|开源发布: SPEECHIO_ASR_ZH00004 罗振宇跨年演讲
  9. app直播源代码是如何实现直播间小游戏的
  10. pycharm远程连接服务器问题Uploading PyCharm helpers Python Interpreter... Python helpers are not copied yet