还剩36页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
电子信息工程系二〇一二至二〇一三学年秋期(11级机械四班)课程实验报告成都电子科大成都学院11机械四班罗刚2012年12月25日实验课程C语言程序设计基础实验项目工会成员信息管理系统指导教师杜娥学生姓名:罗刚学生学号1140840421班级机械设计制造及其自动化2011级4班实验时间2012年12月11日-12月28日实验成绩老师评阅目录TOC\o1-3\h\z\u一.课程设计的题目与要求
41.题目
42.实验目的
43.遇到的问题
44.功能要求4二.课程设计题目功能
51.数据结构説明
52.实验思路
53.输出数据7三.课程设计总结8四.附录9一.课程设计的题目与要求
1.题目工会成员信息管理系统
2.实验目的1加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构2学会设计数据结构其中包括对结构数组、数据文件等知识的运用3提高程序开发功能,能运用合理的控制流程编写清晰高效的程序4训练C程序调试能力,能将一个中小型各级组织系统联调通过5开发一个中小型系统,掌握系统研发全过程6培养分析问题、解决实际问题的能力
3.遇到的问题自己定义函数与主函数之间的调用不当问题例如voidsearch,voidsearch_num,voidsearch_xueli等数据的调用intload功能要求A基本要求1试设计一个工会成员信息管理系统,使之能提供以下功能2查询功能至少一种查询方式——算法按婚否查询按子女个数查询等B信息描述工会成员信息包括职工号、姓名、性别、出生年月、婚否、子女个数等(职工号不重复)课程设计题目功能
1.数据结构説明用到的数据int整型、char字符型;FILE*fp指针;函数voidsearch,voidsearch_num,voidsearch_xuelimenu、getchar、switch、while、exit
0、main、save;dowhile循环;if选择结构;while循环;switch选择结构;scanf输入;printf输出;实验思路structemployee{}/*定义一个结构体*/voidmenu{}/*菜单函数*/voidsearch{}/*查询主函数*/voidsearch_num{}/*按工号查询*/
⑤voidsearch_xueli{}/*按是否婚配查询*/根据以上几个部分来对工会成员信息管理系统中成员信息进行查询部分的编译
3.
(1)按工号查询
(2)按是否婚配查询三.课程设计总结本次程序设计综合应用实验让我懂得了很多函数的妙用,特别是几个函数之间的调用,在我设计的这个程序真是用处很大啊,主函数可用菜单函数,然后菜单函数再去调用查询函数,最后查询函数又去调用二个分支查询函数,这也许就是C语言代码的魅力吧,它的妙用就是这么巧妙,以至于你不认真去对待它就不能看出它的真面目,呵呵,总之这次程序设计综合应用实验让我收获很大,同时也改变了我对C语言的看法程序设计综合应用实验附录源程序:全部代码/*****************头文件以及宏定义**************/#includestdio.h#includestdlib.h#includewindows.h#includestring.h#defineN100/*****************定义一个结构体**************/structemployee{intnum;charname
[20];charsex;intage;charxueli
[30];intwage;charaddr
[30];chartel
[20];}em
[100];/*******************定义各个函数****************/voidmenu;/*菜单函数*/voidinput;/*录入函数*/voidsaveint;/*保存文件函数*/voiddisplay;/*浏览函数*/voiddel;/*删除函数*/voidsearch;/*查询主函数*/voidsearch_num;/*按工号查询*/voidsearch_xueli;/*按是否婚配查询*/voidmodify;/*修改函数*//*****************主函数*****************/voidmain{menu;intnflag;chara;do{printf请选择你需要的服务:\n;scanf%dn;ifn=1n=6{flag=1;break;}else{flag=0;printf对不起,您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switchn{case1:printf输入工会成员信息\n;printf\n;input;break;case2:printf浏览工会成员信息\n;printf\n;display;break;case3:printf按工会成员号查询工会成员信息\n;printf\n;search;break;case4:printf删除工会成员信息\n;printf\n;del;break;case5:printf修改工会成员信息\n;printf\n;modify;break;case6:printf谢谢您使用本程序,欢迎再次为您服务\n;exit0;break;default:break;}getchar;printf\n;printf继续按y,退出按n:\n;scanf%ca;ifa==y{flag=1;systemcls;/*清屏*/main;/*调用菜单函数*/printf请再次选择你需要的服务:\n;scanf%dn;printf\n;}elseprintf谢谢您使用本程序,欢迎再次为您服务\n;exit0;}}/*******************菜单函数******************/voidmenu{systemcolorf0;/*屏幕颜色设计*/systemTITLE欢迎进入工会成员信息管理系统;/*屏幕标题设定*/printf\n\n;printfЖЖЖЖ本系统能为您提供以下服务ЖЖЖЖ\n\n;printf
1.录入工会成员信息\n;printf
2.浏览工会成员信息\n;printf
3.查询工会成员信息\n;printf
4.删除工会成员信息\n;printf
5.修改工会成员信息\n;printf
6.退出\n;printf\n;printf\n;}/****************录入函数****************/voidinput{intim;printf请输入需要创建信息的工会成员人数1--100:\n;scanf%dm;fori=0;im;i++{printf请输入工会成员号;scanf%dem[i].num;printf请输入姓名:;scanf%sem[i].name;getchar;printf请输入性别G为女,B为男:;scanf%cem[i].sex;printf请输入出生年月:;scanf%dem[i].age;printf请输入是否婚配:;scanf%sem[i].xueli;printf请输入子女个数:;scanf%dem[i].wage;printf请输入住址:;scanf%sem[i].addr;printf请输入联系电话:;scanf%sem[i].tel;printf\n;}printf\n创建完毕!\n;savem;/*跳入保存函数*/}/******************保存文件函数****************/voidsaveintm{inti;FILE*fp;iffp=fopenemployee_listwb==NULL{printfcannotopenfile\n;exit0;}fori=0;im;i++/*将内存中工会成员的信息输出到磁盘文件中去*/iffwriteem[i]sizeofstructemployee1fp!=1printffilewriteerror\n;fclosefp;}intload{FILE*fp;inti=0;iffp=fopenemployee_listrb==NULL{printfcannotopenfile\n;exit0;}else{do{freadem[i]sizeofstructemployee1fp;i++;}whilefeoffp==0;}fclosefp;returni-1;}/********************浏览函数********************/voiddisplay{inti;intm=load;printf工会成员号\t姓名\t\t性别G为女,B为男\t\t出生年月\n;fori=0;im;i++/*m为输入部分的工会成员人数*/printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t子女个数\t\t住址\t\t电话\n;fori=0;im;i++/*m为输入部分的工会成员人数*/printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;}/*************删除函数**************/voiddel{intm=load;intijntflag;charname
[20];printf\n原来的工会成员信息:\n;display;printf\n;printf请输入要删除的工会成员的姓名:\n;scanf%sname;forflag=1i=0;flagim;i++{ifstrcmpem[i].namename==0{printf\n已找到此人,原始记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;printf\n确实要删除此人信息请按1不删除请按0\n;scanf%dn;ifn==1{forj=i;jm-1;j++{strcpyem[j].nameem[j+1].name;em[j].num=em[j+1].num;em[j].sex=em[j+1].sex;em[j].age=em[j+1].age;strcpyem[j].xueliem[j+1].xueli;em[j].wage=em[j+1].wage;strcpyem[j].addrem[j+1].addr;strcpyem[j].telem[j+1].tel;}flag=0;}}}if!flagm=m-1;elseprintf\n对不起,查无此人!\n;printf\n浏览删除后的所有工会成员信息:\n;savem;/*调用保存函数*/display;/*调用浏览函数*/printf\n继续删除请按1,不再删除请按0\n;scanf%dt;switcht{case1:del;break;case0:break;default:break;}}/********************查询函数*****************/voidsearch{inttflag;do{printf\n按工会成员号查询请按1;按是否婚配查询请按2;返回请按3\n;scanf%dt;ift=1t=3{flag=1;break;}else{flag=0;printf您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switcht{case1:printf按工会成员号查询\n;search_num;break;case2:printf按是否婚配查询\n;search_xueli;break;case3:main;break;default:break;}}}voidsearch_num{intnum;intit;intm=load;printf请输入要查找的工会成员号:\n;scanf%dnum;fori=0;im;i++ifnum==em[i].num{printf\n已找到此人,其记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;break;}ifi==mprintf\n对不起,查无此人\n;printf\n;printf返回查询函数请按1继续查询工会成员号请按2\n;scanf%dt;switcht{case1:search;break;case2:break;default:break;}}voidsearch_xueli{charxueli
[30];intit;intm=load;printf请输入要查找的是否婚配:\n;scanf%sxueli;fori=0;im;i++ifstrcmpem[i].xuelixueli==0{printf\n已找到,其记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;}ifi==mprintf\n对不起,查无此人\n;printf\n;printf返回查询函数请按1继续查询学历请按2\n;scanf%dt;switcht{case1:search;break;case2:break;default:break;}}/*****************修改函数*******************/voidmodify{intnum;charname
[20];charsex;intage;charxueli
[30];intwage;charaddr
[30];chartel
[20];intbcintflag;intm=load;printf\n原来的工会成员信息:\n;display;printf\n;printf请输入要修改的工会成员的姓名:\n;scanf%sname;forflag=1i=0;flagim;i++{ifstrcmpem[i].namename==0{printf\n已找到此人,原始记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;printf\n确实要修改此人信息请按1;不修改请按0\n;scanf%dn;ifn==1{printf\n需要进行修改的选项\n
1.工会成员号
2.姓名
3.性别
4.出生年月
5.是否婚配
6.子女个数
7.住址
8.电话\n;printf请输入你想修改的那一项序号:\n;scanf%dc;ifc8||c1printf\n选择错误,请重新选择!\n;}flag=0;}}ifflag==1printf\n对不起,查无此人!\n;do{switchc/*因为当找到第i个工会成员时for语句后i自加了1所以下面的应该把改后的信息赋值给第i-1个人*/{case1:printf工会成员号改为:;scanf%dnum;em[i-1].num=num;break;case2:printf姓名改为:;scanf%sname;strcpyem[i-1].namename;break;case3:printf性别改为:;getchar;scanf%csex;em[i-1].sex=sex;break;case4:printf出生年月改为:;scanf%dage;em[i-1].age=age;break;case5:printf是否婚配改为:;scanf%sxueli;strcpyem[i-1].xuelixueli;break;case6:printf子女个数改为:;scanf%dwage;break;case7:printf住址改为:;scanf%saddr;strcpyem[i-1].addraddr;break;case8:printf电话改为:;scanf%stel;strcpyem[i-1].teltel;break;}printf\n;printf\n是否确定所修改的信息\n是请按1;不重新修改请按2:\n;scanf%db;}whileb==2;printf\n浏览修改后的所有工会成员信息:\n;printf\n;savem;display;printf\n继续修改请按1,不再修改请按0,返回主菜单按2\n;scanf%dt;switcht{case2:main;break;case1:modify;break;case0:break;default:break;}}源代码录入保存/*****************头文件以及宏定义**************/#includestdio.h#includewindows.h#defineN100structemployee/*****************员工信息结构体**************/{intnum;/*****************定义一个整形**************/charname
[20];/*****************定义一个字符型**************/charsex;/*****************定义一个字符型**************/intage;/*****************定义一个整形**************/charxueli
[30];/*****************定义一个字符型**************/intwage;/*****************定义一个整形**************/charaddr
[30];/*****************定义一个字符型**************/chartel
[20];/*****************定义一个字符型**************/}em
[100];/*******************定义各个函数****************/voidmenu;/*菜单函数*/voidinput;/*录入函数*/voidsaveint;/*保存文件函数*//*****************主函数*****************/voidmain{menu;intnflag;chara;do{printf请选择你需要的服务:\n;scanf%dn;ifn=1n=6{flag=1;break;}else{flag=0;printf对不起,您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switchn{case1:printf输入工会成员信息\n;printf\n;input;break;case6:printf谢谢您使用本程序,欢迎再次为您服务\n;exit0;break;default:break;}getchar;printf\n;printf继续按y,退出按n:\n;scanf%ca;ifa==y{flag=1;systemcls;/*清屏*/main;/*调用菜单函数*/printf请再次选择你需要的服务:\n;scanf%dn;printf\n;}elseprintf谢谢您使用本程序,欢迎再次为您服务\n;exit0;}}/*******************菜单函数******************/voidmenu{systemcolorf0;/*屏幕颜色设计*/systemTITLE欢迎进入工会成员信息管理系统;/*屏幕标题设定*/printf\n\n;printfЖЖЖЖ本系统能为您提供以下服务ЖЖЖЖ\n\n;printf
1.录入工会成员信息\n;printf
6.退出\n;printf\n;printf\n;}/****************录入函数****************/voidinput{intim;/****************定义两个整形常量****************/printf请输入需要创建信息的工会成员人数1--100:\n;scanf%dm;/****************输入需要创建信息的工会成员人数****************/fori=0;im;i++/****************使用for循环****************/{printf请输入工会成员号;scanf%dem[i].num;/****************输入工会成员号****************/printf请输入姓名:;scanf%sem[i].name;/****************输入工会成员名字****************/getchar;printf请输入性别G为女,B为男:;scanf%cem[i].sex;/****************输入工会成员性别****************/printf请输入出生年月:;scanf%dem[i].age;/****************输入工会成员出生年月****************/printf请输入是否婚配:;scanf%sem[i].xueli;/****************输入工会成员婚配信息****************/printf请输入子女个数:;scanf%dem[i].wage;/****************输入工会成员子女个数****************/printf请输入住址:;scanf%sem[i].addr;/****************输入工会成员住址****************/printf请输入联系电话:;scanf%sem[i].tel;/****************输入工会成员电话****************/printf\n;}printf\n创建完毕!\n;savem;/*跳入保存函数*/}/******************保存文件函数****************/voidsaveintm{inti;/******************定义一个整形常量****************/FILE*fp;/******************声明fp是指针,用来指向FILE类型的对象****************/iffp=fopenemployee_listwb==NULL/******************二进制打开文件失败****************/{printfcannotopenfile\n;/******************输出错误提示****************/exit0;/******************退出****************/}fori=0;im;i++/*将内存中工会成员的信息输出到磁盘文件中去*/iffwriteem[i]sizeofstructemployee1fp!=1/******************从em[]中读取大小为sizeofstructemployee的一条记录到fp指向的文件****************/printffilewriteerror\n;/******************返回值不为1(上面的函数的返回值为读取的记录数),输出错误信息****************/fclosefp;/******************关闭文件****************/}intload/******************导入函数****************/{FILE*fp;/******************文件指针****************/inti=0;iffp=fopenemployee_listrb==NULL/******************以只读方式打开二进制文件****************/{printfcannotopenfile\n;/******************打开失败,输错错误信息****************/exit0;/******************退出****************/}else{do{freadem[i]sizeofstructemployee1fp;/******************从fp指向的文件中读取大小为sizeofstructemployee的一条记录到em[]中****************/i++;}whilefeoffp==0;/******************判断是否到文件尾(即结束)****************/}fclosefp;/******************读取完,关闭文件****************/returni-1;/******************返回读取的记录数****************/}源程序:浏览/*****************头文件以及宏定义**************/#includestdio.h#includestdlib.h#includewindows.h#includestring.h#defineN100/*****************定义一个结构体**************/structemployee{intnum;charname
[20];charsex;intage;charxueli
[30];intwage;charaddr
[30];chartel
[20];}em
[100];/*******************定义各个函数****************/voidmenu;/*菜单函数*/voiddisplay;/*浏览函数*//*****************主函数*****************/voidmain{menu;intnflag;chara;do{printf请选择你需要的服务:\n;scanf%dn;ifn=1n=6{flag=1;break;}else{flag=0;printf对不起,您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switchn{case2:printf浏览工会成员信息\n;printf\n;display;break;case6:printf谢谢您使用本程序,欢迎再次为您服务\n;exit0;break;default:break;}getchar;printf\n;printf继续按y,退出按n:\n;scanf%ca;ifa==y{flag=1;systemcls;/*清屏*/main;/*调用菜单函数*/printf请再次选择你需要的服务:\n;scanf%dn;printf\n;}elseprintf谢谢您使用本程序,欢迎再次为您服务\n;exit0;}}/*******************菜单函数******************/voidmenu{systemcolorf0;/*屏幕颜色设计*/systemTITLE欢迎进入工会成员信息管理系统;/*屏幕标题设定*/printf\n\n;printfЖЖЖЖ本系统能为您提供以下服务ЖЖЖЖ\n\n;printf
2.浏览工会成员信息\n;printf
6.退出\n;printf\n;printf\n;}intload{FILE*fp;inti=0;iffp=fopenemployee_listrb==NULL{printfcannotopenfile\n;exit0;}else{do{freadem[i]sizeofstructemployee1fp;i++;}whilefeoffp==0;}fclosefp;returni-1;}/********************浏览函数********************/voiddisplay{inti;intm=load;printf工会成员号\t姓名\t\t性别G为女,B为男\t\t出生年月\n;fori=0;im;i++/*m为输入部分的工会成员人数*/printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t子女个数\t\t住址\t\t电话\n;fori=0;im;i++/*m为输入部分的工会成员人数*/printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;}源代码查询/*****************头文件以及宏定义**************/#includestdio.h#includestdlib.h#includewindows.h#includestring.h#defineN100/*****************定义一个结构体**************/structemployee{intnum;charname
[20];charsex;intage;charxueli
[30];intwage;charaddr
[30];chartel
[20];}em
[100];/*******************定义各个函数****************/voidmenu;/*菜单函数*/voidsearch;/*查询主函数*/voidsearch_num;/*按工号查询*/voidsearch_xueli;/*按是否婚配查询*//*****************主函数*****************/voidmain{menu;intnflag;chara;do{printf请选择你需要的服务:\n;scanf%dn;ifn=1n=6{flag=1;break;}else{flag=0;printf对不起,您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switchn{case3:printf按工会成员号查询工会成员信息\n;printf\n;search;break;case6:printf谢谢您使用本程序,欢迎再次为您服务\n;exit0;break;default:break;}getchar;printf\n;printf继续按y,退出按n:\n;scanf%ca;ifa==y{flag=1;systemcls;/*清屏*/main;/*调用菜单函数*/printf请再次选择你需要的服务:\n;scanf%dn;printf\n;}elseprintf谢谢您使用本程序,欢迎再次为您服务\n;exit0;}}/*******************菜单函数******************/voidmenu{systemcolorf0;/*屏幕颜色设计*/systemTITLE欢迎进入工会成员信息管理系统;/*屏幕标题设定*/printf\n\n;printfЖЖЖЖ本系统能为您提供以下服务ЖЖЖЖ\n\n;printf
3.查询工会成员信息\n;printf
6.退出\n;printf\n;printf\n;}intload{FILE*fp;inti=0;iffp=fopenemployee_listrb==NULL{printfcannotopenfile\n;exit0;}else{do{freadem[i]sizeofstructemployee1fp;i++;}whilefeoffp==0;}fclosefp;returni-1;}/********************查询函数*****************/voidsearch{inttflag;do{printf\n按工会成员号查询请按1;按是否婚配查询请按2;返回请按3\n;scanf%dt;ift=1t=3{flag=1;break;}else{flag=0;printf您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switcht{case1:printf按工会成员号查询\n;search_num;break;case2:printf按是否婚配查询\n;search_xueli;break;case3:main;break;default:break;}}}voidsearch_num{intnum;intit;intm=load;printf请输入要查找的工会成员号:\n;scanf%dnum;fori=0;im;i++ifnum==em[i].num{printf\n已找到此人,其记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;break;}ifi==mprintf\n对不起,查无此人\n;printf\n;printf返回查询函数请按1继续查询工会成员号请按2\n;scanf%dt;switcht{case1:search;break;case2:break;default:break;}}voidsearch_xueli{charxueli
[30];intit;intm=load;printf请输入要查找的是否婚配:\n;scanf%sxueli;fori=0;im;i++ifstrcmpem[i].xuelixueli==0{printf\n已找到,其记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;}ifi==mprintf\n对不起,查无此人\n;printf\n;printf返回查询函数请按1继续查询请按2\n;scanf%dt;switcht{case1:search;break;case2:break;default:break;}}源代码修改删除/*****************头文件以及宏定义**************/#includestdio.h#includestdlib.h#includewindows.h/*****该头文件内部已经定义的一些变量,宏,函数等等资源****/#includestring.h/*******字符串处理头文件*******//******函数声明*********/voiddel;/*删除函数声明*/voidmodify;/*修改函数声明*/voidsaveint;/*保存文件函数*/#defineN100/****宏定义,遇到N自动转换成100***/structemployee/*******各种变量声明********/{intnum;/*工会成员号声明*/charname
[20];/*工会成员姓名声明*/charsex;/*工会成员性别声明*/intage;/*工会成员出生年月声明*/charxueli
[30];/*工会成员是否婚配声明*/intwage;/*工会成员子女个数声明*/charaddr
[30];/*工会成员住址声明*/chartel
[20];/*工会成员联系电话声明*/}em
[100];/*em总量声明*//*****************主函数*****************/voidmain{systemcolorf0;/*屏幕颜色设计*/systemTITLE欢迎进入工会成员信息管理系统;/*屏幕标题设定*/printf\n\n;/*屏幕输出*/printfЖЖЖЖ本系统能为您提供以下服务ЖЖЖЖ\n\n;printf
4.删除工会成员信息\n;printf
5.修改工会成员信息\n;printf
6.退出\n;printf\n;printf\n;intnflag;chara;do/*功能选择输入*/{printf请选择你需要的服务:\n;scanf%dn;ifn=1n=6{flag=1;break;}else{flag=0;printf对不起,您输入有误,请重新选择!;}}whileflag==0;whileflag==1{switchn{case4:printf删除工会成员信息\n;printf\n;del;break;case5:printf修改工会成员信息\n;printf\n;modify;break;case6:printf谢谢您使用本程序,欢迎再次为您服务\n;exit0;break;default:break;}getchar;printf\n;printf继续按y,退出按n:\n;scanf%ca;ifa==y{flag=1;systemcls;/*清屏*/main;/*调用菜单函数*/printf请再次选择你需要的服务:\n;scanf%dn;printf\n;}elseprintf谢谢您使用本程序,欢迎再次为您服务\n;exit0;/*退出*/}}intload/*数据提取*/{FILE*fp;inti=0;iffp=fopenemployee_listrb==NULL/*打开文件,读取数据*/{printfcannotopenfile\n;exit0;}else{do{freadem[i]sizeofstructemployee1fp;i++;}whilefeoffp==0;}fclosefp;returni-1;}/******************保存文件函数****************/voidsaveintm{inti;FILE*fp;iffp=fopenemployee_listwb==NULL{printfcannotopenfile\n;exit0;}fori=0;im;i++/*将内存中工会成员的信息输出到磁盘文件中去*/iffwriteem[i]sizeofstructemployee1fp!=1printffilewriteerror\n;fclosefp;}/*************删除函数**************/voiddel{intm=load;intijntflag;charname
[20];printf\n原来的工会成员信息:\n;printf\n;printf请输入要删除的工会成员的姓名:\n;scanf%sname;forflag=1i=0;flagim;i++{ifstrcmpem[i].namename==0/*姓名对比查找*/{printf\n已找到此人,原始记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;printf\n确实要删除此人信息请按1不删除请按0\n;scanf%dn;ifn==1{forj=i;jm-1;j++{strcpyem[j].nameem[j+1].name;em[j].num=em[j+1].num;em[j].sex=em[j+1].sex;em[j].age=em[j+1].age;strcpyem[j].xueliem[j+1].xueli;em[j].wage=em[j+1].wage;strcpyem[j].addrem[j+1].addr;strcpyem[j].telem[j+1].tel;}flag=0;}}}if!flagm=m-1;elseprintf\n对不起,查无此人!\n;printf\n浏览删除后的所有工会成员信息:\n;savem;/*调用保存函数*/printf\n继续删除请按1,不再删除请按0\n;scanf%dt;switcht{case1:del;/*******删除语句******/break;case0:break;default:break;}}/*****************修改函数*******************/voidmodify{intnum;charname
[20];charsex;intage;charxueli
[30];intwage;charaddr
[30];chartel
[20];intbcintflag;intm=load;printf\n原来的工会成员信息:\n;printf\n;printf请输入要修改的工会成员的姓名:\n;scanf%sname;forflag=1i=0;flagim;i++{ifstrcmpem[i].namename==0{printf\n已找到此人,原始记录为\n;printf工会成员号\t姓名\t\t性别\t\t出生年月\n;printf\n%d\t\t%s\t%c\t\t%d\t\nem[i].numem[i].nameem[i].sexem[i].age;printf\n是否婚配\t\t子女个数\t\t住址\t\t电话\n;printf\n%s\t%d\t\t%s\t%s\nem[i].xueliem[i].wageem[i].addrem[i].tel;printf\n确实要修改此人信息请按1;不修改请按0\n;scanf%dn;ifn==1{printf\n需要进行修改的选项\n
1.工会成员号
2.姓名
3.性别
4.出生年月
5.是否婚配
6.子女个数
7.住址
8.电话\n;printf请输入你想修改的那一项序号:\n;scanf%dc;ifc8||c1printf\n选择错误,请重新选择!\n;}flag=0;}}ifflag==1printf\n对不起,查无此人!\n;do{switchc/*因为当找到第i个工会成员时for语句后i自加了1所以下面的应该把改后的信息赋值给第i-1个人*/{case1:printf工会成员号改为:;scanf%dnum;em[i-1].num=num;break;case2:printf姓名改为:;scanf%sname;strcpyem[i-1].namename;break;case3:printf性别改为:;getchar;scanf%csex;em[i-1].sex=sex;break;case4:printf出生年月改为:;scanf%dage;em[i-1].age=age;break;case5:printf是否婚配改为:;scanf%sxueli;strcpyem[i-1].xuelixueli;break;case6:printf子女个数改为:;scanf%dwage;break;case7:printf住址改为:;scanf%saddr;strcpyem[i-1].addraddr;break;case8:printf电话改为:;scanf%stel;strcpyem[i-1].teltel;break;}printf\n;printf\n是否确定所修改的信息\n是请按1;不重新修改请按2:\n;scanf%db;}whileb==2;printf\n浏览修改后的所有工会成员信息:\n;printf\n;savem;printf\n继续修改请按1,不再修改请按0,返回主菜单按2\n;scanf%dt;switcht{case2:main;break;case1:modify;break;case0:break;default:break;}}。