1、毕业设计 工会成员信息管理系统电子信息工程系二一二至二一三学年秋期(11级机械四班)课程实验报告 成都电子科大成都学院实验课程:C语言程序设计基础实验项目:工会成员信息管理系统指导教师:学生姓名:学生学号:班级:机械设计制造及其自动化2011级4班实验时间:2014年12月11日-12月28日实验成绩:老师评阅:一课程设计的题目与要求1.题目:工会成员信息管理系统2.实验目的(1) 加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。(2) 学会设计数据结构。其中包括对结构数组、数据文件等知识的运用。(3) 提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。(4)
2、 训练C程序调试能力,能将一个中小型各级组织系统联调通过。(5) 开发一个中小型系统,掌握系统研发全过程。(6) 培养分析问题、解决实际问题的能力。3.遇到的问题:自己定义函数与主函数之间的调用不当问题。例如:void search(),void search_num(),void search_xueli()等。数据的调用:int load()4. 功能要求 A 基本要求:(1)试设计一个工会成员信息管理系统,使之能提供以下功能:(2)查询功能:(至少一种查询方式)算法,按婚否查询,按子女个数查询等B 信息描述 工会成员信息包括职工号、姓名、性别、出生年月、婚否、子女个数等(职工号不重复)。
3、2.课程设计题目功能1. 数据结构説明用到的数据:int 整型、char 字符型;FILE*fp 指针;函数:void search(),void search_num(),void search_xueli()menu()、getchar()、switch()、while()、exit(0)、main()、save(); do while循环;if 选择结构;while 循环;switch 选择结构;scanf 输入;printf 输出; 2. 实验思路 struct employee /*定义一个结构体*/ void menu() /*菜单函数*/ void search() /*查询主函
4、数*/ void search_num() /*按工号查询*/ void search_xueli() /*按是否婚配查询*/根据以上几个部分来对工会成员信息管理系统中成员信息进行查询部分的编译。3. (1)按工号查询(2)按是否婚配查询三课程设计总结本次程序设计综合应用实验让我懂得了很多函数的妙用,特别是几个函数之间的调用,在我设计的这个程序真是用处很大啊,主函数可用菜单函数,然后菜单函数再去调用查询函数,最后查询函数又去调用二个分支查询函数,这也许就是C语言代码的魅力吧,它的妙用就是这么巧妙,以至于你不认真去对待它就不能看出它的真面目,呵呵,总之这次程序设计综合应用实验让我收获很大,同时也
5、改变了我对C语言的看法。程序设计综合应用实验4附录源程序:全部代码 /*头文件以及宏定义*/#include #include #include #include #define N 100 /*定义一个结构体*/struct employee int num; char name20; char sex; int age; char xueli30; int wage; char addr30; char tel20;em100; /*定义各个函数*/void menu();/*菜单函数*/void input();/*录入函数*/void save(int);/*保存文件函数*/void
6、display();/*浏览函数*/void del();/*删除函数*/void search();/*查询主函数*/void search_num();/*按工号查询*/void search_xueli();/*按是否婚配查询*/void modify(); /*修改函数*/ /*主函数*/void main() menu(); int n,flag; char a; do printf( 请选择你需要的服务:n); scanf(%d,&n); if(n=1&n=6) flag=1; break; else flag=0; printf( 对不起,您输入有误,请重新选择!); while
7、(flag=0); while(flag=1) switch(n) case 1:printf( 输入工会成员信息n);printf(n);input();break; case 2:printf( 浏览工会成员信息n);printf(n);display();break; case 3:printf( 按工会成员号查询工会成员信息n);printf(n);search();break; case 4:printf( 删除工会成员信息n);printf(n);del();break; case 5:printf( 修改工会成员信息n);printf(n);modify();break; cas
8、e 6:printf( 谢谢您使用本程序,欢迎再次为您服务n);exit(0);break; default :break; getchar(); printf(n); printf( 继续按y,退出按n:n); scanf(%c,&a); if(a=y) flag=1; system(cls); /*清屏*/ main(); /*调用菜单函数*/ printf( 请再次选择你需要的服务:n); scanf(%d,&n); printf(n); else printf( 谢谢您使用本程序,欢迎再次为您服务n); exit(0); /*菜单函数*/void menu() system(color
9、 f0); /*屏幕颜色设计*/ system(TITLE 欢迎进入工会成员信息管理系统); /*屏幕标题设定*/ printf(nn); printf( 本系统能为您提供以下服务nn); printf( 1.录入工会成员信息n); printf( 2.浏览工会成员信息n); printf( 3.查询工会成员信息n); printf( 4.删除工会成员信息n); printf( 5.修改工会成员信息n); printf( 6.退出n); printf(n); printf(n); /*录入函数*/void input() int i,m; printf(请输入需要创建信息的工会成员人数(1-1
10、00):n); scanf(%d,&m); for (i=0;im;i+) printf(请输入工会成员号: ); scanf(%d,&emi.num); printf(请输入姓名: ); scanf(%s,emi.name); getchar(); printf(请输入性别(G为女,B为男): ); scanf(%c,&emi.sex); printf(请输入出生年月: ); scanf(%d,&emi.age); printf(请输入是否婚配: ); scanf(%s,emi.xueli); printf(请输入子女个数: ); scanf(%d,&emi.wage); printf(请输
11、入住址: ); scanf(%s,emi.addr); printf(请输入联系电话: ); scanf(%s,emi.tel); printf(n); printf(n创建完毕!n); save(m);/*跳入保存函数*/ /*保存文件函数*/void save(int m) int i; FILE*fp; if (fp=fopen(employee_list,wb)=NULL) printf (cannot open filen); exit(0); for (i=0;im;i+) /*将内存中工会成员的信息输出到磁盘文件中去*/ if (fwrite(&emi,sizeof(struct
12、 employee),1,fp)!=1) printf(file write errorn); fclose(fp);int load() FILE*fp; int i=0; if(fp=fopen(employee_list,rb)=NULL) printf (cannot open filen); exit(0); else do fread(&emi,sizeof(struct employee),1,fp); i+; while(feof(fp)=0); fclose(fp); return(i-1); /*浏览函数*/void display() int i; int m=load(
13、); printf(工会成员号t姓名tt性别(G为女,B为男)tt出生年月n); for(i=0;im;i+) /*m为输入部分的工会成员人数*/ printf(n %dtt%st %ctt %dtn,emi.num,emi.name,emi.sex,emi.age); printf(n是否婚配t子女个数tt住址tt电话n); for(i=0;im;i+) /*m为输入部分的工会成员人数*/ printf(n %st %dtt %st %sn,emi.xueli,emi.wage,emi.addr,emi.tel); /*删除函数*/void del() int m=load(); int i
14、,j,n,t,flag; char name20; printf(n 原来的工会成员信息:n); display(); printf(n); printf(请输入要删除的工会成员的姓名:n); scanf(%s,name); for(flag=1,i=0;flag&im;i+) if(strcmp(emi.name,name)=0) printf(n已找到此人,原始记录为:n); printf( 工会成员号t姓名tt性别tt出生年月 n); printf(n %dtt%st%ctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 是否婚配tt子女
15、个数tt住址tt电话 n); printf(n %st%dtt%st%sn,emi.xueli,emi.wage,emi.addr,emi.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;j=1&t=3) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); while(flag=1) switch(t) case 1:printf(按工会成员号查询n);search_num();break; case 2:printf(按是否婚配查
16、询n);search_xueli();break; case 3:main();break; default:break; void search_num() int num; int i,t; int m=load(); printf(请输入要查找的工会成员号:n); scanf(%d,&num); for(i=0;im;i+) if(num=emi.num) printf(n已找到此人,其记录为:n); printf( 工会成员号t姓名tt性别tt出生年月 n); printf(n %dtt%st%ctt%dtn,emi.num,emi.name,emi.sex,emi.age); pri
17、ntf(n 是否婚配tt子女个数tt住址tt电话 n); printf(n %st%dtt%st%sn,emi.xueli,emi.wage,emi.addr,emi.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询工会成员号请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2: break; default:break; void search_xueli() char xueli30; int i,t; int m=load(
18、); printf(请输入要查找的是否婚配:n); scanf(%s,xueli); for(i=0;im;i+) if(strcmp(emi.xueli,xueli)=0) printf(n已找到,其记录为:n); printf( 工会成员号t姓名tt性别tt出生年月 n); printf(n %dtt%st%ctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 是否婚配tt子女个数tt住址tt电话 n); printf(n %st%dtt%st%sn,emi.xueli,emi.wage,emi.addr,emi.tel); if(i=m)
19、 printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询学历请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break; /*修改函数*/void modify() int num; char name20; char sex; int age; char xueli30; int wage; char addr30; char tel20; int b,c,i,n,t,flag; int m=load(); printf(n 原来的工会成
20、员信息:n); display(); printf(n); printf(请输入要修改的工会成员的姓名:n); scanf(%s,name); for(flag=1,i=0;flag&i8|c1) printf(n选择错误,请重新选择!n); flag=0; if(flag=1) printf(n对不起,查无此人!n); do switch(c) /*因为当找到第i个工会成员时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ case 1:printf(工会成员号改为: ); scanf(%d,&num); emi-1.num=num; break; case 2:p
21、rintf(姓名改为: ); scanf(%s,name); strcpy(emi-1.name,name); break; case 3:printf(性别改为: ); getchar(); scanf(%c,&sex); emi-1.sex=sex; break; case 4:printf(出生年月改为: ); scanf(%d,&age); emi-1.age=age; break; case 5:printf(是否婚配改为: ); scanf(%s,xueli); strcpy(emi-1.xueli,xueli); break; case 6:printf(子女个数改为: ); s
22、canf(%d,wage); break; case 7:printf(住址改为: ); scanf(%s,addr); strcpy(emi-1.addr,addr); break; case 8:printf(电话改为: ); scanf(%s,tel); strcpy(emi-1.tel,tel); break; printf(n); printf(n是否确定所修改的信息?n 是 请按1 ; 不,重新修改 请按2: n); scanf(%d,&b); while(b=2); printf(n浏览修改后的所有工会成员信息:n); printf(n); save(m); display(); printf(n继续修改请按1,不再修改请按0,返回主菜单按
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1