1901班第1组博文

2024-03-26 10:20
文章标签 博文 1901

本文主要是介绍1901班第1组博文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单位名怀化学院计算机科学与工程学院
课程名称高级语言程序设计
班级 小组序号1901班 第1组
团队名称Power组
课程设计题目随机答题程序

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

功能模块1:登录
(1)限制账号要以10位学号+姓名的方式登录,否则重新登录
(2)登录成功后将基本信息(账号,IP地址)发送给服务器
(3)登录成功后窗口标题应该修改为该账号名

功能模块2:测验前预备工作
(1)输出倒计时,1000ms一次,输出倒计时剩余时间,倒计时结束后输出“开始答题”(新模式可自行输入倒计时时间)

功能模块3:正式开始答题
(1)随机导入一道不重复的题
(2)开始答题限时计时,每答一道题输出一次时间(新模式可自行输入答题限时)
(3)考生输入答案,大小写,输入答案前的空格回车,答案中的空格均被自动删除
(4)考生输入的答案与题库答案对比,输出回答正确/错误,答对题数,已答题数
(5)判断时长与答题数,达到限定时间或做满题目后进行下一模块,否则调回模块3(1)

功能模块4:对答题结果进行判定
(1)输出考试的正确率,以正确率为准输出不同梯度等级(90%以上为S,80%以上90%以下为A,70%分以上80%以下为B,60%以上70%以下为C,60%以下为D)和不同的鼓励语

功能模块5:答题日志
(1)设置语句达到与建立的txt文件能相联系,以达到后续记录步骤的稳定执行
(2)将编译开始后在程序上所显示的全部内容打印至上述txt文件中
(3)若进行多次编译同样地将每一次所显示的编译内容保存在同一个txt文件中,每次编译的结果用换行的方式相隔开以供查阅

功能模块6:网络程序
(1)考生完成答题程序后将答题记录自动上传到服务端电脑文件中
(2)如果考生成绩达到某个级别,考生文件自动发送到服务端保存下来
版本发布:发布Release版,不再使用默认的Dubug版本

二、流程图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、项目目前的进展
主要写已实现的功能,功能完成的具体程度。
1.限制账号要以10位学号+姓名的方式登录,否则重新登录
通过循环和if语句,判断10位数的学号以及第11位的字符

核心代码

void islogin()//输入学号
{printf("请输入学号+姓名:");do{gets(account);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'||account[7]<'0'||account[7]>'9'||account[8]<'0'||account[8]>'9'||account[9]<'0'||account[9]>'9'||account[10]<'A'||account[10]>'z')printf("输入错误请重新输入:");//fprintf(file,);}while(account[0]!='1'||account[1]<'6'||account[1]>'9'||account[2]!='0'||account[3]!='0'||account[4]!='1'||account[5]!='3'||account[6]!='0'||account[7]<'0'||account[7]>'9'||account[8]<'0'||account[8]>'9'||account[9]<'0'||account[9]>'9'||account[10]<'A'||account[10]>'z');printf("输入正确\n");
}

效果图
在这里插入图片描述

2.输出考试信息(测试考试马上开始,你的学号和姓名)
核心代码

printf("测试考试马上开始,你的学号姓名:%s\n",account);

效果图
在这里插入图片描述
3.开始可自行输入的倒计时
核心代码

for(k=j;k>0;k--){printf("测试即将开始,倒计时:%d秒\n",k);Sleep(1000);}
**效果图**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191124214520858.png)

4.随机不重复抽取答案
核心代码

