C语言博客做业06——结构体&文件

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烦得没思路的时候确实去借鉴了其余同窗的代码,然并卵。我以为个人用法并无错,但是程序运行出来就是错的,我也很绝望。不过仍是得好好研究文件得相关知识点,毕竟还有课设也要用到文件。加油!!
相关文章
相关标签/搜索