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语言编程技术提供了一个很好的实践机会。
- 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;}}。