在这一章的学习中,我了解到告终构体在C语言中的初步运用,利用结构体来将多个变量统一块儿来,有利于变量之间的传递交互,也学会了将结构体与指针结合起来,提升函数之间的传递效率。
除此以外,还学习了文件方面的知识,懂得了如何将数据存储到文件里面,和从文件中读取数据,由此来实现更多有趣的功能,如游戏系统的排名,帐户的登录和注册等等。数组
我将头文件的名字命名为counter.h,在这个头文件里,我定义了两个结构体类型缓存
Details :该结构体用于最后排名的信息存储,其中包括用户的昵称,正确题目数量,选择的难度等级,正确率,以及做答的日期。函数
User :该结构体用于登录系统的验证,其中包括用户的昵称,以及密码。工具
文件功能:学习
1.调用其余文件的函数,实现目标功能。
2.定义变量,并经过指针的形式传送到各个函数中去,进行计算。大数据
思路:利用while循环不断重复表达式的制造与验证函数,达到重复作题的目的,再在中间插入一些功能性函数,丰富体验优化
截图:3d
文件功能:指针
1.对注册用户登记并写入user.txt文件
2.对登录用户验证blog
login函数思路:
1.首先对文件进行检测,若是user.txt文件不存在,就引导用户注册,存在就以只读打开。
2.读入用户输入的用户名以及密码,对输入长度的限制,本来想使用fgets来限制长度,后来发现当长度达不到规定长度时,会把回车也读进去,影响到后面排名的展现,因此干脆本身写了一段代码来使用。
3.再从文件中逐个读取用户数据与先前用户输入的数据进行比较,判断是否正确,是就放行。
Register函数思路:
1.该函数比较简单,采用同login同样的输入方式,将读取的数据追加在user.txt文件的末尾,直接以该用户登录。
2.在用户输入完昵称后,将在用户文件中进行查找,看是否用户名已存在。
menu函数思路:
该函数主要是对前两个函数的整合,并调用Messagebox函数对用户的选择进行判断,这样作有一个好处就是规避了采用输入菜单时的不规范输入。
对函数的返回值判断就能够知道用户的选择。
截图:
文件功能:
1.依照等级创做表达式,传入IsExp函数判断
2.判断表达式是否正确,并去除前导零
3.开始游戏,先计算结果并记录时间,在用户输入完毕后判断答案是否正确,是否超时。
ComputeExp函数思路:
先将数字和字符所有提取出来,而后依据运算符的优先级分状况讨论,结果存储在number[0]并返回
GameStart函数思路:
1.调用函数计算结果,在用户输入先后进行对比和判决。
2.将正确与否的结果存储到right和total变量当中。
3.在输入方面插入一些代码优化用户体验
IsExp函数思路:
1.将全部数和运算符提取出来,对除法的状况进行判断,看有没有除以0或者除不尽的状况,有的话对除数进行重构。
2.将修改完的数据存储到表示中。
截图:
文件功能:
将用户最后的成绩与ranking.txt文件中的历史成绩进行排名,并将前10输出到控制台,而后把这些结果存储到ranking.txt文件中
rank函数思路:
1.先将ranking.txt的数据读取出来存储到一个结构体数组里面。
2.把用户成绩与历史成绩对比插入并输出到控制台。
3.把数据存储到ranking.txt文件
截图:
1.在读取昵称的时候,fgets会连同回车一并读取咋整?
动手写一个读取,只读六个字符,末尾补 \0 ,遇到回车就结束,将回车换为 \0 ,而且清除缓存区。
2.在将日期转换为字符串后,当下一个名次没有人时,会把这一行的回车当作上一行的字符输入到文件中,致使在不断的读取输入后,会出现排版错乱?
在读取数据时挨个读取,若是遇到空数据就直接跳出循环,再也不从文件里读取数据。
3.获取系统日期时老是少了八个小时,这咋整?
经百度查询,须要矫正时区,可是个人方法比较简单粗暴,在时间变量上直接加上86060,这也只是缓兵之计,之后仍是应该用矫正时区的函数来矫正。
在从此的学习中,百度很重要,不论是遇到问题,仍是本身想拓展功能,均可以先求助百度,在这个互联网高速发展的时代,尤为是做为计算机学子的咱们,更应该运用好百度这个大数据搜索工具,来获取咱们须要的知识,不论是CSDN仍是博客园,都有大量资料。平时在vs上面出现错误提示时,都会有一段错误代码,像这种东西就是让咱们在出现问题又不知道如何解决时,能有地方能够找。