/*极限俱乐部会员信息系统* *说明:《极限俱乐部会员信息系统》基本信息包括单位、姓名、性别、年龄、身高、体重 六个基本信息,可以根据实际情况有所增减* #include "stdio. h" /*控制台IO的头文件* #include"string /*字符串函数的头文件* #include "stdlib. h" /*exiO函数的头文件* #define max 100 定义最多可以输入的会员数* int Inter face( 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) /*按姓名排序 yoid Sort Height( struct staff*p, int n); 按身高排序(由高到低) void Sort Weight( 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, int n) /*信息删除* void Swap(struct staff* pl, struct staff*p2); /*会员信息互换* void SaveFile(struct staff*p, int n /*文件存盘* char password 8=7654321 设置系统管理员密码* struct staff char unit[ 601 char name[201 char sex(201 Int we 主函数 **亲幸本孝**本本*本本***幸****本幸******幸/ struct staff sta( Max] /*定义结构数组* FILE *fp; *结构数组,即可输入的最大会员数,最大值为声明中预定义的 /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数* int n=0 /整型变量* char pass[ 8 int flag=0 int w=3
/*极限俱乐部会员信息系统*/ /*说明:《极限俱乐部会员信息系统》基本信息包括单位、姓名、性别、年龄、身高、体重 六个基本信息,可以根据实际情况有所增减*/ #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]="7654321"; /*设置系统管理员密码*/ struct staff { char unit[60]; char name[20]; char sex[20]; int age; int height; int weight; }; /**********************************************************\ 主函数 \**********************************************************/ void main() { struct staff sta[Max]; /*定义结构数组*/ FILE *fp; /*结构数组,即可输入的最大会员数,最大值为声明中预定义的 Max*/ int s; /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数*/ int n=0; /*整型变量*/ char choice; char pass[8]; int flag=0; int w=3;
char menu[20}={"添加","显示""按姓名排序""按身高排序 按体重排序","检索”,"修改""删除”,"存盘""返回"} char openfile[ 101 /*********系统密码管理****事***幸* { printf("请输入管理员密码:n") if(lstrcmp(pass, password)) printf("PASSInInIn") flag } printf("密码错误,请重新输入mn") if(!flag) printf("你已连续三次输入错误,请确认后再使用本系统谢谢!n") exit(o) system("cls") /*用 system调用dos命令,清屏* /***事幸**幸*幸*幸*打开已有文件幸*幸*本春春春* printf(("n打开已有的文件saf3.txt"?(y)”) scanf("%s"openfile) if(strcmp(openfile, y)==NULL)) if(fp=fopen("d: STaff 3. txt", "I"))==NULL) printi("不能打开文件!n") exIl while(feof(fp)==0) fscanf(fp, "%s%S%S%d%d%d%d\n", stan]. unit, stan) name, sta(n). sex, &stan]. age
char menu[][20]={"添加","显示","按姓名排序","按身高排序", "按体重排序","检索","修改","删除","存盘","返回"}; char openfile[10]; /**********************系统密码管理********************/ do{ printf("请输入管理员密码:\n"); scanf("%s",pass); if(!strcmp(pass,password)) { printf("PASS\n\n\n"); flag = 1; break; } else { printf("密码错误,请重新输入:\n"); w--; } } while(w>0); if(!flag) { printf("你已连续三次输入错误,请确认后再使用本系统,谢谢!\n"); exit(0); } system("cls"); /*用 system 调用 dos 命令,清屏*/ /**********************打开已有文件********************/ printf ("\n 打开已有的文件\"staff_3.txt\"?(y/n)"); scanf("%s",openfile); if((strcmp(openfile,"y")==NULL)) { if((fp=fopen("d:\\staff_3.txt","r"))==NULL) { printf("不能打开文件!\n"); exit(0); } while (feof(fp)==0) { fscanf(fp,"%s%s%s%d%d%d%d\n",sta[n].unit,sta[n].name,sta[n].sex,&sta[n].age
&stan height, &sta n weight) fclose(fp); printi("请创建一个新文件"sta3twt"mn") system("cls"),/*用 system调用dos命令,清屏* /**本本幸*幸*幸***欢迎界面*幸*******奉* printf("wwwwwwwmmItlt' ttt~~~~~ printf( Ititltitlt ~~~n") printf("t欢迎进入会员医疗保健信息系统ln"), printf(%%‰%%‰%%%%‰%%%%‰%%%%%%%%%%%ttit%%%%%%%%%%% %%%%%%%%%%%%%%%%") printf("inIninIn") printf("单位:北京极限俱乐部n") printi("地址:北京市西城区西四n") printf("会员热线:010-668868 printf("Inininin") n") printi("本系统由“天地人和软件有限公司”开发n"), printf("地址:北京市海淀区学院路ln") printi("作者:天天n") printf( ==tt= n") printf("\nIn") printf("t请任意输入一个值并回车进入系统ln"); canf("%s", &choice) if(choice==n'lche exit(1) system("cls"); /用 system调用dos命令,清屏* sInterface(menu, 10); /*调用 Interface(函数* switch(s) 转向语句,选择以实现不同的功能* case 0: n=Add(n, sta); break case 1: Display(sta, 0, n-1); break; case 3: SortHeight(sta, n); break; case 4: Sort Weight(sta, n); break; case 5: Find (sta, n); break case 6: Modify(sta, n); break;
&sta[n].height,&sta[n].weight); n++; } fclose(fp); } else printf("请创建一个新文件\"staff_3.txt\".\n"); system("cls"); /*用 system 调用 dos 命令,清屏*/ /**********************欢迎界面********************/ printf("~~~~~~~~~~~~~\t\t\t\t\t~~~~~~~~~~~~~\n"); printf("~~~~~~~~~~~~~\t\t\t\t\t~~~~~~~~~~~~~\n"); printf("\t\t 欢迎进入会员医疗保健信息系统\n"); printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\t\t\t\t\t%%%%%%%%%%% %%%%%%%%%%%%%%%%\n"); printf("\n\n\n\n"); printf("单位:北京极限俱乐部\n"); printf("地址:北京市西城区西四\n"); printf("会员热线:010-66886688"); printf("\n\n\n\n"); printf("==============\t\t==============\n"); printf("本系统由“天地人和软件有限公司”开发\n"); printf("地址:北京市海淀区学院路\n"); printf("作者:天天\n"); printf("==============\t\t==============\n"); printf("\n\n"); printf("\t\t 请任意输入一个值并回车进入系统\n"); scanf("%s",&choice); if(choice=='n'||choice=='N') exit(1); system("cls"); /*用 system 调用 dos 命令,清屏*/ do { s=Interface(menu,10); /*调用 Interface()函数*/ switch (s) /*转向语句,选择以实现不同的功能*/ { case 0: n=Add(n,sta);break; case 1: Display(sta,0,n-1);break; case 2: SortName(sta,n);break; case 3: SortHeight(sta,n);break; case 4: SortWeight(sta,n);break; case 5: Find(sta,n);break; case 6: Modify(sta,n);break;
7: n=Delete(sta, n); break while(s>=0&&sn+1) rn(-1); /*****幸******幸本*家春*亲***本****本*本*幸****幸*客*春*** 增添信息 int Add(int start, struct staff"p) for(n=start; nunit, e")==0)break printi("姓名:") scanf("%s" (p+n)->name) printf("性别(Male/ Female)")
case 7: n=Delete(sta,n);break; case 8: SaveFile(sta,n); } } while(s>=0&&sn+1); return (i-1); } /**********************************************************\ 增添信息 \**********************************************************/ int Add(int start,struct staff *p) { int n; for (n=start;nunit); if (strcmp((p+n)->unit,"e")==0)break; printf("姓名:"); scanf("%s",(p+n)->name); printf("性别(Male/Female):");
scanf("%s", (p+n)->sex); printi("年龄 scanf("%d", &((p+n)->age)) printi("身高(cm)") scanf("%d", &((p+n)->height) printi("体重(kg):"); scanf("%d", &((p+n)->weight return n. 显示输入或者修改后的内容 void Display (struct staff*p, int start, int end) printf("n%10%10s%10s”,"单位","姓名"性别") /*显示标题* printf("%10s%10s%10s"年龄","身高”"体重") /显示数据信息* printf("nnA for(i=start; iunit, (p+1->name, (p+1)->sex) printf("%10d%10d%10d",(p+i)->age, (p+i)->height, (p+i)->weight) printf("\n"); 选择法按姓名排序(依据字典顺序) void SortName(struct staff*p, int n int i,j, k; for(i=0;iname, (p+j)->name)>0)k-j if(il=k)Swap(p+k, p+i) /交换会员姓名* printf("n完成姓名排序!n")
scanf("%s",(p+n)->sex); printf("年龄:"); scanf("%d",&((p+n)->age)); printf("身高(cm):"); scanf("%d",&((p+n)->height)); printf("体重(kg):"); scanf("%d",&((p+n)->weight)); } return n; } /**********************************************************\ 显示输入或者修改后的内容 \**********************************************************/ void Display(struct staff *p, int start, int end) { int i; printf("\n%10s%10s%10s","单位","姓名","性别"); /*显示标题*/ printf("%10s%10s%10s","年龄","身高","体重"); /*显示数据信息*/ printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); for(i=start;iunit,(p+i)->name,(p+i)->sex); printf("%10d%10d%10d",(p+i)->age,(p+i)->height,(p+i)->weight); printf("\n"); } } /**********************************************************\ 选择法按姓名排序(依据字典顺序) \**********************************************************/ void SortName(struct staff *p,int n) { int i,j,k; for (i=0;iname,(p+j)->name)>0)k=j; if(i!=k)Swap(p+k,p+i); /*交换会员姓名*/ } printf("\n 完成姓名排序!\n");
选择法按身高排序 void SortHeight( struct staff*p, int n) k for(i=0; iheightheight k-j f(il=k)Swap(p+k, p+1) /*交换会员身高* printf("Ⅶn完成身高排序!n"), /*****幸******幸本*家春*亲***本****本*本*幸****幸*客*春*** 选择法按体重排序 oid Sort Weight(struct staff"p, int n) int i,j, k; for(i=0,iweightweight)k= if(il =k)Swap(p+k, p+i); /交换会员姓名体重* printf("Ⅶn完成体重排序!n"), *率本客*家**亲**本率家*亲*本李*本***本*家*家料 按姓名检索 int Find(struct staff*p, int n) Int I: char str[201
} /**********************************************************\ 选择法按身高排序 \**********************************************************/ void SortHeight(struct staff *p,int n) { int i,j,k; for (i=0;iheightheight)k=j; if(i!=k)Swap(p+k,p+i); /*交换会员身高*/ } printf("\n 完成身高排序!\n"); } /**********************************************************\ 选择法按体重排序 \**********************************************************/ void SortWeight(struct staff *p,int n) { int i,j,k; for (i=0;iweightweight)k=j; if(i!=k)Swap(p+k,p+i); /*交换会员姓名体重*/ } printf("\n 完成体重排序!\n"); } /**********************************************************\ 按姓名检索 \**********************************************************/ int Find(struct staff *p,int n) { int i; char str[20];
printf("Ⅶn请输入会员姓名:") canf("%s",str) = Search(p, str, n) /*调用 Search)函数* printi("没有匹配信息,请重试%s!n",str) Display(p, 1, 1); getchar return l 修改信息 *孝**水**本**幸水本****李水幸本*幸*本*本**本**本亲****/ void Modify(struct staff*p, int n) Int I /*调用 Findo函数* /*若找到匹配信息,则修改* printf("请输入新信息:n"); printf("单位: scanf("%s" (p+1)->unit) printi("姓名:"); scanf("%s", (p+i)->name printf("性别:") scanf("%s" (p+i)->sex) printi("年龄:") scanf("%od", &((p+i)->age)) printi("身高(cm)") scanf("%d", &((p+i)->height)); print"体重(kg):"); scanf("%d", &((p+i)->weight)); printi("hn修改已完成!n") 删除信息 int Delete(struct staff"p, int n)
printf("\n 请输入会员姓名:"); scanf("%s",str); i=Search(p,str,n); /*调用 Search()函数*/ if(i==-1) printf("没有匹配信息,请重试 %s!\n",str); else Display(p,i,i); getchar(); return i; } /**********************************************************\ 修改信息 \**********************************************************/ void Modify(struct staff *p,int n) { int i; i=Find(p,n); /*调用 Find()函数*/ if(i>=0) /*若找到匹配信息,则修改*/ { printf("请输入新信息:\n"); printf("单位:"); scanf("%s",(p+i)->unit); printf("姓名:"); scanf("%s",(p+i)->name); printf("性别:"); scanf("%s",(p+i)->sex); printf("年龄:"); scanf("%d",&((p+i)->age)); printf("身高(cm):"); scanf("%d",&((p+i)->height)); printf("体重(kg):"); scanf("%d",&((p+i)->weight)); printf("\n 修改已完成!\n"); } } /**********************************************************\ 删除信息 \**********************************************************/ int Delete(struct staff *p,int n) {
n /*调用 Findo函数* if(>=0) 若找到匹配信息,则删除* p]=p[n-1; printi("n信息已删除!n") void Swap(struct staff*pl, struct staff"p2) /两个会员信息互换 pl= int Search(struct staff"p, char*t, int n for(=0;name, t)) 按姓名检索* return /*****幸******幸本*家春*亲***本****本*本*幸****幸*客*春*** 保存文件 void SaveFile(struct staff"p, int n) FILE*fpl if(fpl= fopen("d: Astaff3 new. txt";"w")=NULL/以文本方式生成并“写打开”文件考 printf("不能打开文件!Ⅷn"),/检测打开文件中出现的错误,并决定是否写入文件* for(i=0 iunit, (p+i)->name
int i; i=Find(p,n); /*调用 Find()函数*/ if(i>=0) /*若找到匹配信息,则删除*/ { p[i]=p[n-1]; n=n-1; printf("\n 信息已删除!\n"); } return n; } void Swap(struct staff *p1,struct staff *p2) /*两个会员信息互换*/ { struct staff temp; temp=*p1; *p1=*p2; *p2=temp; } int Search(struct staff *p,char *t,int n) { int i; for (i=0;iname,t)) /*按姓名检索*/ return i; return -1; } /**********************************************************\ 保存文件 \**********************************************************/ void SaveFile(struct staff *p,int n) { FILE *fp1; char i; if((fp1=fopen("d:\\staff_3_new.txt","w"))==NULL) /*以文本方式生成并“写打开”文件*/ { printf("不能打开文件!\n"); /*检测打开文件中出现的错误,并决定是否写入文件*/ exit(1); } for (i=0;iunit,(p+i)->name
(p+i)->sex, (p+i)->age, (p+i)->height, (p+i)->weight))==NULL) printf("文件写入出错!n"), /*写入文件,如果为空,则提示出错* printf("hn文件已保存!hn") fclose(fpl); /*关闭文件*
(p+i)->sex,(p+i)->age,(p+i)->height,(p+i)->weight))==NULL) printf("文件写入出错!\n"); /*写入文件,如果为空,则提示出错*/ } printf("\n 文件已保存!\n"); fclose(fp1); /*关闭文件*/ }