1、/=学员信息管理系统=/=编制:潘悦飞/=TXT文本文件实时存储数据,仍然运用结构体数组#include “stdio.h“#include “stdlib.h“#include “string.h“#include “conio.h“int scount; /定义数据库实际学生数量typedef struct /定义学生信息结构体类型 char no10; char name16; float score3; STU;STU stu10000; /声明结构体数组,以数据库中最大学生数量来定义/函数声明部分void readdb(); /初始化学员信息,把外存中学生数据读入到内存中void s
2、avedb(); /把内存中结构体数组中的学生数据保存到外存中void zhumulu(); /显示程序主目录void display(); /显示所有学员信息void input(); /录入新学员信息int find(char str80);/查找指定学号的学员,找到返回该学员在数组中的下标,没找到返回-1,str代表指定学号;在多个模块中用到该函数void query(); /根据学号查找,并显示学员信息void update(); /修改学员信息void del(); /删除学员信息void sort(); /对学员进行排序/函数定义void main()/程序进入“欢迎界面”prin
3、tf(“nnnnntt欢迎进入=学员信息管理系统=n“);/按任意键初始化学员信息printf(“nttt按任意键初始化学员信息.nn“);getch(); /从键盘收任一个字符即返回,该函数在conio.h中readdb();/初始化学员信息,把外存中学生数据读入到内存中printf(“ttt共有%d 条学员信息“,scount);/scount是实际学生数量printf(“nnttt按任意键进入主目录.“);getch(); /从键盘收任一个字符即返回,该函数在conio.h中zhumulu();/调出“程序主目录”void zhumulu() char select;/代表用户所选择的子
4、目录号dosystem(“cls“);printf(“=学员信息管理系统=nn“);printf(“以下是程序主目录,请选择功能nn“);printf(“1)显示n2)查找n3)录入n4)修改n5)删除n6)排序n0)退出nn“);printf(“键入功能前的数字后,按“Enter“键:“);select=getchar();switch(select)case 1: /显示所有学员信息system(“cls“);display(); printf(“nnttt按任意键进入主目录.“); getch(); /从键盘收任一个字符即返回,该函数在conio.h中break;case 2:query
5、(); break; /查询学员信息case 3:input(); break; /录入新学员信息case 4:update(); break; /修改学员信息case 5:del(); break; / 删除学员信息case 6:sort(); break; /对学员进行排序case 0: break; /退出default:printf(“请选择功能前的数字n“);break;while(select!=0);void readdb()/初始化学员信息,把外存中学生数据读入到内存中FILE *fp; if(fp=fopen(“studb.txt“,“r“)=NULL) printf(“文件
6、有错误!程序不能运行!n“); return; scount=0;/scount是数据库中实际学生数量,是全局变量while(!feof(fp) /no是学号,name是姓名,)core是成绩 /stu是学生结构体数组,全局变量fscanf(fp,“%s %s %f %f %f“,stuscount.no,stuscount.name,if(strcmp(stuscount.no,“)!=0) scount+;/去掉学号为空字符串fclose(fp);/把内存中结构体数组中的学生数据保存到外存中void savedb()int i; FILE *fp; if(fp=fopen(“studb.t
7、xt“,“w“)=NULL)/以写的方式打开文件,覆盖原文件 printf(“文件有错误!程序不能运行!n“); return; /stu是学生结构体数组,全局变量for(i=0;i0)t=stui;stui=stuj;stuj=t;display(); /显示所有学员信息printf(“nnttt按任意键进入排序子目录.“);getch(); /从键盘收任一个字符即返回,该函数在conio.h中savedb(); /把内存中结构体数组中的学生数据保存到外存中break;case 2:/按学号降序printf(“n按学号降序结果如下:n“);for (i=0;i=scount-2;i+)for
8、(j=i+1;j=scount-1;j+)if(strcmp(stui.no,stuj.no)0)t=stui;stui=stuj;stuj=t;display(); /显示所有学员信息printf(“nnttt按任意键进入排序子目录.“);getch(); /从键盘收任一个字符即返回,该函数在conio.h中savedb(); /把内存中结构体数组中的学生数据保存到外存中break;case 0: break; /退出default:printf(“请选择功能前的数字n“);break; while(select!=0);/显示完毕,提示用户返回主程序printf(“nnttt按任意键进入程序主目录.“);getch(); /从键盘收任一个字符即返回,该函数在conio.h中