毕业设计---工会成员信息管理系统_第1页
毕业设计---工会成员信息管理系统_第2页
毕业设计---工会成员信息管理系统_第3页
毕业设计---工会成员信息管理系统_第4页
毕业设计---工会成员信息管理系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.电子信息工程系二一二至二一三学年秋期(11级机械四班)课程实验报告 成都电子科大成都学院实验课程:C语言程序设计基础实验项目:工会成员信息管理系统指导教师:学生姓名:学生学号:班级:机械设计制造及其自动化2011级4班实验时间:2014年12月11日-12月28日实验成绩:老师评阅:目录一课程设计的题目与要求41.题目:42.实验目的:43.遇到的问题:44.功能要求:4二.课程设计题目功能51.数据结构説明52.实验思路53.输出数据7三课程设计总结8四附录9一课程设计的题目与要求1.题目:工会成员信息管理系统2.实验目的(1) 加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理

2、的模块化结构。(2) 学会设计数据结构。其中包括对结构数组、数据文件等知识的运用。(3) 提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。(4) 训练C程序调试能力,能将一个中小型各级组织系统联调通过。(5) 开发一个中小型系统,掌握系统研发全过程。(6) 培养分析问题、解决实际问题的能力。3.遇到的问题:自己定义函数与主函数之间的调用不当问题。例如:void search(),void search_num(),void search_xueli()等。数据的调用:int load()4. 功能要求 A 基本要求:(1)试设计一个工会成员信息管理系统,使之能提供以下功能:(2)查询

3、功能:(至少一种查询方式)算法,按婚否查询,按子女个数查询等B 信息描述工会成员信息包括职工号、姓名、性别、出生年月、婚否、子女个数等(职工号不重复)。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 输出;

4、2. 实验思路 struct employee /*定义一个结构体*/ void menu() /*菜单函数*/ void search() /*查询主函数*/ void search_num() /*按工号查询*/ void search_xueli() /*按是否婚配查询*/根据以上几个部分来对工会成员信息管理系统中成员信息进行查询部分的编译。3. (1)按工号查询(2)按是否婚配查询三课程设计总结本次程序设计综合应用实验让我懂得了很多函数的妙用,特别是几个函数之间的调用,在我设计的这个程序真是用处很大啊,主函数可用菜单函数,然后菜单函数再去调用查询函数,最后查询函数又去调用二个分支查询函

5、数,这也许就是C语言代码的魅力吧,它的妙用就是这么巧妙,以至于你不认真去对待它就不能看出它的真面目,呵呵,总之这次程序设计综合应用实验让我收获很大,同时也改变了我对C语言的看法。程序设计综合应用实验4 附录源程序:全部代码 /*头文件以及宏定义*/#include <stdio.h>#include <stdlib.h>#include <windows.h>#include <string.h>#define N 100 /*定义一个结构体*/struct employee int num; char name20; char sex; int

6、 age; char xueli30; int wage; char addr30; char tel20;em100; /*定义各个函数*/void menu();/*菜单函数*/void input();/*录入函数*/void save(int);/*保存文件函数*/void display();/*浏览函数*/void del();/*删除函数*/void search();/*查询主函数*/void search_num();/*按工号查询*/void search_xueli();/*按是否婚配查询*/void modify(); /*修改函数*/ /*主函数*/void main

7、() 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(flag=0); while(flag=1) switch(n) case 1:printf(" 输入工会成员信息n");printf("n");input()

8、;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");

9、modify();break; case 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&quo

10、t;); scanf("%d",&n); printf("n"); else printf(" 谢谢您使用本程序,欢迎再次为您服务n"); exit(0); /*菜单函数*/void menu() system("color f0"); /*屏幕颜色设计*/ system("TITLE 欢迎进入工会成员信息管理系统"); /*屏幕标题设定*/ printf("nn"); printf(" 本系统能为您提供以下服务nn"); printf("

11、; 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-100):n

12、"); scanf("%d",&m); for (i=0;i<m;i+) printf("请输入工会成员号: "); scanf("%d",&emi.num); printf("请输入姓名: "); scanf("%s",); getchar(); printf("请输入性别(G为女,B为男): "); scanf("%c",&emi.sex); printf("请输入出生年月: "

13、;); scanf("%d",&emi.age); printf("请输入是否婚配: "); scanf("%s",emi.xueli); printf("请输入子女个数: "); scanf("%d",&emi.wage); printf("请输入住址: "); scanf("%s",emi.addr); printf("请输入联系电话: "); scanf("%s",emi.tel); print