srand((int)time(0));while(1){k=rand()%math;for(j=0;j<math;j++)if(b[j]==k) break;if(j==math){b[c]=k;//printf("%d\n",b[c]);c++;}if(c==math) break;}

5.开始答题限时计时,每答一道题输出一次时间
核心代码

ts=time(NULL);
te=time(NULL);
T=te-ts;

效果图
在这里插入图片描述
6.考生输入答案,输入答案前的空格回车,答案中的空格均被自动删除
核心代码

for(l=0;l<M;l++){scanf("%c",&a[l]);if(a[l]!=' '&&a[l]!='\n'){count++;}if(a[l]==' '&&a[l]!='\n')continue;b[j]=a[l];j++;if(a[l]=='\n'&&count>0)break;}for(l=0;l<j;l++){if(b[l]!='\n'&&b[l]!='\r'){c[k]=b[l];k++;}}

效果图
在这里插入图片描述
在这里插入图片描述
7,考生输入的答案与题库答案对比
核心代码

if(strcmp(strlwr(myanswer),answer[random_index])==0)

8.判断时长
核心代码

if(te-ts<=60)

9.输出考试的正确率,以正确率为准输出不同梯度等级和不同的鼓励语
核心代码

printf("正确%d道题,你已完成%d道题,正确率%.2f%%,你已经用时%ds,总时间120s\n",count,i,(float)count/i*100,te-ts);
switch(count){case 5:printf("你的等级:S,NB\n");break;case 4:printf("你的等级:A,优秀\n")break;case 3:printf("你的等级:B,很强\n");break;case 2:printf("你的等级:C,还可以\n");break;case 1:printf("你的等级:D,及格了\n");break;case 0:printf("你的等级:E,未及格,多加努力\n");break;default:printf("数据错误!\n");break;}

10.答题日志
核心代码

FILE*file;
file=fopen("TEST4.txt","a+");
fprintf(file,"%s%d%s%d%s%.2f%%\n","你已正确",count,"道题,完成",i,"道题",(float)count/i*100);

11.网络程序客户端
核心代码

if (WSAStartup(MAKEWORD(2 , 2) , &wsd) != 0) {printf("Winsock    初始化失败!\n");return 1;}/*创建Socket*/sClient = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);if (sClient == INVALID_SOCKET) {printf("socket() 失败: %d\n" , WSAGetLastError());return 1;}/*指定服务器地址*/server.sin_family = AF_INET;port = atoi(getparameter[PORT]);server.sin_port = htons(port);server.sin_addr.s_addr = inet_addr(getparameter[IP]);if (server.sin_addr.s_addr == INADDR_NONE) {host = gethostbyname(getparameter[IP]);    //输入的地址可能是域名等if (host == NULL) {printf("无法解析服务端地址: %s\n" , getparameter[IP]);return 1;}CopyMemory(&server.sin_addr ,host->h_addr_list[0] ,host->h_length);}/*与服务器建立连接*/if (connect(sClient , (struct sockaddr*)&server ,sizeof(server)) == SOCKET_ERROR) {printf("connect() 失败: %d\n" , WSAGetLastError());return 1;}
memset(Buffer,0,sizeof(Buffer));sprintf(Buffer,"学号姓名:%s,正确%d道题,完成%d道题,用时%d秒",account,count,i,te-ts);printf("%s",Buffer);//向服务器发送消息ret = send(sClient , Buffer , strlen(Buffer) , 0);printf("已发送字符 %d bytes\n" , ret);//接收从服务器来的消息ret = recv(sClient , Buffer , BUFSIZE , 0);Buffer[ret] = '\0';printf("已接收字符 %d bytes:\n\t%s\n" , ret , Buffer);//用完了,关闭socket句柄(文件描述符)closesocket(sClient);WSACleanup();

11,窗口修改为学号和姓名
核心代码

	sprintf(s,"title 学号,姓名:%s",account);system(s);

13.网络程序服务端文件的创建与保存
核心代码

FILE*file;
fprintf(file,"%s\n",Buffer);
fclose(file);

四、项目未完成的功能

正在实现的功能有哪些(觉得能做出来的,技术层面已经没什么问题了,只是时间问题)
1,题库按难易比例输出

今后打算实现的功能哪些(觉得现阶段自己无法完成的功能)
客户端自动输入服务器IP地址

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

编号功能负责人姓名完成日期该功能的工作量占总工作量的比例
V1.01,倒数5s2,随机出题3,比较输入的答案与标准答案,输出不同语句4,输出正确数,答题数,正确率阮涛(5%),余勇(15%)11.1520%
V1.11.加入学号姓名的输入以及学号纠错功能2.加入答案公布的颜色评定3,加入120s限时功能4,加入成绩等级阮涛(10%),刘晓鹏 (5%)11.1615%
V1.21,加入对错的颜色余勇11.175%
V1.31,加入考生答案输入自动删除字符前空格回车换行以及字符中的空格阮涛11.1810%
V1.41,加入文件的输入与输出刘晓鹏(5%),蒋歆銮(5%)11.1910%
V1.51,修改主函数内一部分为自定义函数阮涛11.205%
V1.61,加入网络客户端功能阮涛11.215%
V2.01,加入随机不重复出题2,加入自动修改为学号姓名的窗口刘晓鹏(5%),阮涛(5%)11.2410%
服务器模块服务器自动保存文件刘晓鹏(5%),蒋歆銮(5%)11.2510%
其他参与代码的修改刘晓鹏(5%),蒋歆銮(5%)11.2510%
总计阮涛(40%),刘晓鹏(25%),余勇(20%),蒋歆銮(15%)100%

六、相关文档地址

七、每位成员的过程体会
组长:阮涛
这是我第一次当一个项目的组长,在分配任务时我觉得我还是差了一点经验。在这次的项目作业中我学到了如何去主动学习新的知识,我知道我们组的程序不会是最好的,但我能感觉到我们每一个人的努力,我希望接下来的大学生活里我能和大家一起去解决更多的难题。
组员1:刘晓鹏
学习C语言来的第一次大作业,需要用到许多未学甚至没见过的知识与方法,而这次任务的完成同时也说明的大学与高中学习方法的区别不仅要用已知解决未知,同时也需将未知转为已知,而后者的方法便是自学,“有问题上百度”就可以解决许多问题,虽是如此但要用到更简便的方法化难为易则需要更多的思考与经验的积累,此次学习收获了许多同时也巩固了许多知识,但不能满足,每一门行业都有卓越的人才,计算机更是如此,日后的学习中需要思考地更多,用到不同的方法,待到回头望向身后时
能看到一个个脚印.
组员2:余勇
这次课程项目的设计让我学到了很多新的东西,也意识到自身能力的不足,还有很多东西没有学会,并且也意识到团队合作的重要性,只有团结合作、同心协力才能把一个个难题克服,并圆满的完成任务。
组员3:蒋歆銮
这次的小组合作让我学习到了许多知识,其实我是一直在学习(基本是对友打的代码。。)。
不过正是一次一次的代码错误让我认识到了自己,使我愈发努力起来,队友之间的差距让我有了更强的斗志。这次的学习中我也认识到了团结的力量,团结起来的小组是强大的,我们也是坚持不懈的(3点还在快乐的学习,,)。其实,学习的过程还是蛮有味道到(v),希望以后更强大吧。

八、组长想说的话
自我批评篇
在分配任务时我觉得我还是差了一点经验,任务分配不均就是我的锅。有一些基础知识不是很牢固,学过的一些东西还要去查才能记得起来。
自夸篇
虽然编辑程序遇到了很多难题,但是我们通过百度等一些途径学习,一个一个地去解决了问题。还有一次,我、刘晓鹏、蒋歆銮一起码字通宵到凌晨3点,把程序功能全做出来的时候还是有成就感的。我有点喜欢做一些比较灵活的东西,觉得能做出来就很好玩。

这篇关于1901班第1组博文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848167

相关文章

Oracle数据库(函数(不包括自定函数,自定义函数会单独在后面博文中说明)、Oracle中select语法讲解)

引用、推荐博客: http://www.cnblogs.com/qingxinblog/p/4154228.html(函数练手敲代码博客推荐) http://blog.csdn.net/jian200801/article/details/7558292(自定义函数实例) http://www.cnblogs.com/vic_lu/archive/2010/08/28/1811097.ht

Hexo博文发布管理工具分享出来啦

从此刻起,小白也能搭建自己的博客 说些什么呢? 之前为朋友写的一个Hexo博客发布与管理工具,只需要点点鼠标即可实现对Hexo博文的管理,从此告别各种难记的cmd命令!!赠人玫瑰,手有余香。 实现功能 创建博文,修改名称,删除文章,复制,粘贴,剪切,本地部署调试,重新生成,远程部署。等功能。之后会根据需求进行更新。也欢迎提出宝贵意见。 如何使用 终于进入正题了: 首先第一

Linux系统移植博文导航

Linux系统移植专栏更新很久了,博主今天就把以前的博文整理一下,希望对感兴趣的朋友有所帮助,在此感谢CSDN这个平台给出了这个一个交流的机会,也感谢大家的支持。 Linux相关的网站 U-Boot Linux内核 busybox Linux系统移植 Linux系统移植-前言 第1章 环境搭建(Exynos4412+U-boot2013.1) 第1章 环境搭建(imx283)

OpenCV 开发笔记博文导航

自博主更新该专栏也很久了,博主今天就把以前的博文整理一下,希望对感兴趣的朋友有所帮助,在此感谢CSDN这个平台给出了这个一个交流的机会,也感谢大家的支持。 OpenCV相关的网站 OpenCV官网 OpenCV参考文档 OpenCV中文论坛 OpenCV源码-Github Learn OpenCV官网 OpenCV开发笔记 第一部分 环境搭建 【第一部分-环境搭建】Opencv环

【数据分享】1901-2023年1km分辨率逐月最高气温栅格数据(免费获取/全国/分省)

气温数据是我们最常用的气象指标之一,之前我们给大家分享过来源于国家青藏高原科学数据中心提供的1901-2023年1km分辨率逐月平均气温栅格数据(可查看之前的文章获悉详情)! 本次我们分享的同样是来自国家青藏高原科学数据中心的高精度气温栅格数据——1901-2023年1km分辨率的逐月最高气温栅格数据! 我们从官方网站下载的逐月最高气温数据的单位是0.1 ℃,数据格式为NETCDF,即.nc格

博文中贴代码-乱码测试-2

Java代码,未修改: <pre name="code" class="java">public class Ws_comparator implements Comparator<Wsnode> {public int compare(Wsnode ws1, Wsnode ws2) {// TODO Auto-generated method stubfloat fea1=ws1.get_ma

开源MES优秀博文整理

PyScada的相关资料 PyScada的相关资料 | 同欣数字化落地 (txodoo.cn) 树莓派设置开机启动指定打开应用 树莓派设置开机启动指定打开应用 | 同欣数字化落地 (txodoo.cn) 物联网IoT\IoE\边缘计算 软件平台 物联网IoT\IoE\边缘计算 软件平台 | 同欣数字化落地 (txodoo.cn) 如何应用MES系统实现SMT上料防错? 如何应用MES

实现Hexo新建博文时自带随机默认封面

文章目录 1. Hexo模版2. 准备封面和缩略图3. 新建博文脚本windowsLinux 4. 效果展示1. Hexo模版2. 准备封面和缩略图3. 新建博文脚本windowsLinux 4. 效果展示 前提是选择的主题在Front-matter中支持cover和thumbnail,主题之间对于这两个属性的定义可能并不用,如果不适用,只需要根据逻辑修改脚本即可。 1. Hex

【博客园整改期间如何查看博文】

以为整改我就不能看了? naive 有个东西叫“百度快照” 正常点进去是看不见博文的,因为正在整改 但我们点进百度快照,就能看见大部分博文了 为了ctrl+c+v而诞生的技巧,学废了吗?

IOS 开发之设置UIButton的title 此博文包含视频 (2013-04-08 01:46:34)转载▼ 分类: iphone开发基础

btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlStateNormal]; //设置按钮上的自体的大小 //[btn setFont: [UIFont systemFontSize: 14.0]];    //这种可以用来设置字体的大小,但是