1.本章学习总结
1.1思维导图
1.2本章学习体会
这两周,我们学习了结构体和文件,相对于文件来说,我认为结构体是简单的,可能也是因为学习文件的时候老师上课的进度快,再加上这几周都没了课前预习的题集,也没有课后在进行复习,也有一种得过且过的态度在那里,对文件就不是很了解。课前老师有让我们看视频预习,当时视频是看了一半,有一半没看,所以只对看了视频的那部分熟悉一点。
2.大作业
本次作业要求对小学四则运算程序功能扩展。 扩展功能:小学生用户登录进系统做题。结束答题后,能把该学生答题情况写入文件,并实现排名。
2.1文件介绍
1.头文件
- user.h
头文件中包含了两个结构体变量:USER 和 DETAIL。还有主函数中调用的所有函数声明。
USER:包含了用户名和用户密码,主要用于用户登录和注册时的判断与写入文件。
DETAIL:包含了用户名、正确题数、所选等级和正确率,用来储存用户数据,读取和写入ranking.txt文件数据。 - 代码截图
2.其他文件介绍
文件1:main.c
- 文件功能
调用各个函数,将各个函数进行关联,实现函数功能。
- 设计思路
开头和结尾分别调用两个函数Register(登陆、注册用户)和 Ranking(实现排名) 。中间则是原来指针版的程序稍作改进。运行一次实现一个用户刷题。
- 截图
文件2:functions.c
- 介绍文件功能
1.登陆后,进入游戏界面,选择游戏难度;
2.创建表达式的字符数组,判断表达式是否合法后,输出表达式;
3.计算user.txt 和 ranking.txt 两个文件中的用户数量。
- 设计思路
- CreateExp函数思路
根据用户输入的等级进行表达式的随机生成,并存入数组exp中,返回指针exp。
- IsExp函数思路
根据判断除数是否为0及除法是否能整除这两个条件,判断算术表达式是否合法
- ComputeExp函数思路
利用课堂派上做过的一道题的思路,进行计算随机产生的字符表达式,并返回正确结果,用于判断用户输入的答案是否正确。
- getCount函数思路
借助了书本上的相关例题,该函数主要用于计算文件user.txt 和 ranking.txt 这两个文件中的用户数量
- 截图
文件3:login.c
- 介绍文件功能
1.用户的登陆与注册
2.用户的答题情况及成绩
- 设计思路
- Register函数
当初写这个函数代码的时候,想着user.txt这个文件又要可读,又要可写,还不能消除用户信息,然后想着直接在程序中创建文件,就直接用了 a+ 的读写方式打开创建文件。然后头尾不可少的打开和关闭文件,中间则是空文件时直接注册用户,不是空文件时,可选择是登陆已有账号,或者重新注册新的账号。
- Ranking函数思路
该函数主要用于用户游戏存档,并将存档内的所有用户进行排名。
- 截图
2.2运行结果
1.登陆界面
2.排名结果
2.3改进大作业总结
1.碰到的问题及解决办法
这次的大作业其实遇到了很多的问题,解决了一小部分,但依然还有一部分的问题没有解决
- 写完所有代码,第一次进行运行的时候非常的完美,什么问题都没有出现,用户信息很好的保存在了两个文件中,排名框也有显示。但是当我再次运行的时候,因为文件不是空文件了,就执行我所写的下一段代码,发现用户登陆无法登陆已有用户,注册了的用户无法再写入文档。后来调试的时候发现,我定义用来计算用户数量的全局变量Count在程序结束后就消失了并不会保存。于是我就借用书本上的方法,用文件大小除以结构体大小的方法求得了用户的数量(也就是functions,c文件中的getCount函数)然后发现我的文件读取出了点小错误,改正后这个函数就又可以正常运行了。(后来为什么注册信息可以写入文档我也不知道)。
- 正当我为消灭掉一个bug而感到开心的时候,Register函数又出了毛病,他只能判断出文件中的第一个用户数据,若输入一个文件中已有的用户,但该用户不在第一个,则会判断不出来。然而这个bug我试了无数种办法,都没有解决。然后这时候,注册的用户突然又不能写入文档。
- 接着就是Ranking函数他每次只有一个用户信息的输出,在我的大改特改之下,他可以读取文件,可以输出表格,写入文档的数据也是对的,但是只有表格的第一行是正确的。其余的都出错了(如下图)几番改动无果,然后我只好把代码改回原来那样(虽然只有当前用户输出,但至少是对的)
2.小结
- 其实吧,我觉得总体上,我的大作业算是没完成的,错误、bug一堆堆。
- 关于游戏上的代码并没有多大的改动,只是稍作调整,使其能够更好的与文件相关联。
- 做完这充满错误的大作业,我对文件还是不够了解。有一种道理我都懂,用法也能看懂,但是用起来都是错的无力感。被bug烦得没思路的时候确实去借鉴了其他同学的代码,然并卵。我觉得我的用法并没有错,可是程序运行出来就是错的,我也很绝望。不过还是得好好研究文件得相关知识点,毕竟还有课设也要用到文件。加油!!