C语言职工信息管理系统实训报告
职工工资管理系统c语言课程实践报告
实践报告1.目的:通过此次综合编程实践,使大学生进一步熟悉和掌握C语言的基本知识,基本编程原理;学习用C语言开发应用程序的方法;进一步熟悉计算机程序设计的基本方法,步骤,培养大学生设计,调试,测试程序能力。
2.程序功能介绍:该程序是用链表编写的职工工资管理系统,主要功能实现职工有关信息的录入,分析,查找,增加,修改,排序等功能。
职工工资管理系统上图是程序的主界面A.1是数据录入的功能提示语句B.2是数据分析的功能提示语句C.3是信息查询的功能提示语句D.4是添加信息的功能提示语句E.5是删除信息的功能提示语句F.6是修改信息的功能提示语句G.7是对信息排序的功能提示语句H.8退出该程序的功能提示语句3.具体流程图:3.程序实现1)输入1进入此函数,执行create函数调用insert函数回到create函数,回到主函数2)执行过1选项后便可以执行2选项,进入如下过程调用show report 函数3)回到主函数界面后,按选项3后进入信息查询的程序,如下4)回到主函数界面后,选择选项4进入一下过程5回到主函数后选择5后,进入删除环节调用analysis函数接着调用show report 函数5)回到主函数后,选择6,进入修改界面回到主函数6)在主菜单上选择7,进入排序项8 退出程序4.程序运行演示,在主界面上选择1,输入若干信息,入以下界面:输入4个人信息。
返回后选择2选项界面的上端是每个人的信息,下端是分析表,反映了整体情况返回主菜单后选择3,以编号为1的员工为例返回主菜单后选择4返回主菜单后,选择5,以2号员工为例选择y确定后显示返回主菜单,选择6 以3号为例选择y,确定返回主菜单后,选择8,退出4.5.代码的调试过程:本人的程序由链表实现,由于对链表的运用不是很熟练,所以花了很长的时间编写该程序,大致编完后,在编译与构建的过程中,同时也遇到了很多困难。
例如,在第一次编译的时候,出现了20多个错误与很多警告。
C++实习报告-职工管理信息系统
C++实习报告-职工管理信息系统学号面向对象应用程序设计课程设计设计说明书职工管理信息系统起止日期:2020年7 月6日至2020 年7 月10日学生姓名班级成绩指导教师(签字)计算机与信息工程学院2020 年7 月10日目录1、设计目的 (3)2、总体设计 (3)3、详细设计: (3)3.1、程序具体功能 (3)3.2、调试分析 (3)4、源程序和运行结果 (4)4.1、源程序 (4)4.2、运行结果.............................. 错误!未定义书签。
4.3、心得体会 (4)职工管理信息系统1、设计目的○1.通过实验实现对学生信息系统的管理操作;○2.进一步掌握和利用C++进行程设计的能力;○3.进一步理解和运用结构化程序设计的思想和方法;○4.初步掌握开发一个小型实用系统的基本方法;○5.学会利用流程图或N-S图表示算法;○6.掌握书写程设计开发文档的能力(书写课程设计报告);2、总体设计3、详细设计:3.1、程序具体功能:(要求详细写明)职工信息包括:职工ID、姓名、性别、出生日期、籍贯、学历、职称、工资、家庭住址、电话等、职务、类型(机关、教师、实验室、研究员等)。
试用面向对象程序设计思想,设计奖学金申请管理信息系统,使之能提供以下功能:1、职工信息录入功能2、职工信息文件读取功能3、职工信息文件保存功能4、职工信息浏览功能5、查询功能:1)按ID查询2)按职工类型查询6、修改功能:根据ID修改相应信息;7、删除职工功能:删除相应ID的职工信息。
8、排序功能(由用户指定按照职工类型或ID;指定升序或降序)9、退出3.2、调试分析(要求详细写明)上机调试之前我们对所编的程序作了纸面上的检查,先改正一些不该犯错误,如{ }没有搭配完整,漏写,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决、避免的。
而且还可以减少机器时间。
往往一连串的错误是由于漏写或写错一个字符引起的。
C语言职工信息管理报告电气LR
C语言实训报告职工信息管理系统班级:负责人:组员:指导教师:日期:C语言课程设计任务书一、题目:职工信息管理系统二、目的和要求目的:要求熟练掌握C语言的基本知识和编辑技能;基本掌握结构化程序设计的基本思路和方法。
2.1 基本功能和要求(1)系统必须是菜单操作方法,进入功能必须打开菜单,并且每个菜单都有相应的帮助,菜单之间能够灵活的切换。
用户分三种权限:一般的员工用户,员工工资管理员,系统管理员。
(2)根据登陆方式,选择相应的操作方式;如果是一般的员工用户(默认权限为r即只读),就只能按照各种方式查看数据,并且只能查看自己的信息和工资情况,并且可以网上修改自己的信息等等功能;如果是员工工资管理员,除了可以查看数据外还能编辑员工基本信息数据。
如果是系统管理员,他可以拥有员工工资管理员的所有功能,并且可以创建用户,并且可以修改员工的工资体系和大小。
(3)能够对员工基本信息、工资的基本信息、工资的扣除费用信息进行统计,统计的结果能够以表格的形式来表示。
(4)员工基本信息、工资的基本信息、工资的扣除费用信息存储在相应的文件中。
数据的组织形式要求必须使用链表或者二叉树来实现.(5) 登录的用户名和密码应该存储在单独的文件中,最好做一定的加密算法。
(6)系统要求界面友好,易操作.2。
2 统计功能(1)统计每个部门的员工工资、整个公司的员工工资、员工的信息等。
(2)统计全公司总金额、每个部门的员工工资、扣税信息、工资的扣除信息、奖金、特别奖金等等。
(3)统计全公司工资最高的人员前10名,并对它们进行排序。
(4)按部门统计工资最高的人员前10名,并对它们进行排序。
(5)统计扣除工资最多的10个人。
(6)工资信息其它方面的统计。
(7)按照技术职称统计工资信息。
(8)按照工龄职称统计工资信息。
2.3 查找功能(1)可以根据员工的姓名查找。
(2)可以根据工资卡号查找。
(3)可以根据身份证号查找。
(4)可以根据部门查找。
原创c语言职工管理系统课程设计报告
原创C语言职工管理系统课程设计报告1. 引言职工管理系统是一个可以对职工信息进行录入、查询、修改和删除的软件系统。
在这个项目中,我们将使用C语言来实现这个系统。
通过设计这个项目,我们旨在提高学生们对C语言的理解和应用能力。
2. 项目背景和目的职工管理系统是一个常见的实际应用场景,他在许多企事业单位中都有使用。
通过设计和实现这个系统,我们可以帮助管理人员更有效地管理职工信息,提高管理效率。
我们的目标是设计一个简单易用、功能完善的职工管理系统,可以实现以下功能:职工信息录入、职工信息查询、职工信息修改和职工信息删除。
3. 系统设计我们将使用C语言来实现职工管理系统。
系统设计主要包括以下几个方面的功能模块:3.1 菜单功能模块在这个模块中,我们将设计一个菜单来显示系统的功能选项。
用户可以通过输入相应的选项来进入不同的功能模块。
3.2 职工信息录入功能模块在这个模块中,用户可以输入职工的信息,包括职工编号、职工姓名、职工性别、职工年龄等。
系统将会将这些信息保存到一个文件中以后的查询和修改操作。
3.3 职工信息查询功能模块在这个模块中,用户可以输入职工的编号或者姓名来查询职工的信息。
系统将会根据用户输入的信息在文件中查找相应的职工信息并显示出来。
3.4 职工信息修改功能模块在这个模块中,用户可以输入职工的编号来修改职工的信息。
用户需要输入修改后的信息,并将更新后的信息保存到文件中。
3.5 职工信息删除功能模块在这个模块中,用户可以输入职工的编号来删除职工的信息。
系统将会在文件中查找相应的职工信息并删除。
4. 系统实现系统实现主要有以下几个步骤:4.1 设计程序结构首先,我们需要设计系统的程序结构。
我们将使用函数来实现不同功能模块,通过调用不同的函数来实现系统不同的功能。
4.2 实现菜单功能模块我们将使用printf函数来输出菜单,并使用scanf函数来获取用户的输入。
根据用户的输入,我们将使用switch语句来进入相应的功能模块。
c语言职工信息管理系统设计报告
c语言职工信息管理系统设计报告一、引言职工信息管理系统是一种常用的企业信息化系统,旨在帮助企业更好地管理员工信息,提高管理效率和信息安全性。
本文介绍的是一种基于C语言的职工信息管理系统的设计与实现。
二、系统需求分析1.系统功能(1)员工信息录入:可以录入员工的个人信息,包括姓名、性别、出生日期、身份证号码、联系电话、职务等信息。
(3)员工信息修改:可以修改员工的个人信息。
(5)员工信息统计:可以对员工的信息进行统计分析,统计人数、性别比例等。
2.系统开发环境本系统需要运行在Windows 7及以上操作系统上,开发工具使用Dev-C++。
三、系统设计与实现2.系统模块设计(1)员工信息录入模块:1)输入员工的各项信息;2)自动生成员工编号;3)将员工信息写入文件保存。
1)按照不同的条件进行查询;2)查询后输出符合条件的员工信息。
2)修改员工信息;1)对员工信息进行统计分析;2)输出统计结果。
(6)系统菜单模块:1)显示系统功能菜单;2)接收用户输入进行相应操作。
3.代码实现(1)主函数模块:{system("color 3f"); //设置控制台颜色menu(); //调用主菜单函数return 0;}void insert()employee emp;ofstream fout("employee.txt", ios::app);cout << "请输入员工姓名:";cin >> ;emp.no = rand() % 1000 + 1;fout << emp.no << " " << << " " << emp.gender << " " << emp.birthday << " " << emp.id << " " << emp.phone << " " << emp.job << endl;cout << "添加成功!" << endl;fout.close();int choice;cout << "请选择查询条件(1.姓名 2.性别 3.出生日期 4.身份证号码 5.联系电话 6.职务):";case 1:break;default:cout << "编号\t\t姓名\t性别\t出生日期\t身份证号码\t\t联系电话\t职务" << endl;if (choice == 1 && == ) //按照姓名查询if (no == emp.no)elseint manCount = 0;womanCount++;四、系统测试与评估我们采用黑盒测试,使用不同的测试用例进行测试。
员工管理系统实验报告
一、实验目的1. 熟练掌握C语言编程技能,提高编程能力。
2. 理解并应用结构体、数组、链表等数据结构。
3. 学会使用文件操作,实现数据的持久化存储。
4. 设计并实现一个员工管理系统,提高实际编程能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容员工管理系统主要包括以下功能:1. 数据录入:录入员工信息,包括姓名、工号、性别、出生年月、部门、职位、联系方式等。
2. 数据显示:显示所有员工信息。
3. 数据查找:按工号或姓名查找员工信息。
4. 数据修改:修改指定员工的个人信息。
5. 数据删除:删除指定员工的个人信息。
6. 数据排序:按工号、姓名、部门等字段对员工信息进行排序。
四、实验步骤1. 创建员工结构体```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_NAME_LEN 50#define MAX_DEPT_LEN 50typedef struct {int id; // 员工工号char name[MAX_NAME_LEN]; // 员工姓名char gender; // 性别('M'、'F')char birth[11]; // 出生日期("YYYY-MM-DD") char dept[MAX_DEPT_LEN]; // 部门char position[MAX_NAME_LEN]; // 职位char contact[MAX_NAME_LEN]; // 联系方式} Employee;```2. 创建员工信息文件```cvoid createFile() {FILE fp = fopen("employee.dat", "wb");if (fp == NULL) {printf("创建文件失败!\n");exit(1);}fclose(fp);}```3. 数据录入```cvoid inputEmployee(Employee e) {printf("请输入员工工号:");scanf("%d", &e->id);printf("请输入员工姓名:");scanf("%s", e->name);printf("请输入性别(M/F):");scanf(" %c", &e->gender);printf("请输入出生日期(YYYY-MM-DD):"); scanf("%s", e->birth);printf("请输入部门:");scanf("%s", e->dept);printf("请输入职位:");scanf("%s", e->position);printf("请输入联系方式:");scanf("%s", e->contact);}```4. 数据显示```cvoid displayEmployee(Employee e) {printf("工号:%d\n", e->id);printf("姓名:%s\n", e->name);printf("性别:%c\n", e->gender);printf("出生日期:%s\n", e->birth);printf("部门:%s\n", e->dept);printf("职位:%s\n", e->position);printf("联系方式:%s\n", e->contact);}```5. 数据查找```cvoid searchEmployee(Employee e) {int id;printf("请输入要查找的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {displayEmployee(e);break;}}fclose(fp);}```6. 数据修改```cvoid modifyEmployee(Employee e) {int id;printf("请输入要修改的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb+");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {displayEmployee(e);printf("请输入新的员工姓名:");scanf("%s", e->name);printf("请输入新的性别(M/F):");scanf(" %c", &e->gender);printf("请输入新的出生日期(YYYY-MM-DD):"); scanf("%s", e->birth);printf("请输入新的部门:");scanf("%s", e->dept);printf("请输入新的职位:");scanf("%s", e->position);printf("请输入新的联系方式:");scanf("%s", e->contact);fseek(fp, -sizeof(Employee), SEEK_CUR);fwrite(e, sizeof(Employee), 1, fp);break;}}fclose(fp);}```7. 数据删除```cvoid deleteEmployee(Employee e) {int id;printf("请输入要删除的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb+");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}Employee temp;int flag = 0;while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {flag = 1;break;}}if (flag) {fseek(fp, -sizeof(Employee), SEEK_CUR);fread(&temp, sizeof(Employee), 1, fp);fwrite(&temp, sizeof(Employee), 1, fp);printf("删除成功!\n");} else {printf("未找到指定员工!\n");}fclose(fp);}```8. 数据排序```cvoid sortEmployee(Employee e, int (cmp)(const void , const void )) { qsort(e, 10, sizeof(Employee), cmp);}```9. 主函数```cint main() {Employee e;createFile();while (1) {printf("1. 数据录入\n");printf("2. 数据显示\n");printf("3. 数据查找\n");printf("4. 数据修改\n");printf("5. 数据删除\n");printf("6. 数据排序\n");printf("0. 退出\n");printf("请选择操作:");int choice;scanf("%d", &choice);switch (choice) {inputEmployee(&e);break;case 2:// 假设已经有10个员工信息for (int i = 0; i < 10; i++) { displayEmployee(&e);}break;case 3:searchEmployee(&e);break;case 4:modifyEmployee(&e);break;case 5:deleteEmployee(&e);break;case 6:sortEmployee(&e, cmpById);break;case 0:return 0;printf("无效的选项!\n");}}return 0;}```五、实验总结通过本次实验,我们学习了C语言编程的基本技能,掌握了结构体、数组、链表等数据结构,以及文件操作。
C语言课程设计报告:职工信息管理系统程序设计
1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");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();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
职工信息管理系统c语言课程设计报告
职工信息管理系统c语言课程设计报告本职工信息管理系统的设计旨在提高职工信息管理的效率和准确度,方便企业对职工信息的管理和维护。
二、设计内容1. 系统结构本系统采用模块化设计,包括登录模块、职工信息模块、数据查询模块、数据修改模块、数据删除模块、数据添加模块和退出系统模块。
2. 系统实现(1) 登录模块本系统采用账号密码登录方式,用户需输入正确的账号和密码才能进入系统。
(2) 职工信息模块本模块主要功能是显示职工的基本信息,包括姓名、性别、年龄、工号、职位等。
(3) 数据查询模块本模块可以查询所有职工的基本信息,用户可以输入关键字进行模糊查询。
(4) 数据修改模块本模块可以修改已有职工的基本信息,包括姓名、性别、年龄、工号、职位等。
(5) 数据删除模块本模块可以删除已有职工的基本信息,用户需要输入正确的工号才能进行删除操作。
(6) 数据添加模块本模块可以添加新的职工信息,用户需要输入正确的信息进行添加操作。
(7) 退出系统模块本模块可以退出系统,返回到登录界面。
三、设计思路本系统采用文件读写的方式进行数据存储,所有职工的信息都保存在一个文本文件中。
每次用户进行操作时,系统会先读取文件中的数据,进行相应的操作后再将数据重新写入文件,保证数据的正确性和完整性。
四、设计效果经测试,本职工信息管理系统可以准确地进行数据的增删改查操作,并且可以保持数据的一致性和完整性,提高了职工信息管理的效率和准确度。
五、总结本系统的设计和实现对于提高企业的职工信息管理效率和准确度具有重要意义,同时也为学生深入掌握c语言编程技术提供了一个很好的实践机会。
c语言程序设计 员工信息管理系统
实验题目:员工信息管理系统一、实验目的1.熟悉c语言的编译连接和运行过程。
2.掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if语句及switch语句的运用方法及嵌套应用方法。
4.掌握实现循环结构的三种语句while、do-while.、for 的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容1.编写程序并进行调试运行。
2.输入员工资料,并保存于文件。
每个员工包含信息如:工作证号、姓名、性别、工龄、学历、职务、电话、工资等。
3.对已存入的员工信息进行更新操作,包括添加一个员工信息、删除某个员工信息和修改某个员工信息。
4.通过输入姓名、工作证号的方式查询员工信息。
5.最后输出员工信息,供需要时打印。
二、需求分析1.该程序可用于对企业员工情况基本信息的存储、更新、查询、输出等操作,以实现对企业员工的管理。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多个员工信息,也可对个别员工信息进行适当的删除或修改。
以便随时更新员工信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某个员工信息,并且可根据两种不同的方法查询:按工作证号查询和按姓名查询。
以满足不同的需要。
四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:2.模块功能说明对各个模块进行功能的描述(1).输入模块:录入需要管理的员工信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
(2).添加模块:可添加一个或多个员工信息,并将所添加员工信息保存,方便查找。
(3).删除模块:可对辞职或休假的员工信息做删除处理。
(4).修改模块:可根据需要对多个员工信息进行修改,也可随时对个别项进行修改。
C语言课程设计---职工管理系统设计报告
课程名称:程序设计语言课程设计设计题目:职工信息管理系统设计学院:应用技术学院专业:电子信息工程目录:摘要: (2)任务书: (2)总结与体会: (10)摘要:通过这次的短学期,在老师的辅导下,我完成了课程设计。
通过课程设计的完成对C和C++有更深的了解。
我做的课程设计题目是职工信息管理系统设计,我主要用到了结构体,结构体数组,指针,文件等等。
对函数的调用,和指针有了更深的理解。
但我做的这个课程设计,职工信息管理系统还存在不足,还希望老师的指点。
我的这个管理系统能处理的是对公司员工的信息存储,还有对职工的查找和排序,还有对职工的信息修改。
有不足的地方还请老师指点。
昆明理工大学课程设计任务书应用技术学院学院电子信息工程专业2009 级学生姓名(学号):袁瑞(200911513127)课程设计目的:通过设计一个较为简单的管理系统,进一步熟悉C++中类的概念、类的封装、继承的实现方式。
了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。
课程设计(论文)题目及具体内容:写程序题目:职工信息管理系统设计设计说明与要求:职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)(3)职工信息浏览功能(4)查询和排序功能:按工资查询、按学历查询(5)职工信息删除、修改功能(4)各函数调用关系(流程图):(6)编码及调试:(注:此系统由三个人设计,本人只设计了其中的两个功能)功能二. 修改员工信息模块:此功能代码如下:modify() /*修改员工信息*/{struct people p;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n请记住要修改的员工号.任意键继续...\n");getch();puts("\n\n");}printf_one(i);}do{printf("\n\n请输入要修改信息的员工号! 员工号:");scanf("%s",p.num);for(i=0;i<n;i++)if(strcmp(p.num,people[i].num)==0){k=i;p=people[i];}if(k==-1)printf("\n\n不存在,请重试");}while(k==-1);printf_face();printf_one(k);w1=modify_data(k,n);if(w1==1){printf("\n操作成功^_^.\n\n继续修改吗?\n\n\t 1).是2).保存并返回\t[ ]\b\b"); scanf("%d",&w0);w2=1;}else{w0=0;if(w2==1)people[k]=p;}if(w0!=1&&w2==1)save(n);}while(w0==1);system("cls");menu();}调试截图:功能三. 员工信息查询模块:此功能代码如下:search() /*查找功能*/ {int i,n,k,w1=1,w2,w3,w4,m,a;struct people p;n=load();{printf("\n\n以哪种方式查找? \n\t1).学历2).员工号[ ]\b\b"); scanf("%d",&m);switch(m){case 1:do{ k=-1;printf("\n\n请输入学历! 学历:");scanf("%s",p.xueli);printf_face();for(i=0;i<n;i++)if(strcmp(p.xueli,people[i].xueli)==0){ k=i;printf_one(k);break;}if(k==-1){ printf("\n\n没有该学历的员工");printf("\n\n重新查找吗?\n\t1).是2).否,返回[ ]\b\b"); scanf("%d",&w1);if(w1==2)printf_back();}}while(k==-1&&w1==1);break;case 2:do{k=-1;printf("\n\n输入您要查询的员工号! 员工号:");scanf("%s",p.num);printf_face();for(i=0;i<n;i++)if(strcmp(p.num,people[i].num)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\n该员工号不存在");printf("\n\n是否重新选择?\n\t1).是2).否,离开[ ]\b\b"); scanf("%d",&w1);if(w1==2)printf_back();}while(k==-1&&w1==1);break;}w4=0;w3=0;if(k!=-1){printf("\n\n请选择操作\n\t 1).继续查找2).修改3).删除4).返回菜单[ ]\b\b"); scanf("%d",&w2);switch(w2){case 2:w3=modify_data(k,n);break;case 3:{printf("\n确定吗?\n\t 1).确定2).返回[ ]\b\b");scanf("%d",&w4);if(w4==1)for(a=k;a<n;a++){strcpy(people[a].num,people[a+1].num);strcpy(people[a].name,people[a+1].name);strcpy(people[a].sex,people[a+1].sex);strcpy(people[a].age,people[a+1].age); /*删除所选员工信息*/ strcpy(people[a].xueli,people[a+1].xueli);strcpy(people[a].gongzi,people[a+1].gongzi);strcpy(people[a].address,people[a+1].address);strcpy(people[a].telephone,people[a+1].telephone);}break;}}if(w3==1||w4==1){save(n);printf("\n\n操作成功.^_^.");printf("\n\n请选择操作\n\t 1).继续查找2).返回[ ]\b\b" );scanf("%d",&w2);}}}while(w2==1);system("cls");menu();}此功能截图:员工信息是用用文本文件存储的,资料分别存储在这些文本文件中,具体如下:总结与体会:通过本次的课程设计,对C和C++又更一步的了解,了解了C上的结构体,并对结构体有了熟练的掌握,并且熟悉了指针,通过指针可以使程序很好的实现,结构体类型是一个很好的类型,在现实生活中,应用结构体可以使问题很好的解决。
c语言实验总结与反思(通用3篇)
c语言实验总结与反思(通用3篇)c语言实验总结与反思篇1一、需求分析:1.需求概述设计一个职工信息管理系统,使之能提供以下功能:(1)职工信息录入功能(2)职工信息浏览功能(3)职工信息删除功能(4)职工信息修改功能(5) 职工信息查询功能2.需求说明(1)职工信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话,并且职工号要求不重复。
(2)录入的职工信息要求用文件形式保存,并对其进行浏览、查询、修改、删除等基本操作。
(3)对职工的信息分别按职工号、性别、姓名、工资四种方式进行查询,并返回所有符合条件的职工信息。
(4)对职工信息的修改应该逐个进行,一个职工的信息修改不应影响其他职工的信息。
(5)所设计的系统应以菜单的方式工作,应为用户提供清晰的使用提示,依据用户的选择进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。
二、总体设计1.功能划分该系统可以按功能进行模块划分,如下图所示:其中:(1)菜单选择模块完成用户的选择,此模块也是职工信息管理系统的入口,用户所要进行的所有操作需要在此模块中选择,并调用相对应的模块实现相应的功能。
(2)信息输入模块完成信息的录入功能,输入的信息包括:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话。
(3)信息浏览模块完成对所有的职工的信息的显示。
(4)信息查询模块分四种查询方式:按职工号查询、按性别查询、按姓名查询、按职务查询。
并且输出相对应且符合要求的职工信息。
(5)信息修改模块完成的是职工信息的修改功能。
(6)信息删除模块完成的是职工信息的删除功能。
2.数据结构本系统中的主要数据结构为职工的信息,其中包含:职工号、姓名、性别、出生年月、学历职务、工资、住址、电话等,其中的出生年月用结构体表示,其中又包含:出生的年份、出生的月份、出生的日期。
3.程序流程系统的执行应从功能菜单的选择开始,依据用户的选择进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
职工信息管理C语言程序设计报告
目录一系统功能 (2)1系统需求分析 (2)2 系统功能总体设计 (2)3.输入输出功能 (2)4.总体设计流程图 (3)二概要设计 (4)1 抽象数据类型定义 (4)2 系统模块组成及其功能 (5)三详细设计 (6)1 用C语言定义相关数据 (6)2 各模块的类C码算法 (6)1 职工信息显示函数 (6)2 职工信息的追加函数 (6)3 职工信息修改函数 (7)4 职工信息删除函数 (9)5 职工信息查询函数 (10)6职工信息排序函数 (11)7退出函数 (11)3 函数的调用关系图 (11)四调试分析(包括流程图和截图) (12)1 显示模块N-S图 (12)2追加模块的流程图 (13)3.查询模块的流程图 (14)4.排序模块的流程图 (15)5.修改模块的流程图 (16)6删除模块流程图 (17)7.各个模块的截图及说明 (20)五总结 (26)六参考文献 (26)七程序原代码 (27)一系统功能1系统需求分析这是一个对职工信息管理的系统, 通过这个系统可以显示所有职工的信息并可以对职工信息进行追加、修改、删除、查询、排序等多种功能的操作.2 系统功能总体设计程序的功能: 随着计算机科学的发展, 现在我们不可能还是用手写的方式对职工的信息进行管理, 这就需要设计一个系统运用计算机来实现对职工信息的管理.该系统用数组实现对职工信息数据的存储, 且总体数据结构应用文件类型数据, 文件类型为结构体数组, 这就要建立数据库来存放职工的信息, 通过指针文件来实现对数据库里信息的读和写, 需要存储的职工信息包括职工号、职工姓名、性别、年龄、学历、工资、部门、职称等等, 最后通过函数的调用来实现对职工信息的管理.3.输入输出功能数据库中的数据全通过fread()函数来读取数据, 并且通过fwrite函数将修改过后的数据放到一个新的文件里去, 从而实现的系统的输入输出功能。
4.总体设计流程图二概要设计1 抽象数据类型定义Struct stu;{long int zgh; /*职工号*/Char name[10]; /*姓名*/Char xb[4]; /*性别*/Int nl; /*年龄*/Char xl[10]; /*学历*/Double gz; /*工资*/Char bm[15]; /*部门*/Char zc[10]; /*职称*/}s[40]2 系统模块组成及其功能主函数 void main()显示函数 void Disp()功能 : 显示数据库中职工的所有信息。
c语言课程信息管理系统实训总结
C语言课程信息管理系统实训总结一、项目背景1.1 项目目的本次实训的项目是为了让学生通过实践的方式提高C语言编程能力,了解信息管理系统的设计与实现。
1.2 项目内容通过本次实训,学生需要设计和实现一个基于C语言的课程信息管理系统,包括学生信息管理、课程信息管理、成绩管理等功能模块。
1.3 项目意义通过这个项目,学生将掌握C语言编程的基本技巧,加深对信息管理系统的理解,提高问题分析和解决能力。
二、项目实施过程2.1 项目需求分析在项目开始之前,首先进行了对需求的分析,明确了系统需要实现的功能模块和具体需求,为后续的开发工作奠定了基础。
2.2 系统设计基于需求分析的基础上,进行了系统的整体设计和模块设计,确定了系统的架构和各个模块之间的关系,明确了每个模块的功能和实现方式。
2.3 编码实现在系统设计完成后,学生开始进行编码实现,根据设计文档和模块需求进行编码工作,实现每个功能模块的具体逻辑。
2.4 测试调试编码实现完成后,进行了系统的测试和调试工作,确保系统的稳定性和功能的正确性,对系统进行了全面的测试覆盖。
三、项目总结与反思3.1 项目成果通过本次实训,学生们成功地设计并实现了一个完整的C语言课程信息管理系统,包括学生信息管理、课程信息管理、成绩管理等功能模块,实现了项目的预期目标。
3.2 学习收获通过这个项目,学生们不仅加深了对C语言编程的理解和掌握,还了解了信息管理系统的设计和实现方法,培养了问题分析和解决能力,提高了团队协作能力。
3.3 反思与展望在项目实施的过程中,我们也发现了一些问题和不足,比如需求分析不够清晰、部分模块设计不够合理等,对这些问题进行了总结和反思,并为未来的项目实施提出了改进和完善的建议。
四、结语通过本次C语言课程信息管理系统实训,学生们不仅掌握了C语言编程的基本技巧,而且加深了对信息管理系统的理解,提高了问题分析和解决能力。
希望学生们能够将实训中所学到的知识应用于实际工作中,不断提高自己的技术水平,为未来的职业发展打下坚实的基础。
C语言职工信息管理系统实训报告
程序设计工程训练报告职工信息管理系统课程名称C语言程序设计工程训练姓名院(系)专业班级学号指导教师目录1 需求分析 (1)2 系统总框图和功能模块说明 (1)2.1 系统总框图 (1)2.2 功能模块说明 (2)3 系统设计 (2)3.1 主要结构体 (2)3.2主要功能函数 (3)3.3 关键函数的流程图 (4)4 系统调试 (4)5 总结 (9)6 源程序清单 (10)1 需求分析职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话(职工号不重复)。
试设计职工信息管理系统,使之能提供以下功能:●系统以菜单方式工作●职工信息录入功能(职工信息用文件保存)--输入●职工信息浏览功能--输出●职工信息查询功能-算法(其中查询方式可以按学历查询、按职工号查询等)●职工信息删除、修改功能2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明1.菜单模块:显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。
2.输入模块:输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的void input()函数来实现。
3.保存模块:将内存中职工的信息输出到磁盘文件中,可以通过自己定义的void save(int)函数来实现。
4.浏览模块:浏览所有职工的相关信息,通过自己定义的void display()函数来实现。
5.删除模块:删除需要删除的职工的所有信息,通过自己定义的void del()函数来实现。
6.添加模块:添加需要添加的职工的相关信息,通过自己定义的void add()函数来实现。
7.按职工的的学历查询模块:可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。
8.按职工的电话号码查询模块:可以按职工的电话来查询职工的相关信息,通过自己定义的void search_tel函数来实现。
C语言课程设计报告 (职工信息管理)
}
printf("删除成功!");
printf("删除成功后的职工信息如下:\n");
printf("姓名\t工号\t部门\t工资\t职位\n");
for(i=0;i<10;i++)
printf("%s\t%d\t%s\t%d\t%s\n",person[i].name,person[i].num,person[i].apartment,person[i].salary,person[i].duty);
}
void Delete()
{
int m,i,n,j;
printf("删除某个职员信息时:\n");
printf("请输入你要删除的职员号:");
scanf("%d",&m);
for(i=0;i<10;i++)
{
if(person[i].num==m)
{
printf("职工信息找到!!!信息如下:\n");
C语言课程设计报告
题目:职工信息管理系统
学 院信息工程 __________
专 业计算机科学与技术 ________________
年级班别一年级〈4〉班 _____________
学 号2012051449 __________
学生姓名张 霞 ______
指导教师丁富华 _______
成 绩_
一、实验报告
printf("请选择您的操作:\n");
C语言课程设计报告职工信息管理系统[1] (1)
课程设计报告一C语言课程设计的目的设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)(3)职工信息浏览功能(4)职工信息查询功能,查询方式可按学历查询或按职工号查询(5)职工信息删除修改功能(可选项)二课程设计报告正文1题目要求设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
设计一职工信息管理系统,使之能提供以下功能:(6)系统以菜单方式工作(7)职工信息录入功能(职工信息用文件保存)(8)职工信息浏览功能(9)职工信息查询功能,查询方式可按学历查询或按职工号查询(10)职工信息删除修改功能(可选项)2需求分析根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择。
3总体设计根据上面的需求分析,可以将这个系统设计分为以下模块:数据添加、数据查找、数据修改、数据删除、数据输出.系统功能模块如下:4详细设计1 主函数主函数设计要简洁,只提供部分函数的调用。
其中各功能模块用菜单方式选择。
【程序】void main(){int m;while(1){ printf(”\n\n\n\t\t ______________________________________\n");printf("\t\t 欢迎进入内蒙古科技大学员工信息系统\n”);printf(”\t\t 设计者:计算机—3班学号1076807334\n”);printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(”\n\t\t\t\t添加,请按1");printf(”\n\t\t\t\t查找,请按2”);printf("\n\t\t\t\t修改,请按3");printf("\n\t\t\t\t删除,请按4");printf("\n\t\t\t\t输出,请按5”);printf("\n\t\t\t\t退出,请按0\n");scanf("%d”,&m);if(m>=0&&m<=5){switch(m){case 1:append();break;case 2:search();break;case 3:modify();break;case 4:delete();break;case 5: output();break;case 0: exit();}printf(”\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}2 数据添加【程序】void append(){if((fp=fopen(”worker.xls","a"))==NULL){printf("\n不能打开该文件!”);exit();}printf(”\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\n”);scanf(”%s%s%s%s%s%s%s%s%s",one。
职工管理系统课程设计报告c语言
职工管理系统课程设计报告c语言一、引言职工管理系统是一个针对公司或组织内部职工信息管理的软件系统,主要用于记录职工的基本信息、工作情况、考勤记录等,方便管理人员进行数据统计和分析。
本文将介绍一个基于C语言的职工管理系统的设计与实现。
二、系统设计1. 系统功能职工管理系统主要包括以下功能模块:•添加新职工信息•修改职工信息•删除职工信息•查询职工信息•统计各部门职工人数•统计各职工职务人数2. 数据结构为了有效地存储和管理职工信息,系统采用了以下数据结构:•职工信息结构体•部门信息结构体3. 主要算法系统主要采用以下算法实现各功能模块:•添加职工信息:通过链表添加新结点•修改职工信息:更新结点中的字段信息•删除职工信息:在链表中删除指定结点•查询职工信息:根据输入的关键词在链表中查找•统计职工人数:遍历链表统计人数•统计职务人数:遍历链表统计各职务人数三、系统实现系统采用C语言编写,通过文件读写实现数据的持久化存储。
程序运行时,首先读取保存在文件中的职工信息并加载到内存中,用户可以通过交互式界面选择相应功能进行操作。
操作完成后,系统会将数据写回文件,保证数据的持久性。
四、系统优化与改进为了提高系统的性能和用户体验,可以考虑以下改进方案:•引入数据库存储,提高数据读写效率•添加更多的查询条件,提供更灵活的查询功能•增加权限管理模块,限制不同用户的操作权限•完善异常处理机制,提高系统的稳定性和可靠性五、总结通过本次课程设计,我们深入学习了C语言的应用,掌握了职工管理系统的设计与实现方法。
未来可以基于此系统进行更多功能的扩展和优化,提高系统的实用性和适用性。
以上是本文对职工管理系统课程设计报告的详细介绍,希望能对读者有所帮助。
职工信息管理系统C语言课程设计报告
目录1、前言。
32、需求分析。
33、总体设计。
34、详细设计。
45、程序清单。
56、调试过程。
187、结束语。
228、参考文献。
221.前言随着信息技术在越来越深入而广泛的应用,管理系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科。
任何一个单位要生存要发展要高效率的把内部活动有机的组织起来。
就必须建立与自身相适应的信息管理系统。
本组设计的是一个关于职工信息管理的数据库系统。
通过这个系统管理员可以简洁方便的对职工信息进行增加.删除.修改等功能。
用户也可以通过这个系统对职工信息进行查询等功能。
建立一个“职工信息管理系统”。
系统以菜单方式工作。
编写有职工基本信息,包括职工编号、姓名、部门、职称、基本工资、加班工资、奖金和总工资构成。
并且要求(1)添加职工的记录(2)查询职工(分别按职工编号和姓名)(3)对职工数据排序(分别按总工资和基本工资的降序)(4)删除职工记录(5)修改职工记录(6)部门职工分析(平均工资、各种职称所占的百分比)(7)输出职工信息表等基本操作。
建立职工信息管理的文件。
2、需求分析根据要设计的职工信息管理系统可以知道职工数据由职工编号、姓名、部门、职称、基本工资、加班工资、奖金和总工资构成。
功能要求:(1)添加职工的记录(2)查询职工(分别按职工编号和姓名)(3)对职工数据排序(分别按总工资和基本工资的降序)(4)删除职工记录(5)修改职工记录(6)部门职工分析(平均工资、各种职称所占的百分比)(7)输出职工信息表3.总体设计根据上面的需求分析,可以将这个系统设计分为以下模块:增加职工信息、删除职工信息、查询职工信息、修改职工信息、插入职工信息、排序、保存职工信息、显示职工信息。
系统功能模块如下:4.详细设计(1).主函数:创建一个链表,并使用指针。
void main(){STR *head,*p;//,*q;printf("\n\n\t\t\t你好!我觉得您在进行其他的操作之前是不是应该先创建数据?\n\n");Interface();//界面显示函数head=(STR *)malloc(sizeof(STR));p=head;//q=p;while(1){switch(a){case 0:{printf("\n\n\t\t\t这个程序已退出……\n\n");exit(0);}}(2).定义各部分功能函数:case 1:creat(head);break;case 2:found(head);break;case 4:Delete(head);break;case 7:print(head,0);break;case 5:amend(head);break;case 3:sort(head);break;case 6:aver(head);break;(3)菜单函数:void Interface()//界面显示函数{printf("\n\n");printf("\t\t\t*********************************************\n");printf("\t\t\t(1)添加职工的记录\n");//gaodingprintf("\t\t\t(2)查询职工(分别按职工编号和姓名)\n");//printf("\t\t\t(3)对职工数据排序(分别按总工资和基本工资)\n");printf("\t\t\t(4)删除职工记录\n");//printf("\t\t\t(5)修改职工记录\n");//printf("\t\t\t(6)部门职工分析(平均工资,各种职称所占的百分比)\n");printf("\t\t\t(7)输出职工信息表\n");//printf("\t\t\t(0)退出程序\n");//printf("\t\t\t********************************************\n");printf("\t\t\t请输入你要执行的命令\n\t\t\t");5、程序清单#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct str{// struct str *last;struct str *next;char num[20],name[5],bumen[10],title[10];int money1,money2,money3,money4;}STR;int a;int Delete(STR *);void creat(STR *);void Interface();void print(STR *head,int i);void amend(STR *);void found(STR *);void sprt(STR *);void aver(STR *);void exchange(STR *,STR *);//*************************************************************** void Interface()//界面显示函数{printf("\n\n");printf("\t\t\t*********************************************\n");printf("\t\t\t(1)添加职工的记录\n");//gaodingprintf("\t\t\t(2)查询职工(分别按职工编号和姓名)\n");//printf("\t\t\t(3)对职工数据排序(分别按总工资和基本工资)\n");printf("\t\t\t(4)删除职工记录\n");//printf("\t\t\t(5)修改职工记录\n");//printf("\t\t\t(6)部门职工分析(平均工资,各种职称所占的百分比)\n");printf("\t\t\t(7)输出职工信息表\n");//printf("\t\t\t(0)退出程序\n");//printf("\t\t\t********************************************\n");printf("\t\t\t请输入你要执行的命令\n\t\t\t");scanf("%d",&a);while(1){if(a>7||a<0)printf("输入错误请从新输入\n");elsebreak;printf("\t\t\t请输入你要执行的命令\n\t\t\t");scanf("%d",&a);}system("pause");system("cls");}//*********************************************************//*********************************************************//*********************************************************//*********************************************************创建void creat(STR *p){int i=1;//用来计数STR *q,*head;head=p;q=p;printf("请输入编号姓名部门职称基本工资加班工资奖金(以‘#’号结束)\n");printf(" %d ",i);scanf("%s%s%s%s%d%d%d",p->num,p->name,p->bumen,p->title,&p->money1,&p->money2,& p->money3);//getchar();p->money4=p->money1+p->money2+p->money3;while(1){i++;p=(STR *)malloc(sizeof(STR));q->next=p;// p->last=q;printf(" %d ",i);scanf("%s",p->num);if(p->num[0]=='#')break;q=p;scanf("%s%s%s%d%d%d",p->name,p->bumen,p->title,&p->money1,&p->money2,&p->money3 );p->money4=p->money1+p->money2+p->money3;// printf("%d\n",p->money4);}q->next=NULL;// head->last=NULL;print(head,1);system("pause");p=head;printf("已经输入完毕……\n");printf("\t\t\t*******************************\n");printf("\t\t\t(1)返回首页\n");printf("\t\t\t(2)退出程序\n");printf("\t\t\t*******************************\n");scanf("%d",&a);getchar();system("cls");switch(a){case 1:Interface();break;case 2:exit(1);break;default :{printf("\t\t\t抱歉,输错了!\n");a=0;}}//system("pause");//return head;}//*********************************************************//*********************************************************删除职工信息int Delete(STR *head){char t[5],b[20];//t装姓名b装编号int i;STR *p,*q;p=head;q=head;printf("\t\t\t*******************************\n");printf("\t\t\t(1)按名字删除\n");printf("\t\t\t(2)按编号删除\n");printf("\t\t\t(3)全部删除\n");printf("\t\t\t(4)返回主函数\n");printf("\t\t\t(5)退出程序\n");printf("\t\t\t*******************************\n\t\t\t");scanf("%d",&i);switch(i){case 1:{printf("\t\t\t请输入要删除的职工的名字(请一定要把名字输对)\n\t\t\t");scanf("%s",t);while(strcmp(p->name,t)){q=p;p=p->next;}q->next=p->next;// free(p);printf("\t\t\tok已经把这个职工的记录删除了\n");system("pause");system("cls");Interface();}break;case 2:{printf("\t\t\t请输入要删除的职工的编号(请一定要把编号输对)\n\t\t\t");scanf("%s",b);while(strcmp(p->num,b)){q=p;p=p->next;}q->next=p->next;// free(p);printf("\t\t\tok已经把这个职工的记录删除了\n");system("pause");system("cls");Interface();}break;case 3:{while(p->next!=NULL){q=p->next;free(p);p=q;}printf("\t\t\t已全部删除\n");system("pause");system("cls");Interface();}break;case 4:{system("cls");Interface();return 0;}case 5:{printf("\t\t\t程序即将退出\n");// system("pause");exit(0);};default :{system("cls");printf("\n\n\t\t\t又错了\n\n");Interface();return 0;}}return 0;}//*********************************************************//*********************************************************输出void print(STR *head,int i)//是0则输出到屏幕1则输出到文本{FILE *fp;int n=1;//n用来记录员工的个数STR *q,*p;q=head;p=head;if(i){//printf("\t请输入你想把数据保存的位置:如K:\\\\wang\\\\txt.dat\n");getchar();if((fp=fopen("D:\\wxc.txt","w"))==NULL){printf("\t\t\t打开失败\n");exit(0);}while(p->next!=NULL){fwrite(p,sizeof(STR),1,fp);fputs("\n",fp);p=p->next;}fclose(fp);}else{while(p!=NULL){printf("\t%d %s %s %s %s %d %d %d %d\n",n,p->num,p->name,p->bumen,p->title,p->money1,p ->money2,p->money3,p->money4);p=p->next;n++;}system("pause");system("cls");Interface();}}//*********************************************************//*********************************************************修改void amend(STR *head){char b[20];// b装编号STR *p,*q;p=head;q=head;be:printf("\n\n请输入您要修改的职工的编号或名字\n");scanf("%s",b);getchar();if(b[0]<='0'||b[0]>='9'){while(strcmp(p->name,b)){p=p->next;if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}}printf("\t(1) %s (2) %s (3) %s (4) %s (5) %d (6) %d (7) %d (8) %d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);}else{while(strcmp(p->num,b)){p=p->next;if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}}printf("\t(1) %s (2) %s (3) %s (4) %s (5) %d (6) %d (7) %d (8) %d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);}printf("\t\t\t请输入您要修改的内容的编号和内容\n\t\t\t");scanf("%d",&a);getchar();switch(a){case 1:scanf("%s",p->num);break;case 2:scanf("%s",p->name);break;case 3:scanf("%s",p->bumen);break;case 4:scanf("%s",p->title);break;case 5:scanf("%d",p->money1);break;case 6:scanf("%d",p->money2);break;case 7:scanf("%d",p->money3);break;case 8:scanf("%d",p->money4);break;}printf("\t%s %s %s %s %d %d %d %d\n",p->num,p->name,p->bumen,p->title,p->money1,p->money2,p->money3,p->money4);system("pause");system("cls");Interface();}//*********************************************************//*********************************************************查找void found(STR *head){char b[10];STR *p,*q;p=head;q=head;be:printf("\n\n请输入您要查询的职工的编号或名字\n");scanf("%s",b);if(b[0]<='0'||b[0]>='9'){while(strcmp(p->name,b)){if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}p=p->next;}printf("\t %s %s %s %s %d %d %d %d\n",p->num,p->name,p->bumen,p->title,p-> money1,p->money2,p->money3,p->money4);}else{while(strcmp(p->num,b)){if(p==NULL){printf("\t\t\t对不起没有找到这个职工\n");p=head;goto be;}p=p->next;}printf("\t%s %s %s %s %d %d %d %d\n",p->num,p->name,p->bumen,p->title,p->m oney1,p->money2,p->money3,p->money4);}system("pause");system("cls");Interface();}//*********************************************************//*********************************************************排序void sort(STR *head){STR *p,*q;//e用来当中间值int i=0,t=0,j;p=head->next;q=head;while(p!=NULL){t++;p=p->next;}p=head->next;printf("\n\n\t\t\t(1)按基本工资排序\n");printf("\t\t\t(2)按总工资排序\n\t\t\t");scanf("%d",&a);// getchar();if(a==1){while(p!=NULL){if(p->money1<head->money1){exchange(head,p);}p=p->next;q=q->next;}p=head->next;q=head;for(i=0;i<t-1;i++){for(j=i;j<t-1;j++){if(q->money1>p->money1){exchange(q,p);}q=p;p=p->next;}q=head;p=head->next;}print(head,0);}if(a==2){while(p!=NULL){if(p->money4<head->money4){exchange(head,p);}p=p->next;q=q->next;}p=head->next;q=head;for(i=0;i<t;i++){for(j=i;j<t;j++){if(q->money4>p->money4){exchange(q,p);}//printf("%d %d\n",q->money4,p->money4);q=p;p=p->next;}q=head;p=head->next;}print(head,0);}}//********************************************************* void exchange(STR *head,STR *p){STR *q;q=(STR *)malloc(sizeof(STR));q->money1=head->money1;q->money2=head->money2;q->money3=head->money3;q->money4=head->money4;strcpy(q->name,head->name);strcpy(q->bumen,head->bumen);strcpy(q->num,head->num);strcpy(q->title,head->title);head->money1=p->money1;head->money2=p->money2;head->money3=p->money3;head->money4=p->money4;strcpy(head->name,p->name);strcpy(head->bumen,p->bumen);strcpy(head->num,p->num);strcpy(head->title,p->title);p->money1=q->money1;p->money2=q->money2;p->money3=q->money3;p->money4=q->money4;strcpy(p->name,q->name);strcpy(p->bumen,q->bumen);strcpy(p->num,q->num);strcpy(p->title,q->title);}//********************************************************* void aver(STR *head){STR *p;double aver1=0,aver2=0,aver3=0,aver4=0,aver=0;int i=0;p=head;while(p!=NULL){aver1+=p->money1;i++;p=p->next;}p=head;while(p!=NULL){aver2+=p->money2;p=p->next;}p=head;while(p!=NULL){aver3+=p->money3;p=p->next;}p=head;while(p!=NULL){aver4+=p->money4;p=p->next;}printf("\t\t基本工资的平均是%.2f\n \t\t加班工资的平均是%.2f\n \t\t奖金的平均是%.2f\n \t\t总工资的平均是%.2f \n",aver1/i,aver2/i,aver3/i,aver4/i);system("pause");system("cls");Interface();}//*********************************************************//*********************************************************void main(){STR *head,*p;//,*q;printf("\n\n\t\t\t你好!我觉得您在进行其他的操作之前是不是应该先创建数据?\n\n");Interface();//界面显示函数head=(STR *)malloc(sizeof(STR));p=head;//q=p;while(1){switch(a){case 0:{printf("\n\n\t\t\t这个程序已退出……\n\n");exit(0);}case 1:creat(head);break;case 2:found(head);break;case 4:Delete(head);break;case 7:print(head,0);break;case 5:amend(head);break;case 3:sort(head);break;case 6:aver(head);break;}}}6、调试过程一.主菜单1.添加职工记录2.查询职工3.对职工数据排序4.删除职工记录5.修改职工记录6.部门职工分析7.输出职工信息表0.退出程序7.结束语通过为期二周的课程设计学习,我对《C语言》这门课程有了更深一步的了解。
C语言链表员工信息管理系统实验报告册
成都学院蒇电子科技大学薅实验报告册膁课程名称: C 语言课程设计罿姓名:蒋明轩1530720218芆学号:蚅院系:微电子技术系嵌入式系统工程薂专业:孙轲蒇教师:年 5月 30日羅2016螅第 1 章设计目的设计整体框架羃 1.1 设计任务腿现对职工信息的管理,包含姓名,工号,性别,测评成绩,以及等级,能够实现关于职工信息的输入,插入,删除,排序,改正,统计,查问,保留。
肈 1.2 设计要求袄职工信息的输入,插入,删除,排序,改正,统计,查问,保留等膀 1.3 设计意义袁此程序用于新建及管理职工信息,其包含职工工号,姓名,性别,以及职工的查核成绩,在程序中依据提示信息输入有关内容,输入达成后,可对其输入的内容进行改正,删除,追加,统计等操作,操作达成后保留文件,文件在下一次启动程序时将进行自动读守信息内容。
螇第 2 章设计方案羄 2.1 软件工作薁主函数中开始读取保留的 TXT文件,若不存在则成立该文件,依据的选项,循环调用各个功能模块,直到选择退出时,将表记符改变,退出循环,退出该程序。
艿 2.2 模块流程图薆第 3 章实现功能羄 3.1 实现功能描绘羂主函数:检测能否有对应的文件,若存在则翻开该文件,不然则成立该文件,设置表记符循环功能模块,依据输当选项选择需要使用的功能;肁增添职工信息:依据工号判断能否需要动向分派储存空间,尔后输入职工信息;莅查问职工信息:在链表节点中查找对应信息的节点,并打印节点信息;肄删除职工信息:在链表中查找对应信息节点,查找到后将节点指向改正后,开释对应节点信息;莃改正职工信息:查找对应信息,而后从头输入该节点信息;蒈插入职工信息:打印职工信息,并选择需要插入的节点,链表中指向该节点后的指针,分派一个新的空间,输入信息,并改正指针指向;莈统计职工信息:统计职工中各个等级的职工个数,并打印;膄排序:依据职工分数,降序摆列职工信息,并打印;葿保留:利用指针函数保留链表中的信息;膀 3.2 模块功能描绘膆增添职工信息:依据工号判断能否需要动向分派储存空间,尔后输入职工信息;芄查问职工信息:在链表节点中查找对应信息的节点,并打印节点信息;袀删除职工信息:在链表中查找对应信息节点,查找到后将节点指向改正后,开释对应节点信息;蚈改正职工信息:查找对应信息,而后从头输入该节点信息;羅插入职工信息:打印职工信息,并选择需要插入的节点,链表中指向该节点后的指针,分派一个新的空间,输入信息,并改正指针指向;莄统计职工信息:统计职工中各个等级的职工个数,并打印;芁排序:依据职工分数,降序摆列职工信息,并打印;莀保留:利用指针函数保留链表中的信息;羈第 4 章调试与实现蒄 4.1 调试中碰到的要点和难点蚂在使用链表时关于链表节点的指向不清,操作地点混杂袈 4.2 解决方法螇利用绘图的方法,明确对指针指向的问题薃 4.3 实现展现肃显示职工信息薀主程序显示蒆查问薃删除芀统计羈第 5 章总结芅经过此次实验,让我认识到了自己能力的不足,也发现了平常一些不易发现的小弊端,让我意识到了程序中,任何一个小的细节,将会致使的大问题,比方在此次程序的编写中,一个不足挂齿的取地点符将会致使内存的崩溃和输出内容的错误,使我养成了检查代码的习惯;此次程序中,我使用的是链表,在学习数据构造理论知识时,感觉链表使用应当是简单,方便,快捷的,但经过此次实践证明,理论与实质的巨大差距,不只对指针的认识更为详细,也让我磨练了意志力,学会了责任与担当,挑战了个人能力,认识自己弊端。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计工程训练报告职工信息管理系统课程名称C语言程序设计工程训练姓名院(系)专业班级学号指导教师目录1 需求分析 (1)2 系统总框图和功能模块说明 (1)2.1 系统总框图 (1)2.2 功能模块说明 (2)3 系统设计 (2)3.1 主要结构体 (2)3.2主要功能函数 (3)3.3 关键函数的流程图 (4)4 系统调试 (4)5 总结 (9)6 源程序清单 (10)1 需求分析职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话(职工号不重复)。
试设计职工信息管理系统,使之能提供以下功能:●系统以菜单方式工作●职工信息录入功能(职工信息用文件保存)--输入●职工信息浏览功能--输出●职工信息查询功能-算法(其中查询方式可以按学历查询、按职工号查询等)●职工信息删除、修改功能2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明1.菜单模块:显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。
2.输入模块:输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的void input()函数来实现。
3.保存模块:将内存中职工的信息输出到磁盘文件中,可以通过自己定义的void save(int)函数来实现。
4.浏览模块:浏览所有职工的相关信息,通过自己定义的void display()函数来实现。
5.删除模块:删除需要删除的职工的所有信息,通过自己定义的void del()函数来实现。
6.添加模块:添加需要添加的职工的相关信息,通过自己定义的void add()函数来实现。
7.按职工的的学历查询模块:可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。
8.按职工的电话号码查询模块:可以按职工的电话来查询职工的相关信息,通过自己定义的void search_tel函数来实现。
9.修改模块:可以修改需要修改的职工的相关信息,通过自己定义的void modify()函数来实现。
10.退出系统模块:退出职工信息管理系统,通过头文件windows.h中的exit(0)函数来实现。
3 系统设计3.1 主要结构体struct employee //定义一个职工信息的结构体{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100]; }; 3.2主要功能函数void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify();3.3 系统的总体流程图4 系统调试1.运行程序,进入职工信息管理系统的主菜单:2.输入数字“1”进行录入职工信息:3.录入职工信息4.输入“2”浏览职工信息:5.输入“y”后继续,输入“3”进行查询职工信息:6.进入主菜单,输入“4”进行删除职工信息:7.进入主菜单输入“5”进行添加职工信息:8.进入主菜单输入“6”进行修改职工信息:9.进入主菜单输入”7”退出职工信息管理系统。
5 总结通过这次课程设计,增加了我们对软件技术的了解,虽然还不明确软件技术包含的具体内容,但从学习C语言这门课程开始,已发现程序设计的好处,它对我们数学的学习也有很大的帮助。
在学习C语言的过程中也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解。
在具体操作中对这学期所学的C语言的理论知识得到巩固加强,达到实训的目的,也发现自己的不足之处,为我们以后的c语言学习奠定了基础,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。
发现上机操作的重要作用,特别是对数组和循环有了深刻的理解。
通过实际操作,学会C 语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。
在用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。
解决的这个问题的办法是调整。
一个系统的菜单和提示信息非常重要。
如果没有这些用户根本不知道怎么用你设计的这个系统。
在设计的调试过程中也无法顺利的完成调试工作。
有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的比较顺利。
回顾起此次课程设计,至今我们仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在这些日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识本次课程设计结束了,对于我们的影响很大。
我们通过这次实践学到了许多知识。
学到了设计一个简单的系统。
要注意哪些方面。
也使我们知道自己哪些方面做得还不够。
6 源程序清单#include <stdio.h>#include <windows.h>#include <time.h>#include <string.h>#define N 100struct employee{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];double tel;}em[100]; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /*定义各函数*/void menu() /*菜单函数*/{printf("计算机科学与技术专业\n");printf("\n");printf("计算机123班敖立伟\n");printf("\n");printf(" ******************职工信息管理系统****************\n"); printf(" 1.录入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");printf(" ********************谢谢使用******************\n");printf("\n");printf("\n");}void main(){int n,flag;char a;menu(); /*调用菜单函数*/do{printf("请选择你需要操作的步骤(1--7):\n");scanf("%d",&n);if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}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--6):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void input() /*录入函数*/{int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号:");scanf("%d",&em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%lf",&em[i].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 file\n");exit(0);}for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() /*导入函数*/{FILE*fp;int i=0;if((fp=fopen("employee_list","rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&em[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /*浏览函数*/{int i;int m=load();printf("\n 职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,e m[i].wage,em[i].addr,em[i].tel);}void del() /*删除函数*/{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display(); /* 调用浏览函数*/printf("\n");printf("请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em [i].wage,em[i].addr,em[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1) /*如果删除,则其他的信息都往上移一行*/{for(j=i;j<m-1;j++){strcpy(em[j].name,em[j+1].name);em[j].num=em[j+1].num;em[j].sex=em[j+1].sex;em[j].age=em[j+1].age;strcpy(em[j].xueli,em[j+1].xueli);em[j].wage=em[j+1].wage;strcpy(em[j].addr,em[j+1].addr);em[j].tel=em[j+1].tel;}flag=0;}}}if(!flag)m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m); /*调用保存函数*/display(); /*调用浏览函数*/printf("\n继续删除请按1,不再删除请按0\n"); 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;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("请输入职工号: ");srand((int)time(0));em[i].num=rand()%10000+20000000;if(em[i].num!=em[i-1].num)printf("%8d ",em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%lf",&em[i].tel);printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n");printf("\n");save(m);display();fclose(fp);}void search()/*查询函数*/{int t,flag;do{printf("\n按职工号查询请按1 ; 按学历查询请按2 ; 按电话号码查询请按3,进入主函数按4\n");scanf("%d",&t);if(t>=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_tel();break;case 4:main();break;default:break;}}}void search_num(){int num;int i,t;int m=load();printf("请输入要查找的职工号(0--1000000000):\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==em[i].num){printf("\n已找到此人,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em [i].wage,em[i].addr,em[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2: break;default:break;}}void search_xueli(){char xueli[30];int i,t;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(em[i].xueli,xueli)==0){printf("\n已找到,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em [i].wage,em[i].addr,em[i].tel);}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void search_tel(){long int tel;int i, t;int m=load();printf("请输入要查找的电话号码:\n");scanf("%lf",&tel);for(i=0;i<m;i++)if(tel==em[i].tel){printf("\n已找到此人,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em [i].wage,em[i].addr,em[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void modify() /*修改函数*/{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];long int tel;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&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%.0lf\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em [i].wage,em[i].addr,em[i].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历6.工资7.住址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("%d",&num);em[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);em[i-1].sex=sex;break;case 4:printf("年龄改为: ");scanf("%d",&age);em[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(em[i-1].xueli,xueli);break;case 6:printf("工资改为: ");scanf("%d",wage);break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(em[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%lf",&tel);em[i-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\n");scanf("%d",&t);switch(t){case 1:modify();break;case 0:break;default :break;}}。