14、f("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;i<m;i+) /*将内存中工会成员的信息输出到磁盘文件中去*/ if (fwrite(&emi,sizeof(struct em

15、ployee),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); retur

16、n(i-1); /*浏览函数*/void display() int i; int m=load(); printf("工会成员号t姓名tt性别(G为女,B为男)tt出生年月n"); for(i=0;i<m;i+) /*m为输入部分的工会成员人数*/ printf("n %dtt%st %ctt %dtn",emi.num,,emi.sex,emi.age); printf("n是否婚配t子女个数tt住址tt电话n"); for(i=0;i<m;i+) /*m为输入部分的工会成员人数*/ printf(&q

17、uot;n %st %dtt %st %sn",emi.xueli,emi.wage,emi.addr,emi.tel); /*删除函数*/void del() int m=load(); int i,j,n,t,flag; char name20; printf("n 原来的工会成员信息:n"); display(); printf("n"); printf("请输入要删除的工会成员的姓名:n"); scanf("%s",name); for(flag=1,i=0;flag&&i<

18、m;i+) if(strcmp(,name)=0) printf("n已找到此人,原始记录为:n"); printf(" 工会成员号t姓名tt性别tt出生年月 n"); printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n 是否婚配tt子女个数tt住址tt电话 n"); printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel)

19、; printf("n确实要删除此人信息请按1,不删除请按0n"); scanf("%d",&n); if(n=1) for(j=i;j<m-1;j+) strcpy(,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); strcpy(emj.tel,emj+1.tel); fl

20、ag=0; if(!flag) m=m-1; else printf("n对不起,查无此人!n"); printf("n 浏览删除后的所有工会成员信息:n"); save(m); /*调用保存函数*/ display(); /*调用浏览函数*/ printf("n继续删除请按1,不再删除请按0n"); scanf("%d",&t); switch(t) case 1:del();break; case 0:break; default :break; /*查询函数*/void search() int t,

21、flag; do printf("n按工会成员号查询请按1; 按是否婚配查询请按2; 返回请按3n"); scanf("%d",&t); if(t>=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("

22、按是否婚配查询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;i<m;i+) if(num=emi.num) printf("n已找到此人,其记录为:n"); printf(" 工会成员号t姓名tt性别tt出生年月 n&quo

23、t;); printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("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

24、"); 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(); printf("请输入要查找的是否婚配:n"); scanf("%s",xueli); for(i=0;i<m;i+) if(strcmp(emi.xueli,xueli)=0) printf("n已找到,其记录为:n&quo

25、t;); printf(" 工会成员号t姓名tt性别tt出生年月 n"); printf("n %dtt%st%ctt%dtn",emi.num,,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) printf("n对不起,查无此人n"); printf("n");

26、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 原来的工

27、会成员信息:n"); display(); printf("n"); printf("请输入要修改的工会成员的姓名:n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i+) if(strcmp(,name)=0) printf("n已找到此人,原始记录为:n"); printf(" 工会成员号t姓名tt性别tt出生年月 n"); printf("n %dtt%st%ctt%dtn",

28、emi.num,,emi.sex,emi.age); printf("n 是否婚配tt子女个数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) printf("n需要进行修改的选项n 1.工会成员号 2.姓名 3.性别 4.出生年月 5.是否婚配 6.子女个数 7

29、.住址 8.电话n"); printf("请输入你想修改的那一项序号:n"); scanf("%d",&c); if(c>8|c<1) printf("n选择错误,请重新选择!n"); flag=0; if(flag=1) printf("n对不起,查无此人!n"); do switch(c) /*因为当找到第i个工会成员时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ case 1:printf("工会成员号改为: "); scanf(

30、"%d",&num); emi-1.num=num; break; case 2:printf("姓名改为: "); scanf("%s",name); strcpy(,name); break; case 3:printf("性别改为: "); getchar(); scanf("%c",&sex); emi-1.sex=sex; break; case 4:printf("出生年月改为: "); scanf("%d"

31、,&age); emi-1.age=age; break; case 5:printf("是否婚配改为: "); scanf("%s",xueli); strcpy(emi-1.xueli,xueli); break; case 6:printf("子女个数改为: "); scanf("%d",wage); break; case 7:printf("住址改为: "); scanf("%s",addr); strcpy(emi-1.addr,addr); break;

32、 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(); pri

