




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南科技大学理学院C程序设计课程设计 职工信息管理系统题目要求 2设计目的 2总体设计 2详细设计 2调试与测试 12源程序 14总结 25 团队成员:吴芬 潘兰兰 廖茂迪职工信息管理程序一 题目要求 1. 问题描述:设计一个系统来管理职工的信息。职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)2. 要求: 系统需要提供一下功能: 1、以菜单方式工作 2、职工信息浏览功能 3、职工信息查询功能 查询方式:按学历查询和按职工号查询 4、职工信息删除 5、职工信息修改 6、职工信息的输入 职工信息存储在文本中。.二 设计目的根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览职工的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三 总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.职工信息管理系统信息输入信息显示信息修改信息删除信息查找四 详细设计1. 主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择./#include head.h void menu() /菜单函数printf( 欢迎进入职工信息管理系统n); printf( 制作人: 廖茂迪 吴芬 潘兰兰 n); printf( 1.录入职工信息); printf( 2.浏览职工信息n); printf( 3.查询职工信息); printf( 4.删除职工信息n); printf( 5.添加职工信息); printf( 6.修改职工信息n); printf( 7.退出n); printf(n); void main() menu(); int n,flag; char a; do printf(选择你需要操作的步骤(1-7):n); scanf(%d,&n); if(n=1&n=7) flag=1; break; else flag=0; printf(error!); while(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); add();break; case 6: printf( 修改职工信息n);printf(n) modify(); break; case 7:exit(0);break; default :break; getchar(); printf(n); printf(是否继续进行(y or n):n); scanf(%c,&a); if(a=y) flag=1; system(cls); /清屏menu(); /调用菜单函数 printf(请再次选择你需要操作的步骤(1-7):n); scanf(%d,&n); printf(n); else exit(0); 单独看各数据信息,职工号,姓名,性别,学历,住址,电话是字符型,可以采用字符型数组;工资为整数,采用整数;数据信息存放在文件中,一条记录对应一个职工,既符合习惯又方便信息管理.如果要存放若干职工信息就用结构体数组:void input() /录入函数 int i,j,m,num,flag=0; printf(请输入需要创建信息的职工人数(1-100):n); scanf(%d,&m); for (i=0;im;i+) printf(请输入职工号:);scanf(%d,&num);dofor(j=0;ji;j+)if(num=emj.num)flag=1; printf(职工号已存在,请重新输入:n); scanf(%d,&num); else flag=0;while (flag=1); emi.num=num;printf(请输入姓名: ); scanf(%s,); getchar(); printf(请输入性别(f-女m-男): ); scanf(%c,&emi.sex); printf(请输入年龄: ); scanf(%d,&emi.age); printf(请输入学历: ); scanf(%s,emi.xueli); printf(请输入工资: ); scanf(%d,&emi.money); printf(请输入住址: ); scanf(%s,emi.addr); printf(请输入电话: ); scanf(%s,emi.tel); printf(n); printf(n创建完毕!n); save(m); 2. 修改模块:分析:用户输入要修改职工的职工号,根据职工号等信息查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.流程图:输入要修改的姓名找到? Y N提示查无此人显示记录,调用修改函数返回主菜单继续? Y N程序: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 原来的职工信息: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:printf(姓名改为: ); scanf(%s,name); strcpy(,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(工资改为: ); scanf(%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,不再修改请按0n); scanf(%d,&t); switch(t) case 1:modify();break; case 0:break; default :break; 3. 删除模块: 分析:该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除.流程图: 输入要删除的职工姓名找到? Y N提示没有找到显示记录,调用删除函数返回主菜单继续? Y N程序: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&im;i+) if(strcmp(,name)=0) printf(n已找到此人,原始记录为:n); printf( 职工号 姓名t性别t年龄t学历t工资t住址t电话n); printf(n %dt%st%ct%dt%st%dt%st%sn,emi.num,,emi.sex,emi.age,emi.xueli,emi.money,emi.addr,emi.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;j=1&t=4) 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(按学历查询n);search_xueli();break; case 3:printf(条件组合查询n);search_together();break; case 4:main();break; default:break; void search_together() char xueli30; int i, t,age,h=1; int m=load(); printf(请输入要查找的学历:n); scanf(%s,xueli); printf(请输入要查找的年龄:n); scanf(%d,&age); for(i=0;im;i+) if(strcmp(xueli,emi.xueli)=0&age=emi.age) printf(n已找到此人,其记录为:n); printf( 职工号 姓名t性别t年龄t学历t工资t住址t电话n); printf(n %dt%st%ct%dt%st%dt%st%sn,emi.num,,emi.sex,emi.age,emi.xueli,emi.money,emi.addr,emi.tel); h=0; if(h=1) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续条件组合请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break; 4. 显示模块:需求分析:该模块的功能是显示所有职工记录信息.程序:void display() /浏览函数 int i; int m=load(); printf( 职工号姓名t性别t年龄t学历t工资t住址t电话n); for(i=0;im;i+) /m为输入部分的职工人数 printf(n %dt%st%ct%dt%st%dt%st%sn,emi.num,,emi.sex,emi.age,emi.xueli,emi.money,emi.addr,emi.tel);五 调试与测试在这次课程设计中,程序编写过程中遇到了很多的问题,各种函数的运用也让人头疼,在上机编译运行过程中出现了很多的错误,例如:各种数据类型的定义,函数的调用等等。但最终还是在老师同学的帮助下进行了各种代码的编写与修改,最终程序成功的运行。下面是各个模块的界面图(1) 主菜单函数:(2) : 输入模块:(3) : 显示模块:(4) : 删除模块:(5) : 查找模块:(6) : 修改模块:6 程序源q#include #include #include #define N 100 struct employe int num; char name20; char sex; int age; char xueli30; int money; char addr30; char tel15; emN;void menu(); void input(); void save(int); void display(); void del(); void add(); void search(); void search_num(); void search_xueli(); void search_together(); void modify(); /定义各函数 int main() menu(); int n,flag; char a; do printf(选择你需要操作的步骤(1-7):n); scanf(%d,&n); if(n=1&n=7) flag=1; break; else flag=0; printf(error!); while(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); add(); break; case 6: printf( 修改职工信息n);printf(n); modify(); break; case 7:exit(0);break; default :break; getchar(); printf(n); printf(是否继续进行(y or n):n); scanf(%c,&a); if(a=y) flag=1; system(cls); /清屏 menu(); /调用菜单函数 printf(请再次选择你需要操作的步骤(1-7):n); scanf(%d,&n); printf(n); else exit(0); void menu() /菜单函数printf( 欢迎进入职工信息管理系统n); printf( 制作人: 廖茂迪 吴芬 潘兰兰 n);printf( 1.录入职工信息); printf( 2.浏览职工信息n); printf( 3.查询职工信息); printf( 4.删除职工信息n); printf( 5.添加职工信息); printf( 6.修改职工信息n); printf( 7.退出n); printf(n); void input() /录入函数 int i,j,m,num,flag=0; printf(请输入需要创建信息的职工人数(1-100):n); scanf(%d,&m); for (i=0;im;i+) printf(请输入职工号:);scanf(%d,&num);dofor(j=0;ji;j+)if(num=emj.num) flag=1; printf(职工号已存在,请重新输入:n); scanf(%d,&num); else flag=0;while (flag=1); emi.num=num; printf(请输入姓名: ); scanf(%s,); getchar(); printf(请输入性别(f-女m-男): ); scanf(%c,&emi.sex); printf(请输入年龄: ); scanf(%d,&emi.age); printf(请输入学历: ); scanf(%s,emi.xueli); printf(请输入工资: ); scanf(%d,&emi.money); printf(请输入住址: ); 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(D:data.txt,wb)=NULL) printf (cannot open filen); exit(0); for (i=0;im;i+) if (fwrite(&emi,sizeof(struct employe),1,fp)!=1) printf(file write errorn); fclose(fp);/将内存中职工的信息输出到磁盘文件中去 int load() /导入函数 FILE*fp; int i=0; if(fp=fopen(D:data.txt,rb)=NULL) printf (cannot open filen); exit(0); else do fread(&emi,sizeof(struct employe),1,fp); i+; while(feof(fp)=0); fclose(fp); return(i-1); void display() /浏览函数 int i; int m=load(); printf( 职工号姓名t性别t年龄t学历t工资t住址t电话n); for(i=0;im;i+) /m为输入部分的职工人数 printf(n %dt%st%ct%dt%st%dt%st%sn,emi.num,,emi.sex,emi.age,emi.xueli,emi.money,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&im;i+) if(strcmp(,name)=0) printf(n已找到此人,原始记录为:n); printf( 职工号 姓名t性别t年龄t学历t工资t住址t电话n); printf(n %dt%st%ct%dt%st%dt%st%sn,emi.num,,emi.sex,emi.age,emi.xueli,emi.money,emi.addr,emi.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;jm-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.money=emj+1.money; strcpy(emj.addr,emj+1.addr); strcpy(emj.tel,emj+1.tel); flag=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 add()/添加函数 FILE*fp; int n; int count=0; int i,j,flag=0,num; int m=load(); printf(n 原来的职工信息:n); display(); printf(n); fp=fopen(emploee_list,a); printf(请输入想增加的职工数:n); scanf(%d,&n); for (i=m;i(m+n);i+) printf(n 请输入新增加职工的信息:n); printf(请输入职工号: ); scanf(%d,&num); printf(n); do for(j=0;j=1&t=4) 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(按学历查询n);search_xueli();break; case 3:printf(条件组合查询n);search_together();break; case 4:main();break; default:break; void search_num() int num; int i,t,h=1; int m=load(); printf(请输入要查找的职工号:n); scanf(%d,&num); for(i=0;im;i+) if(num=emi.num) printf(n已找到此人,其记录为:n); printf( 职工号 姓名t性别t年龄t学历t工资t住址t电话n); printf(n %dt%st%ct%dt%st%dt%st%sn,emi.num,,emi.sex,emi.age,emi.xueli,emi.money,emi.addr,emi.tel); h=0; if(h=1) 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,h=1; int m=load(); printf(请输入要查找的学历:n); scanf(%s,xueli); for(i=0;im;i+) if(strcmp(emi.xueli,xueli)=0) printf(n已找到,其记录为:n); printf( 职工号姓名t性别t年龄t学历t工资t住址t电话n); printf(n %dt%st%ct%dt%st%dt%st%sn,emi.num,,emi.sex,emi.age,emi.xueli,emi.money,emi.addr,emi.tel); h=0; if(h=1) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询学历请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 门业工程合同协议书模板
- 阳光房搭建合同协议范本
- 煅烧车间承包合同协议书
- 生物信息咨询费合同范本
- 消防施工合同终止协议书
- 江苏商标转让协议书模板
- 防盗玻璃承包协议书范本
- 自媒体账号归属合同范本
- 湛江复印机租赁合同范本
- 自建危房拆除赔偿协议书
- DZ/T 0051-1993地质岩心钻机系列
- GB/T 45610-2025煤矸石回填塌陷区复垦技术规程
- 学校物业服务应急事件处理预案
- 大一计算机考试真题单选题100道及答案
- 用柴油管理制度
- 信用卡消费者保护培训
- 青蓝工程工作总结师傅
- 石油化工生产与操作作业指导书
- 卫生间卫浴知识培训课件
- GB/T 45251-2025互联网金融个人网络消费信贷贷后催收风控指引
- (高清版)DB11∕T2256-2024城市轨道交通钢轨踏面维修技术规范
评论
0/150
提交评论