c博客06-2019-结构体&文件

1.本章学习总结(2分)

1.1 学习内容总结

  • 结构体的定义
struct  结构名
{
    变量类型 变量名;
    变量类型 变量名;
    ...
};
  • 结构体成员赋值
结构名.变量名=赋值内容;
or
结构体指针->变量名=赋值内容;
  • 结构体数组排序做法
void sort(struct stu* p, int n)
{
    int i, j;
    struct stu temp;
    for(i=0;i

结构体数组排序与普通数组排序类似,只是将判断条件换成了结构体数组中的某个变量

  • 结构体指针怎么用

定义

struct student
{
    char name[10];
    int score;
};
struct student*p;
or
struct student
{
    char name[10];
    int score;
}*p;

调用

整体调用:
stu1=*p;

用指针调用其中一个变量:
p->score=100;
  • 共用体、枚举类型做法

共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。

union Data
{
   int i;
   float f;
   char  str[20];
} data;

枚举类型默认从0开始逐个给枚举值赋值,如果某个枚举值后面有等号和常量表达式,则这个常量表达式的值就赋给这个枚举值,往后的枚举值往后逐个加1。

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
  • 文件读写,文件中数据读进结构体数组

文件读写:

fp=fopen("abc.txt"."r+");

文件中数据读进结构体数组:

while(!feof(fp))  
{
    fscanf(fp, "%d,%s,%d", &stu[i].num, &stu[i].name, &stu[i]. score);
}

1.2 本章学习体会

通过本周的学习,我们学习了结构体与文件的使用,已经有了初步利用代码对文本文件进行读写的能力,现在的代码已经由之前只有一个主函数文件到现在的多文件编程,这要求我们能够熟练地运用函数封装将代码进行分块,不然代码的可读性就会一塌糊涂。

这两周代码量:554

2.综合作业--“我爱成语”

2.1.文件介绍

1.头文件介绍

  • idiom.h
结构体或函数声明 主要功能
结构体1:struct idioms 用于存储成语及其解释。
结构体2:struct user 用于存储用户的用户名以及密码。
函数声明1:void GetUsers(struct user* users, FILE* loginfp) 用于将文件user.txt中的用户名以及密码存储到users数组中。
函数声明2:int Login(struct user* users) 输出登陆界面,并进行登陆验证,如果输入次数超过八次,则自动退出
函数声明3:int CheckPassword(charid,charpassWord, struct user* users) 检查用户名与密码是否与文件中的匹配
函数声明4:void GetMenu() 输出菜单
函数声明5:void Getchoice(struct idioms* exp, FILE* fp) 读取选择,接入对应的函数口
函数声明6:int GetIdiom(struct idioms* exp, FILE* fp) 读取文件中的成语,存储到idioms数组里
函数声明7:int IdiomGame(struct idioms* exp,int idiomNum) 开始成语游戏
函数声明8:void Scoreboard(int count, int right) 实时计分板
函数声明9:int AddIdiom(FILE* fp) 实现在程序中手动添加成语的功能
函数声明10:void SeekIdiom(struct idioms* exp, FILE* fp) 查找成语

c博客06-2019-结构体&文件_第1张图片

2.函数实现文件介绍。

文件1:IdiomMain.cpp

c博客06-2019-结构体&文件_第2张图片

文件2:Login.cpp

  • 函数声明1:void GetUsers(struct user* users, FILE* loginfp)

c博客06-2019-结构体&文件_第3张图片

  • 函数声明2:int Login(struct user* users)

c博客06-2019-结构体&文件_第4张图片
c博客06-2019-结构体&文件_第5张图片

  • 函数声明3:int CheckPassword(charid,charpassWord, struct user* users)

c博客06-2019-结构体&文件_第6张图片

文件3:idiom.cpp

  • 函数声明1:void GetMenu(struct idioms* exp, FILE* fp)

c博客06-2019-结构体&文件_第7张图片

  • 函数声明2:void Getchoice(struct idioms* exp, FILE* fp)

c博客06-2019-结构体&文件_第8张图片

  • 函数声明3:int GetIdiom(struct idioms* exp, FILE* fp)

c博客06-2019-结构体&文件_第9张图片

  • 函数声明4:int AddIdiom(FILE* fp)

c博客06-2019-结构体&文件_第10张图片

  • 函数声明5:void SeekIdiom(struct idioms* exp, FILE* fp)

c博客06-2019-结构体&文件_第11张图片

文件4:Game.cpp

  • 函数声明1:int IdiomGame(struct idioms* exp, int idiomNum)

c博客06-2019-结构体&文件_第12张图片
c博客06-2019-结构体&文件_第13张图片

  • 函数声明2:void Scoreboard(int count, int right)

c博客06-2019-结构体&文件_第14张图片

2.2.运行结果

1.登录界面

登陆界面:

c博客06-2019-结构体&文件_第15张图片

输入错误:

c博客06-2019-结构体&文件_第16张图片

输入正确:

c博客06-2019-结构体&文件_第17张图片
c博客06-2019-结构体&文件_第18张图片

错误次数过多:
c博客06-2019-结构体&文件_第19张图片
c博客06-2019-结构体&文件_第20张图片

延时3秒后退出

2.游戏界面

导入成语:
c博客06-2019-结构体&文件_第21张图片
c博客06-2019-结构体&文件_第22张图片
(如果不导入就开始)
c博客06-2019-结构体&文件_第23张图片

开始游戏:
c博客06-2019-结构体&文件_第24张图片
c博客06-2019-结构体&文件_第25张图片
c博客06-2019-结构体&文件_第26张图片
c博客06-2019-结构体&文件_第27张图片
c博客06-2019-结构体&文件_第28张图片
c博客06-2019-结构体&文件_第29张图片

添加成语:
c博客06-2019-结构体&文件_第30张图片
c博客06-2019-结构体&文件_第31张图片
c博客06-2019-结构体&文件_第32张图片
c博客06-2019-结构体&文件_第33张图片

查找成语;
c博客06-2019-结构体&文件_第34张图片

退出系统:
c博客06-2019-结构体&文件_第35张图片

2.3大作业总结

遇到的问题 解决方法
将文件中的成语存储到结构数组中时,总是在中间出错停止 检查发现是定义存储成语解释的字符数组时给的空间太小了,于是将数组给定义足够的空间
有时候发现文件里的数据根本没有被存储进来 通过单步调试,找到是判断条件出了问题

写得有点赶。。。忘记加注释了,也没有对函数功能进行介绍,望老师与助教不要生气

你可能感兴趣的:(c博客06-2019-结构体&文件)