33、ntf("n继续修改请按1,不再修改请按0,返回主菜单按2n"); scanf("%d",&t); switch(t) case 2:main();break; case 1:modify();break; case 0:break; default :break; 源代码:录入 保存 /*头文件以及宏定义*/#include <stdio.h>#include <windows.h>#define N 100 struct employee /*员工信息结构体*/ int num; /*定义一个整形*/ char nam

34、e20; /*定义一个字符型*/ char sex; /*定义一个字符型*/ int age; /*定义一个整形*/ char xueli30; /*定义一个字符型*/ int wage; /*定义一个整形*/ char addr30; /*定义一个字符型*/ char tel20; /*定义一个字符型*/em100; /*定义各个函数*/void menu();/*菜单函数*/void input();/*录入函数*/void save(int);/*保存文件函数*/ /*主函数*/void main() menu(); int n,flag; char a; do printf("

35、; 请选择你需要的服务:n"); scanf("%d",&n); if(n>=1&&n<=6) flag=1; break; else flag=0; printf(" 对不起,您输入有误,请重新选择!"); while(flag=0); while(flag=1) switch(n) case 1:printf(" 输入工会成员信息n");printf("n");input();break; case 6:printf(" 谢谢您使用本程序,欢迎再次为您服务

36、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"

37、;); else printf(" 谢谢您使用本程序,欢迎再次为您服务n"); exit(0); /*菜单函数*/void menu() system("color f0"); /*屏幕颜色设计*/ system("TITLE 欢迎进入工会成员信息管理系统"); /*屏幕标题设定*/ printf("nn"); printf(" 本系统能为您提供以下服务nn"); printf(" 1.录入工会成员信息n"); printf(" 6.退出n"); prin

38、tf("n"); printf("n"); /*录入函数*/void input() int i,m; /*定义两个整形常量*/ printf("请输入需要创建信息的工会成员人数(1-100):n"); scanf("%d",&m); /*输入需要创建信息的工会成员人数*/ for (i=0;i<m;i+) /*使用for循环*/ printf("请输入工会成员号: "); scanf("%d",&emi.num); /*输入工会成员号*/ printf

39、("请输入姓名: "); scanf("%s",); /*输入工会成员名字*/ getchar(); printf("请输入性别(G为女,B为男): "); scanf("%c",&emi.sex); /*输入工会成员性别*/ printf("请输入出生年月: "); scanf("%d",&emi.age); /*输入工会成员出生年月*/ printf("请输入是否婚配: "); scanf("%s",

40、emi.xueli); /*输入工会成员婚配信息*/ printf("请输入子女个数: "); scanf("%d",&emi.wage); /*输入工会成员子女个数*/ printf("请输入住址: "); scanf("%s",emi.addr); /*输入工会成员住址*/ printf("请输入联系电话: "); scanf("%s",emi.tel); /*输入工会成员电话*/ printf("n"); printf("n创建完毕

41、!n"); save(m);/*跳入保存函数*/ /*保存文件函数*/void save(int m) int i; /*定义一个整形常量*/ FILE*fp; /*声明fp是指针,用来指向FILE类型的对象*/ if (fp=fopen("employee_list","wb")=NULL) /*二进制打开文件失败*/ printf ("cannot open filen"); /*输出错误提示*/ exit(0); /*退出*/ for (i=0;i<m;i+) /*将内存中工会成员的信息输出到磁盘文件中去*/ i

42、f (fwrite(&emi,sizeof(struct employee),1,fp)!=1) /*从em中读取大小为sizeof(struct employee)的一条记录到fp指向的文件*/ printf("file write errorn"); /*返回值不为1(上面的函数的返回值为读取的记录数),输出错误信息*/ fclose(fp); /*关闭文件*/int load() /*导入函数*/ FILE*fp; /*文件指针*/ int i=0; if(fp=fopen("employee_list","rb")=N

43、ULL) /*以只读方式打开二进制文件*/ printf ("cannot open filen"); /*打开失败,输错错误信息*/ exit(0); /*退出*/ else do fread(&emi,sizeof(struct employee),1,fp); /*从fp指向的文件中读取大小为sizeof(struct employee)的一条记录到em中*/ i+; while(feof(fp)=0); /*判断是否到文件尾(即结束)*/ fclose(fp); /*读取完,关闭文件*/ return(i-1); /*返回读取的记录数*/源程序:浏览 /*头

44、文件以及宏定义*/#include <stdio.h>#include <stdlib.h>#include <windows.h>#include <string.h>#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 display();/*浏览函数*/ /*主函数*/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(flag=0); while(flag=1) switch(n) case 2:printf(" 浏览工会成员信息n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论