第11章实例演示 11.1“极限俱乐部会员信息系统”程序(三) 112“限俱乐部会员信息系统”程序(四) 11.3“教学成绩管理系统”程序
第11章实例演示 11.1 “极限俱乐部会员信息系统”程序(三) 11.2 “极限俱乐部会员信息系统”程序(四) 11.3 “教学成绩管理系统”程序
令我们已经学习了C语言的数组、函数、指针、结构、文件操 作等知识。本章的主要目的就是将所有的知识点通过完善 “极限俱乐部会员信息系统”的方式串连起来,使读者真正 体会到C语言的作用以及领略到它的独特魅力 111极限俱乐部会员信息系统”程序(三) “极限俱乐部会员信息系统”作为一个完整的信息管理系统 其程序(一)和程序(二)显然不够完善,特别是其不能存 储数据,使得每一次操作后,数据全部丢失,无法应用到实 际中。而且,当处理大量的数据时,又要一个个的逐次重新 输入,大大降低效率。这种缺陷必须得以弥补,这个信息管 理系统才能具有实用价值 结合本例,我们再加深文件操作的印象
❖ 我们已经学习了C语言的数组、函数、指针、结构、文件操 作等知识。本章的主要目的就是将所有的知识点通过完善 “极限俱乐部会员信息系统”的方式串连起来,使读者真正 体会到C语言的作用以及领略到它的独特魅力。 ❖ 11.1“极限俱乐部会员信息系统”程序(三) ❖ “极限俱乐部会员信息系统”作为一个完整的信息管理系统, 其程序(一)和程序(二)显然不够完善,特别是其不能存 储数据,使得每一次操作后,数据全部丢失,无法应用到实 际中。而且,当处理大量的数据时,又要一个个的逐次重新 输入,大大降低效率。这种缺陷必须得以弥补,这个信息管 理系统才能具有实用价值。 ❖ 结合本例,我们再加深文件操作的印象
11.1“极限俱乐部会员信息系统”程序(三) (一)文件的打开和关闭 1. fopen0函数 冷 fopen函数用于打开文件,其调用格式为: FILE fopen(char *filename, *type F儿LE为文件指针。实际上FLE是一个新的数据类型即我们学 习结构这种类型时遇到的结构指针。为便于理解,这里只要 将FLE看作一个包括了文件管理有关信息的数据结构,即在 打开文件时必须先定义一个文件指针 冷本例主函数中定义“FLE*p;",fp即 file pointer(文件指针) 之意。 冷用“fp= fopen("d: lsta. dat","r")”表示,以只读方式打开D盘根 目录下的一个文件 sta.dat 令这里有一点要注意:如果将路径写为d: sta. dat是不正确的
(一)文件的打开和关闭 1.fopen()函数 ❖ fopen函数用于打开文件,其调用格式为: ❖ FILE *fopen(char *filename, *type); ❖ FILE为文件指针。实际上FILE是一个新的数据类型即我们学 习结构这种类型时遇到的结构指针。为便于理解,这里只要 将FILE看作一个包括了文件管理有关信息的数据结构, 即在 打开文件时必须先定义一个文件指针。 ❖ 本例主函数中定义“FILE *fp;”,fp即file pointer(文件指针) 之意。 ❖ 用“fp=fopen("d:\\sta.dat","r")”表示,以只读方式打开D盘根 目录下的一个文件sta.dat。 ❖ 这里有一点要注意:如果将路径写为d:\sta.dat是不正确的。 11.1“极限俱乐部会员信息系统”程序(三)
2. fclose函数 2. fclose函数 冷 fclose函数用来关闭一个由 fopen函数打开的文件, 其调用格式为 int fclose(FILE * stream 令该函数返回一个整型数。当文件关闭成功时,返回0 否则返回一个非零值。可以根据函数的返回值判断文件 是否关闭成功
2.fclose()函数 2.fclose()函数 ❖ fclose()函数用来关闭一个由fopen()函数打开的文件, 其调用格式为: ❖ int fclose(FILE *stream); ❖ 该函数返回一个整型数。当文件关闭成功时, 返回0, 否则返回一个非零值。可以根据函数的返回值判断文件 是否关闭成功
文件的写入与输出 1. fscanf(函数 冷 fscanft0为文件的顺序读操作函数,其调用格式如下: int fscanf(FILE stream, char * format, ) 冷 fscanfi0函数的用法与scan0函数相似,只是它是从文件 中读到信息。 fscanf0函数的返回值为EOF(即-1),表明 读错误,否则读数据成功 本例中的 fscanf()函数调用形式为: fscanf(fp, %s%S%s%d%d%d%dn", stan]. unit, stal n]. name, sta[n]. sex, &sta[n]. age, &stan]. height, &sta[] weight) 冷要特别注意的是,当 fscanf(0函数读到空白符时便自动 结束,在使用时要特别注意
(二)文件的写入与输出 1.fscanf()函数 ❖ fscanf()为文件的顺序读操作函数, 其调用格式如下: ❖ int fscanf(FILE *stream, char *format, ); ❖ fscanf()函数的用法与scanf()函数相似, 只是它是从文件 中读到信息。fscanf()函数的返回值为EOF(即-1), 表明 读错误, 否则读数据成功。 ❖ 本例中的fscanf()函数调用形式为: ❖ fscanf(fp,"%s%s%s%d%d%d%d\n",sta[n].unit,sta[ n].name,sta[n].sex,&sta[n].age,&sta[n].height,&sta[n]. weight); ❖ 要特别注意的是,当fscanf()函数读到空白符时便自动 结束, 在使用时要特别注意
2. fprintf()函数 冷函数 fprintf.文件的顺序写操作函数,其调用格式如下: int fprintf(FILE stream, char format, ) fprint函数的返回值为实际写入文件中的字节数。如 果写错误,则返回一个负数。 fscanf()、 fprintf(()函数 中格式化的规定与 scanf()、 printf()函数相同,所不 同的只是 scanf()、 fprintf函数是分别向文件中读取 和写入数据,而 scanf()、 printf(则是分别从键盘中 输入和向屏幕输出数据
2.fprintf()函数 ❖ 函数fprintf()为文件的顺序写操作函数, 其调用格式如下: ❖ int fprintf(FILE *stream, char *format, ); ❖ fprintf() 函数的返回值为实际写入文件中的字节数。如 果写错误, 则返回一个负数。fscanf()、fprintf( ) 函数 中格式化的规定与scanf()、printf( ) 函数相同, 所不 同的只是fscanf()、fprintf()函数是分别向文件中读取 和写入数据,而scanf()、printf()则是分别从键盘中 输入和向屏幕输出数据
3.feof)函数 冷feof)函数函数的调用格式为: int feof(FILE stream 冷feof)函数检测文件位置指示器是否到达了文件结尾,若 是则返回一个非0值,否则返回0
3.feof()函数 ❖ feof()函数函数的调用格式为: ❖ int feof(FILE *stream); ❖ feof()函数检测文件位置指示器是否到达了文件结尾, 若 是则返回一个非0值, 否则返回0
(三)本程序较以前两个程序增加的功能: 令系统的控制台包括如下十个选项: 1、添加一 添加职工信息; 2、显示 显示所有记录及操作结果显示; 3、按姓名排序 按字典顺序排序姓名; 4、按身高排序 按职工的身高由高到矮排序 5、按体重排序 按职工的体重由重到轻排序; 6、检索 按职工姓名检索全部信息; 7、修改 按提示逐步修改职工信息; 8、删除 删除所选职工的所有信息; 9、存盘 一将操作的最后结果存盘; 10、返回一 返回并退出信息管理系统
(三)本程序较以前两个程序增加的功能: ❖ 系统的控制台包括如下十个选项: 1、添加―――――――――――――添加职工信息; 2、显示――――――显示所有记录及操作结果显示; 3、按姓名排序―――――――按字典顺序排序姓名; 4、按身高排序―――――按职工的身高由高到矮排序; 5、按体重排序――――按职工的体重由重到轻排序; 6、检索――――――――按职工姓名检索全部信息; 7、修改――――――――按提示逐步修改职工信息; 8、删除――――――――删除所选职工的所有信息; 9、存盘―――――――――将操作的最后结果存盘; 10、返回――――――――返回并退出信息管理系统
(四)源程序代码如下: nclude" stdio. h"/控制台WO的头文件* Include"string. h /*字符串函数的头文件* include stdlib. h /"ext函数的头文件* define Max 100 /定义最多可以输入的职工 数*/ int Interface(char(*×)[20J,intn);/操作界面*/ ntAd( nt start, struct staff*tp);/增加职工数* void Display( struct staff * p, int start, int end);/显示已存 在的数据* void sortname( struct staff'po,intn);/按姓名排序 void SortHeighto( struct staff *p,intn);/*按身高排序(由高 到低) void ShorTweight( (struct staff p,intn);/按体重排序(由重 到轻)
(四)源程序代码如下: #include "stdio.h" /*控制台I/O的头文件*/ #include "string.h" /*字符串函数的头文件*/ #include "stdlib.h" /*exit()函数的头文件*/ #define Max 100 /*定义最多可以输入的职工 数*/ int Interface(char (*x)[20],int n); /*操作界面*/ int Add(int start, struct staff *p); /*增加职工数*/ void Display(struct staff *p, int start, int end); /*显示已存 在的数据*/ void SortName(struct staff *p, int n); /*按姓名排序*/ void SortHeight(struct staff *p, int n); /*按身高排序(由高 到低)*/ void SortWeight(struct staff *p, int n); /*按体重排序(由重 到轻)
int Search(struct staff*p, char *t, int n) /信 息检索* int Find(struct staff*p, int n 信息查找 void Modify (struct staff *p, int n /信息修 改* int Delete(struct staff *p, int n) 信息删 除* void Swap(struct staff p1, struct staff *p2) 职 工信息互换* void SaveFile(struct staff *p, int n /文件存 盘* char password[8=123321 /设置系统 管理员密码*
int Search (struct staff *p, char *t, int n); /*信 息检索*/ int Find(struct staff *p, int n); /*信息查找 */ void Modify(struct staff *p, int n); /*信息修 改*/ int Delete(struct staff *p, int n); /*信息删 除*/ void Swap(struct staff *p1, struct staff *p2); /*职 工信息互换*/ void SaveFile(struct staff *p,int n); /*文件存 盘*/ char password[8]="123321"; /*设置系统 管理员密码*/