zoukankan      html  css  js  c++  java
  • 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烦得没思路的时候确实去借鉴了其他同学的代码,然并卵。我觉得我的用法并没有错,可是程序运行出来就是错的,我也很绝望。不过还是得好好研究文件得相关知识点,毕竟还有课设也要用到文件。加油!!
  • 相关阅读:
    组合数据类型练习
    Python基础综合练习
    编译原理
    词法分析
    大数据概述
    C语言文法分析 <源函数> → <外部声明> | <源程序> <外部声明> <外部声明> → <函数定义> | <定义> <函数定义> → <类型标识符> <声明部分语句> <标识符类型> → <无类型> | <字符> | <整型> | <浮点型> <声明> <指针直接声明> | <直接
    熟悉常用的Linux操作
    附加进程调试
    关于SQL语句中的nolock
    用SVN完成分支的合并
  • 原文地址:https://www.cnblogs.com/Lay-549/p/10134834.html
Copyright © 2011-2022 走看看