《2022年职工信息管理系统C语言实习报告 .pdf》由会员分享,可在线阅读,更多相关《2022年职工信息管理系统C语言实习报告 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语 言 课 程 实 习 报 告所 在 院 系 :经济管理学院班 级 学 号 :081081 20081001708姓名 :张梦莹程序 已存档 :指 导 老 师 :赵曼评分 :二零一零年一月十五日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹目录1.1 题目分析1.2 需求分析1. 3 总体设计1. 4 详细设计1.1.4主函数1.4.2各功能模块设计(1
2、) 输入模块(2)浏览模块(3) 查找模块 (包括修改 ) (4) 插入模块3公共函数(1)保存函数(2)加载函数(3)职工号输入函数(4)输入整一个记录函数(5)显示一个记录的函数(6)结束选择浏览或返回函数(7)修改整条数据记录函数1.5 程序测试1.5.1 数据源1.5.2 编译、连接和运行1.5.3 结果1.6 结束语 - 实习心得名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 2
3、0081001708 张梦莹职工信息管理系统摘要:本论文设计的程序是 C 语言课程设计指导书第11题-职工信息管理系统 。这个管理系统能对职工的信息(包括职工号、姓名、性别、年龄、学历、工资、住址、电话等)进行有效地信息录入、浏览、查询、插入、删除等操作,通过操作可以给各方面的用户带来很大的便利。1.1 题目分析题目要求职工信息包括职工号 ,姓名,性别,年龄,学历 ,工资,住址,电话等 (职工号不重复 )。试设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作。职工信息录入功能(职工信息用文件保存)。职工信息浏览功能。职工信息查询功能,查询方式可按学历查询或按职工号查询。职工信息删除
4、,修改功能 (可选项 )。提示 建立职工信息结构体,结构体成员包括职工号、姓名、性别、年龄、学历、工资、住址、电话。1.2 需求分析根据题目要求, 要求对职工信息进行输入、 输出等操作;在程序中需要浏览职工的信息,应提供显示、 查找、浏览、插入、修改等操作; 另外还应提供键盘式选择菜单实现功能选择。1.3 总体设计图 1.3 系统功能模块图职工信息管理系统数据输入数据浏览数据查找(包括修改 ) 数据插入退出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - -
5、- - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹1.4 详细设计1.4.1 主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图 :图 1.4.1 主函数流程图程序:/*主函数*/ main () menu(); /*menu函数*/ void menu() int n,w1;/* 变量 n 保存选择菜单数字, w1 判断输入的数字是否在功能菜单对应数字范围*/ do puts(tt*职工信息管理系统 *nn); puts(tttt1.Enter new data); puts(tttt2.B
6、rowse all); puts(tttt3.Search ); puts(tttt4.Add); puts(tttt5.Exit); puts(nntt*n); printf(Choice your number(1-5): bb); scanf(%d,&n); if(n5) /*对选择的数字作出判断,是否在菜单功能数字范围内*/ w1=1;getchar(); else w1=0; while(w1=1); switch(n)/*根据输入的数字,进入到相应的操作模块中*/ case 1:enter();break;/*输入模块 */ case 2:browse();break; /* 浏览
7、模块 */ 根据 n 的值调用各功能模块函数N Y 输入 n ,判断 n 是否是 0-5 显示各功能选项名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹case 3:search();break; /* 查找模块,其中包括按不同类别进行查找的多个子模块*/ case 4:add();break;/* 插入模块 */ case 5:exit(0); /*退出 *
8、/ 注:menu 函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把 menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。用结构体来存放职工信息:/*结构体 */ struct worker char number11; char name20; char sex20; char adress20; char xueli20; char telephone20; char age20; char salary20; worN; /* worN 中每个数组元素对应一个职工*/ 其中可以根据宏定义 # define N 随时对 N 的值进行调整 ,扩大信息
9、的储存量。1.4.2 各功能模块设计(1)输入模块需求分析 对信息进行输入。流程图 :图 1 输入模块流程图输入用户要输入职工记录的个数n i 从 0 到 n-1 调用输入函数input(i) i!=0 保存调用函数save( n) Y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹程序:/*输入模块 */ void enter()/*输入函数 */ int
10、 i,n; printf(How many workers(0-%d):,N-1); scanf(%d,&n);/* 输入记录的个数,赋值给n*/ printf(n Enter data nownn); for(i=0;in;i+)/* 通过 for 循环语句依次输入个职工信息数据*/ printf(n Input %dth worker record.n,i+1); input(i);/* 调用单个输入函数 */ if(i!=0)save(n);/* 调用保存函数 */ printf_back(); /* 一个任务结束时让用户选择还是浏览还是返回*/ (2)浏览模块需求分析 该模块的功能是显
11、示所有职工记录信息。流程图 :图 2 浏览模块流程图程序:/*浏览(全部)模块 */ browse() /*浏览(全部模块) */ int i,j,n; 按任意键显示下一屏按任意键返回主菜单显示职工记录(10 个一屏)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹n=load(); /* 调用加载函数,并计算可以记录的个数*/ printf_face();
12、/* 调出显示数据结构项目函数*/ for(i=0;inn1).number2.xueli3).cancel and back); printf(Which you needed?: bb); scanf(%d,&c); if(c3|c3|c1); switch(c) /* switch 语句提供按不同类别进行查找功能*/ case 1:search1();break; /* 按职工号进行查找 */ case 2:search2();break; /* 按学历进行查找 */ case 3:menu();break; /* 返回主菜单 */ /*按职工号查找模块 */ 流程图 :图 4 按职工号
13、查找模块流程图按职工号查找模块用户作出选择,输入一整型数值3 返回主菜单2 修改1,2,还是 3 1 继续查找名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹程序:search1() int i,n,k,w1=1,w2,w3,w4; struct worker s; /*定义结构体变量s,用以储存输入的number的值,便于进行比较 */ n=load();
14、/* 加载将要记录的个数 */ do /*该 do- while 循环语句判断是否继续执行该函数*/ do /*该 do- while 循环语句判断是否找到要查找的对象*/ k= =1; printf(nnEnter number that you want to search! number:); scanf(%s,s.number); printf_face();/* 调出显示数据结构项目函数*/ for(i=0;in;i+) /* for 循环语句用来判断原数据信息中是否有与输入职工号相同的职工号 */ if(strcmp(s.number,wori.number)=0) /* 原数据信
15、息中找到与输入职工号相同的职工号 */ k=i; printf_one(k);break; if(k= =1) / *原数据信息中没有找到与输入职工号相同的职工号*/ printf(nnNo exit!please); printf(nnAre you again?nt1).again 2).No and back bb); scanf(%d,&w1); if(w1=2) menu();/* 返回主菜单 */ while(k= =1&w1= =1);/*在没有找到且想再次查找的情况下继续进行循环*/ w4=0;w3=0; if(k!= =1) /* 在查找到的情况下 */ printf(nnW
16、hat do you want to do?nt1).Search another 2).Modify 3).Back menu bb); scanf(%d,&w2); switch(w2) case 1:search1();break;/* 继续按照职工号查找其他对象*/ case 2:w3=modify_data(k,n);break;/*对查找到的对象进行修改 */ case 3:menu();break;/* 返回主菜单 */ while(w2=1); menu();/*返回主菜单 */ /*按职工学历查找模块 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
17、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹流程图 图 5 按职工学历查找模块流程图程序:search2() int i,n,k,w1=1,w2,w3,w4; struct worker s; /*定义结构体变量 s,用以储存输入的 xueli 的值,便于进行比较 */ n=load(); /* 加载将要记录的个数 */ do /*该 do- while 循环语句判断是否继续执行该函数*/ do /*该 do- while
18、 循环语句判断是否找到要查找的对象*/ k=-1; printf(nnEnter xueli that you want to search! xueli:); scanf(%s, xueli ); printf_face();/* 调出显示数据结构项目函数*/ for(i=0;in;i+) /* for 循环语句用来判断原数据信息中是否有与输入职工学历相同的职工号 */ if(strcmp(s. xueli,wori. xueli)=0) /* 原数据信息中找到与输入职工学历相同的职工*/ k=i; printf_one(k);break; if(k=-1) / *原数据信息中没有找到与输入
19、职工学历相同的职工号*/ printf(nnNo exit!please); printf(nnAre you again?nt1).again 2).No and back bb); scanf(%d,&w1); if(w1=2) menu();/* 返回主菜单 */ while(k=-1&w1=1);/* 在没有找到且想再次查找的情况下继续进行循环*/ w4=0;w3=0; 按职工学历查找模块用户作出选择,输入一整型数值返回主菜单修改1,2,还是 3 继续查找名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
20、- - - - - - 第 10 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹if(k!=-1) /*在查找到的情况下 */ printf(nnWhat do you want to do?nt1).Search another 2).Modify 3).Back menu bb); scanf(%d,&w2); switch(w2) case 1:search1();break;/* 继续按照职工学历查找其他对象*/ case 2:w3=modify_data(k,n);break;/*对查找到的对象进行修改 */
21、 case 3:menu();break;/* 返回主菜单 */ while(w2=1); menu();/*返回主菜单 */ (4)插入模块需求分析 该模块的功能是插入职工记录信息并且不能覆盖原有职工信息。流程图 图 6 插入模块流程图插入模块调用加载函数让用户输入要插入的职工信息个数调用整条信息输入函数用户作出选择,输入1or2 2 返回主菜单1 还是 2 1 浏览全部名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 21 页 - - - - - - - - - C
22、语言课程设计实习报告081081 20081001708 张梦莹【程序】/*插入模块 */ add() /*插入模块 */ int i,n,m,k; FILE*fp; n=load(); /* 加载将要记录的个数 */ printf(How many workers are you want to add(0-%d)?:,N-1-n); scanf(%d,&m); /*输入要插入职工信息的个数*/ k=m+n; for(i=n;ik;i+) /*用 for 循环实现 m 个信息的录入 */ printf(nInput %dth workers record.n,i-n+1 ); input(i
23、); /*调用整条职工信息输入函数*/ if(fp=fopen(worker.txt,ab)=NULL) printf(cannot open filen); for(i=n;ik;i+) /* 用 for 循环实现对 m 个信息录入到文件worker.txt */ if(fwrite(&wori,sizeof(struct worker),1,fp)!=1) printf(file write errorn); fclose(fp); printf_back(); /* 一个任务结束时的选择浏览还是返回的函数*/ 1.4.3 公共函数(1)保存函数save(int n) 说明:形参 n 控制
24、保存的个数。程序:void save(int n) FILE *fp; /*定义文件指针 */ int i; if(fp=fopen(worker.txt,wb)=NULL)/*以只写方式为输出打开一个二进制文件,若打不开返回 NULL 值*/ printf(nCannot open filen); for(i=0;in;i+) /* for循环语句作用为读写n 个数据块 */ if(fwrite(&wori,sizeof(struct worker),1,fp)!=1)/*若读写成功,则返回值1*/ printf(file write errorn); fclose(fp); /*关闭文件
25、*/ (2)加载函数load() 说明:该函数可以用来加载所有记录,并且可以返回所有记录的个数。程序:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹int load() FILE *fp; int i; if(fp=fopen(worker.txt,rb)=NULL) /*以只读方式打开二进制文件, 若打不开返回 NULL值*/ printf(nCanno
26、t open filen); return NULL; for(i=0;!feof(fp);i+)/* 在文件关闭之前,向磁盘文件中读入数据块*/ fread(&wori,sizeof(struct worker),1,fp); fclose(fp); return(i-1); /* 返回数据块个数值 */ (3)职工号输入函数no_input(int i,int n) 说明:该函数对输入职工号进行判断,确保输入的职工号唯一。形参i 表示第 i 个职工记录,形参 n 表示总共有 n 个职工记录。程序:void no_input(int i,int n) int j,k,w1; do /*该 d
27、o- while 循环语句用来输入职工号信息并判断号码是否重复*/ w1=0; printf(number:); scanf(%s,wori.number); for(j=0;wori.numberj!=0;j+) /*判断输入的号码是否由0-9 间的数字组成 */ if(wori.numberj9)/*输入数字不是有 0-9 之间的数字组成 */ puts(Input error!Only be made up of (0-9).Please reinput!n); w1=1;break; if(w1!=1) /* w1!=1 表示输入数字正确 */ for(k=0;knn 1).numbe
28、r 2).name 3).cancel and back); printf(Which you needed?: bb); scanf(%d,&c); if(c3|c3|c1); do /*按照选择输出对应数据块*/ switch(c) case 1:no_input(i,n);break; case 2:printf(name:);scanf(%s,wori.name);break; case 3:menu();break; puts(nNow:n); printf_face(); printf_one(i); /* 显示一个记录的函数*/ printf(nAre you sure?nnt1
29、).sure 2).no and remodify 3).back without save in this time bb); scanf(%d,&w1); if(w1=1)save(n); /* 对所输入或修改数据进行保存*/ while(w1=2); return(w1);/*返回保存控制值 */ 1.5 上机操作1.5.1数据源;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 2
30、0081001708 张梦莹1.5.2编译、连接和运行;1.5.3结果;下面是各个模块的截面图:(1) 主菜单函数图 7 主菜单截图(2) 输入模块主界面出现后输入1 回车显示下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹图 8 输入模块截图输入要输入的记录然后逐条增加,并进行职工号是否重复的检查,如重复则显示输入重复请重新输入:如下图:图 9 截图
31、(3) 浏览模块名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹图 10 浏览模块截图(4) 查找模块图 11 截图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告
32、081081 20081001708 张梦莹按职工号查找图 12 按职工号查询截图按学历查找图 13 按学历查询截图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹查找到后进行修改图 14 查询后修改(3)插入职工记录插入一名职工信息后按1 浏览全部职工信息。如下图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
33、 - - - - - 名师精心整理 - - - - - - - 第 19 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹图 15 插入模块截图图 16 插入信息后浏览模块截图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 21 页 - - - - - - - - - C 语言课程设计实习报告081081 20081001708 张梦莹1.6 结束语 -实习心得此次 C 语言课程设计实习虽然只有短
34、短的四天时间,但是我觉得自己收获了很多。以前一直觉得 C 语言是一门和我的专业不太相关的课程,所以学得时候并不是很用心,并且大多数时候都只是为了考试而去学习,但是这次实习是要求我们将所学知识运用到实际中。所以使我开始用心地了解C 程序的编译过程。实习报告编写过程中,我抽到了“ 建立职工信息管理系统 ” 这道题。题目要求写的程序包括职工信息中的职工号,姓名,性别,年龄,学历,工资,住址,电话等。设计的职工信息管理系统具有菜单方式工作,信息录入,信息浏览,信息查询,信息删除和修改等功能。这道题看起来虽然很烦琐,但是理清思路后,题目的编译设计也变得有条理了,根据查看指导书中的其他题目,我发现这些题目都是大同小异的,只要将各功能模块融会贯通并加以适当调整即可,但是还是需要我们自己掌握编程的思路,方法和技巧。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 21 页 - - - - - - - - -