职工信息管理系统(C语言)

合集下载

员工信息管理系统(含附源代码)03

员工信息管理系统(含附源代码)03
printf("\n\t请输入员工姓名:");
scanf("%s",work[i].name);
printf("\n\t请输入员工身份证号:");
scanf("%s",work[i].ID);
printf("\n\t请输入员工性别:");
scanf("%s",work[i].sex);
printf("\n\t请输入员工出生日期(yyyy-mm-dd):");
开始选择更新内容i结束开始选择查询内容i结束按性别统计年龄查询函数isum判断两工作号相等isumworkiworki1sumflag1是否继续输入工作号退出删除结束开始输出信息结束开始开始isum输入年龄输出信息结束判断员工的年龄段变量自加开始输入年龄chisum存在员工输出员工信息继续查询退出查询结束身份证排序
scanf("%s",work[i].sex);
printf("\n\t请输入员工出生日期(yyyy-mm-dd):");
scanf("%d-%d-%d",&work[i].birthday.year,&work[i].birthday.month,&work[i].birthday.day);
printf("\n\t请输入员工年龄:");
printf("\t **输入'e'退出列表**\n");
ch=getche();
if(ch=='e')
break;
clrscr();
printf("\t *****员工基本信息列表*****\n");

c语言程序设计课程设计选题 (1)

c语言程序设计课程设计选题 (1)

《C语言程序设计》课程设计课题表一、A类1.职工信息管理系统设计2.职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

试设计一职工信息管理系统,使之能提供以下功能:3.1、职工信息录入功能(职工信息用文件保存)--输入4.2、职工信息浏览功能--输出5.3、职工信息查询功能--算法6.查询方式:按学历查询、按职工号查询、条件组合查询7.职工信息删除、修改功能(可选项)8.图书信息管理系统设计9.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

10.试设计一图书信息管理系统,使之能提供以下功能:11.1、图书信息录入功能(图书信息用文件保存)--输入12.2、图书信息浏览功能--输出13.3、图书信息查询功能--算法14.查询方式:按书名查询、按作者名查询、条件组合查询15.图书信息的删除与修改(可选项)16.图书管理系统设计17.图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等18.功能描述:19.1、新进图书基本信息的输入。

20.2、图书基本信息的查询。

21.3、对撤消图书信息的删除。

22.4、为借书人办理注册。

23.5、办理借书手续。

24.6、办理还书手续25.要求:使用文件方式存储数据。

26.实验设备管理系统设计27.实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。

28.主要功能:29.1、能够完成对设备的录入和修改30.2、对设备进行分类统计31.3、设备的破损耗费和遗损处理32.4、设备的查询33.要求:使用文件方式存储数据。

34.学生信息管理系统设计35.学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

试设计一学生信息管理系统,使之能提供以下功能:36.1、系统以菜单方式工作37.2、学生信息录入功能(学生信息用文件保存)--输入38.3、学生信息浏览功能--输出39.4、学生信息查询功能--按学号查询、按姓名查询、40.5、学生信息的删除与修改(可选项)41.要求:使用文件方式存储数据。

C语言实训题及参考答案

C语言实训题及参考答案
browse() { int i,j,n; n=load(); printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%10==0)) { printf("\n\nPass any key to continue ...."); getch(); puts("\n\n"); } printf_one(i) ; } printf("\tThere are %d record.\n",n); printf("\nPass any key to back ..."); getch(); menu(); }
printf("\t\t *** choose function ************\n\n"); printf("\t\t *** 1 Enter new data ************\n\n"); printf("\t\t *** 2 Modify data ************\n\n"); printf("\t\t *** 3 Search by people.xueli and num*****\n\n");
# include <stdio.h>
enter() { int i,n; printf("How many people(0-%d)?:",N-1); scanf("%d",&n); printf("\n Enter data now\n\n"); for(i=0;i<n;i++) { printf("\n Input %dth people record.\n",i+1); input(i); } if(i!=0)save(n); printf_back(); }

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.编程中遇到的困难及解决方法温故而知新,可以为师矣。

员工信息管理系统含附源代码.doc

员工信息管理系统含附源代码.doc

西安郵電學院高级语言课程设计报告题目:员工信息管理系统系部名称:电子与信息工程专业名称:电子科学与技术班级:科技 0701班内序号:03学生姓名:刘力源指导教师:黄茹时间:2008年6月9日至2008年6月20日实验题目: 员工信息管理系统一、实验目的1.熟悉c语言的编译连接和运行过程。

2.掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。

3.掌握if语句及switch语句的运用方法及嵌套应用方法。

4.掌握实现循环结构的三种语句while、 do-while.、for 的使用。

5.掌握函数的定义方法和调用方法。

6.能够采用模块化思想调试程序。

二.实验内容1.编写程序并进行调试运行。

2.输入员工资料,并保存于文件。

每个员工包含信息:工作证号、姓名、性别、年龄、担任职务,工资等信息。

3.对已存入的员工信息进行更新操作,包括添加一个员工信息、删除某个员工信息和修改某个员工信息。

4.通过输入姓名、工作证号,年龄的方式查询员工信息。

5.最后输出学生信息,供需要时打印。

二、需求分析1.该程序可用于对员工的雇佣情况基本信息的存储、更新、查询、输出等操作,以实现对员工的管理。

2.其中更新功能包括:添加信息、删除信息、修改信息,可根据需要添加一个或多个员工信息,也可对个别员工信息进行适当的删除或修改,以便随时更新员工信息。

3.程序中设计的查询功能可根据需要从若干数据中查询某个员工信息,并且可根据三种不同的方法查询:按工作证号查询,按年龄查询和按姓名查询。

以满足不同的需要。

四、概要设计1.模块功能说明对各个模块进行功能的描述(1).输入模块:录入需要管理的学生信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。

(2).添加模块:可添加一个或多个员工信息,并将所添加员工信息保存,方便查找。

(3).删除模块:可对辞职或被解雇的员工信息做删除处理。

(4).修改模块:可根据需要对多个员工信息进行修改,也可随时对个别项进行修改。

c语言职工工资管理系统代码

c语言职工工资管理系统代码

C语言职工工资管理系统代码简介职工工资管理是一项重要的任务,它涉及到工资计算、薪资发放、绩效评估等方面。

为了提高管理的有效性和准确性,许多公司和组织都开发了各种各样的工资管理系统。

本文将介绍一种基于C语言开发的职工工资管理系统代码。

代码功能及特点1. 基本功能•添加新员工信息•更新员工信息•计算员工工资•发放工资•查询员工信息•统计工资情况2. 特点•简单易懂:代码使用C语言编写,阅读和理解都相对简单。

•高效可靠:代码采用模块化设计,结构清晰,运行效率高,容错性强。

•跨平台支持:C语言是一种具有广泛应用的语言,可以在多个操作系统上运行。

代码实现1. 员工信息结构体定义struct Employee {int id; // 员工编号char name[20]; // 员工姓名float basicSalary; // 员工基本工资float performanceBonus; // 绩效奖金float salary; // 员工工资};2. 添加新员工信息函数void addEmployee(struct Employee *employee, int num) {printf("请输入员工编号:");scanf("%d", &(employee[num].id));// 输入其他员工信息...}3. 更新员工信息函数void updateEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 更新员工信息...}}}4. 计算员工工资函数void calculateSalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {employee[i].salary = employee[i].basicSalary + employee[i].performance Bonus;}}5. 发放工资函数void paySalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {printf("员工编号:%d,工资:%.2f\n", employee[i].id, employee[i].salar y);}}6. 查询员工信息函数void searchEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 输出员工信息...}}}7. 统计工资情况函数void statisticsSalary(struct Employee *employee, int num) { float totalSalary = 0;int i;for (i = 0; i < num; i++) {totalSalary += employee[i].salary;}printf("总工资:%f\n", totalSalary);}使用示例1. 添加员工信息struct Employee employees[100];int num = 0;addEmployee(employees, num);num++;2. 更新员工信息int id = 12345;updateEmployee(employees, id);3. 计算员工工资calculateSalary(employees, num);4. 发放工资paySalary(employees, num);5. 查询员工信息int id = 12345;searchEmployee(employees, id);6. 统计工资情况statisticsSalary(employees, num);总结本文介绍了一个基于C语言的职工工资管理系统代码。

C语言课设职工信息管理系统

C语言课设职工信息管理系统

课程设计任务书目录一、题目要求 (1)二、算法设计 (3)三、编程实现 (6)四、结果分析 (13)五、参考文献 (14)一、题目要求题目名称:设计字符串比较的函数和销售员业绩管理程序内容:1. 有两个字符串,各有10个字符,是编程完成如下功能:(1)分别找出两个字符串中最大的字符元素;(2)将两字符串对应位置元素逐个比较,并统计输出两个字符串对应元素大于、小于和等于的次数。

2. 销售员业绩管理程序主要用结构体数组实现,用结构体表示每项记录,包含数据为:编号、姓名、销售产品名、产品单价、销售数量、销售额。

其中销售额通过计算得到,计算公式:销售额=产品单价*销售数量设计各个函数,分别实现以下功能:(1)录入:完成业绩信息的输入,最好是追加方式;(2)删除:完成业绩信息的删除;(3)修改:允许对已经录入的数据重新进行编辑、修改;(4)显示:显示所有业绩信息(多者可分页显示) ,可以根据某种条件显示,如出销售额大小顺序;(5)查询:a) 输入姓名,显示该销售员的销售记录,并计算销售总额;c) 输入产品名,显示该产品的销售记录及总量;(6)统计: 统计所有销售员的销售总额,以图形显示比较结果,如下:Jack |**********Marry |*******************John |**************(7)退出程序。

设计菜单,通过选择菜单调用以上各函数。

要求:利用C语言编写上述程序,开发环境可采用Turbo C 2.0 或Visual C++ 6.0等。

二、算法设计1. 有两个字符串,各有10个字符,是编程完成如下功能:(1)分别找出两个字符串中最大的字符元素;(2)将两字符串对应位置元素逐个比较,并统计输出两个字符串对应元素大于、小于和等于的次数(第一题流程图)2. 销售员业绩管理程序主要用结构体数组实现,用结构体表示每项记录,包含数据为:编号、姓名、销售产品名、产品单价、销售数量、销售额。

自己用C语言做的职工信息管理系统

自己用C语言做的职工信息管理系统

这是主函数部分是个头文件#include <string.h>#include <malloc.h>#include <stdlib.h>#include <stdio.h>#define ALLMAX 100#include "zhigong.h"int main(){char key[100]="xxyyzz";char s[100];int count=0;while (true){if (count>2) return(0);printf("请输入登录口令:\n");gets(s)if(!strcmp(key,s)){printf("你是合法用户!\n");break;}else{printf("你是非法用户!\n");count++;}}DataType x;SLNode *head;int i,n;FILE *fp;ListInitiate(&head);printf("请输入职工人数n:\n");scanf("%d",&n);printf("请输入职工信息:姓名、性别、出生年、工作年、学历、职务、住址、电话\n"); for(i=0;i<n;i++){scanf("%s %s %d %d %s %s %s %d",,&x.sex,&x.chusheng,&x.gongzuo,x.xueli,x.zhiwu,x .zhuzhi,&x.dianhua);head=ListInsert(head,x);}if((fp=fopen("职工名单.txt","w"))==NULL){printf("无法打开‘职工名单.txt’!\n");exit(0);}put(head,fp);if(fclose(fp)){printf("无法关闭‘职工名单.txt’!\n"); exit(0);}printf("0.结束系统\n1.新增一名职工\n2.删除一名职工\n3.查询职工信息\n4.修改职工信息\n5.对职工信息进行排序\n");for(;;){scanf("%d",&i);if(i==0)break;if(i==1){printf("请输入职工信息:姓名、性别、出生年、工作年、学历、职务、住址、电话\n");scanf("%s %s %d %d %s %s %s %d",,&x.sex,&x.chusheng,&x.gongzuo,x.xueli,x.zhiwu,x .zhuzhi,&x.dianhua);head=ListInsert(head,x);printf("新增成功!请继续操作!\n");put(head,fp);}if(i==2){ListDelete(head);if((fp=fopen("职工名单.txt","w"))==NULL){printf("无法打开‘职工名单.txt’!\n");exit(0);}put(head,fp);if(fclose(fp)){printf("无法关闭‘职工名单.txt’!\n"); exit(0);}}if(i==3)Listfind(*head);if(i==4){Listxiugai(head);if((fp=fopen("职工名单.txt","w"))==NULL){printf("无法打开‘职工名单.txt’!\n");exit(0);}put(head,fp);if(fclose(fp)){printf("无法关闭‘职工名单.txt’!\n"); exit(0);}}if(i==5){SLNode *p=head;Listpaixu(p);}if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5)printf("输入出错!请再次输入!\n");}}还要个头文件zhigong.h这个要另外写成个头文件typedef struct Node{int chusheng,gongzuo,dianhua;charsex,name[ALLMAX],xueli[ALLMAX],zh iwu[ALLMAX],zhuzhi[ALLMAX]; struct Node *next;}SLNode;typedef struct{int chusheng,gongzuo,dianhua;charname[ALLMAX],sex,xueli[ALLMAX],zhiwu[ALLMAX],zhuzhi[ALLMAX];}DataType;void ListInitiate(SLNode **head){if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);(*head)->next=NULL;}SLNode *ListInsert(SLNode *head,DataType x){SLNode *p,*q,*s;p=head->next;if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);q->chusheng=x.chusheng;q->gongzuo=x.gongzuo;q->dianhua=x.dianhua;strcpy(q->name,);q->sex=x.sex; strcpy(q->xueli,x.xueli);strcpy(q->zhiwu,x.zhiwu);strcpy(q->zhuzhi,x.zhuzhi);if(head->next==NULL){head->next=q;head->next->next=NULL;}else{for(;p;p=p->next){if(p->next!=NULL){if(strcmp(p->name,)<0&&strcmp(p ->next->name,)>0){s=p->next;p->next=q;q->next=s;break;}}elseif(strcmp(p->name,)<0&&p->next ==NULL){p->next=q;q->next=NULL;break;}if(strcmp(p->name,)>0){s=head->next;head->next=q;q->next=s;break;}}}return head;}void ListDelete(SLNode *head){SLNode *p,*s;char x[20];s=head;p=head->next;if(head->next==NULL){printf("名单中无职工信息,无须删除!\n");return;}printf("请输入要删除职工的姓名:\n"); scanf("%s",x);for(p;p;p=p->next){if(strcmp(p->name,x)==0){s->next=p->next;free(p);printf("删除成功!请继续操作!\n");break;}s=p;}if(p==NULL){printf("名单中无职工信息,无须删除!\n");}}void Listxiugai(SLNode *head){DataType x;SLNode *p;p=head->next;if(p==NULL){printf("职工名单无职工信息,无须修改!\n");return;}printf("请输入要修改的职工姓名:\n"); scanf("%s",);printf("依次写入该职工的信息:\n"); for(;p;p=p->next){if(strcmp(,p->name)==0){ scanf("%s %c %d %d %s %s %s %d",p-> name,&p->sex,&p->chusheng,&p->gongz uo,p->xueli,p->zhiwu,p->zhuzhi,&p->dian hua);break;}}if(p==NULL)printf("此职工不存在,无法修改其信息!\n");printf("修改成功!请继续操作!\n"); }void put(SLNode *head,FILE *fp){SLNode *p;if((fp=fopen("职工名单.txt","w"))==NULL){printf("无法打开‘职工名单.txt’!\n"); exit(0);}for(p=head->next;p;p=p->next){fprintf(fp,"%s %c %d %d %s %s %s %d\n ",p->name,p->sex,p->chusheng,p->gongzu o,p->xueli,p->zhiwu,p->zhuzhi,p->dianhu a);}if(fclose(fp)){printf("无法关闭‘职工名单.txt’!\n"); exit(0);}}void Listfind(SLNode head){int i;SLNode *p;DataType x;if(head.next==NULL){printf("名单中无职工信息,无法查询!\n");return;}printf("0.退出查询系统,回到主菜单\n1.对姓名进行查询\n2.对出生年月进行查询\n3.对工作年月进行查询\n4.对学历进行查询\n5.对职务进行查询\n6.对住址进行查询\n7.对电话号码进行查询\n");for(;;){scanf("%d",&i);if(i==0)break;if(i==1){p=head.next;printf("请输入姓名:");scanf("%s",);i=0;for(p;p;p=p->next){if(strcmp(p->name,)==0){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p ->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中不存在此人!\n");else printf("查询成功!请继续操作!\n");}if(i==2){p=head.next;printf("请输入出生年月:");scanf("%d",&x.chusheng);i=0;for(p;p;p=p->next){if(p->chusheng==x.chusheng){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p ->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这个时间出生的!\n");else printf("查询成功!请继续操作!\n");}if(i==3){p=head.next;printf("请输入工作年月:");scanf("%d",&x.gongzuo);i=0;for(p;p;p=p->next){if(p->gongzuo==x.gongzuo){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p ->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这个时间工作的!\n");else printf("查询成功!请继续操作!\n");}if(i==4){p=head.next;printf("请输入学历:");scanf("%s",x.xueli);i=0;for(p;p;p=p->next){if(strcmp(p->xueli,x.xueli)==0){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p ->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这种学历的!\n");else printf("查询成功!请继续操作!\n");}if(i==5){p=head.next;printf("请输入职务:");scanf("%s",x.zhiwu);i=0;for(p;p;p=p->next){if(strcmp(p->zhiwu,x.zhiwu)==0){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p ->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这种职务的!\n");else printf("查询成功!请继续操作!\n");}if(i==6){p=head.next;printf("请输入住址:");scanf("%s",x.zhuzhi);i=0;for(p;p;p=p->next){if(strcmp(p->zhuzhi,x.zhuzhi)==0){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有住这的!\n");else printf("查询成功!请继续操作!\n");}if(i==7){p=head.next;printf("请输入电话:");scanf("%d",&x.dianhua);i=0;for(p;p;p=p->next){if(p->dianhua==x.dianhua){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p ->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没人用这个号码!\n");else printf("查询成功!请继续操作!\n");}if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5 && i!=6 && i!=7)printf("输入出错!请再次输入!\n"); }}void print(SLNode *head){for(SLNode *p=head->next;p;p=p->next) printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p ->xueli,p->zhiwu,p->zhuzhi,p->dianhua); }void Listpaixu(SLNode *head){int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head->next==NULL){printf("名单中无职工信息,无法排序!\n");return;}printf("0.退出排序系统,回到主菜单\n1.对性别进行排序\n2.对出生年月进行排序\n3.对工作年月进行排序\n");for(;;){scanf("%d",&i);if(i==0)break;if(i==1){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q =q->next){if(p->sex>q->sex){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");print(head);}if(i==2){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q =q->next){if(p->chusheng>q->chusheng){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n"); print(head);}if(i==3){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q =q->next){if(p->gongzuo>q->gongzuo){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");print(head);}if(i!=0&&i!=1&&i!=2&&i!=3)printf("输入出错!请再次输入!\n"); }}。

C语言说明书封面

C语言说明书封面

长春大学课程设计说明书题目名称职工信息管理系统院(系)计算机科学技术学院专业(班级)网络11404学生姓名许振文(13)指导教师黄葵起止日期2012-7- 16至2011-7-20目录一设计目的 .................................................. 错误!未定义书签。

二设计内容 .................................................. 错误!未定义书签。

三设计要求 .................................................. 错误!未定义书签。

四设计过程 .................................................. 错误!未定义书签。

1 任务解析............................................... 错误!未定义书签。

2 程序结构分析....................................... 错误!未定义书签。

3 数据结构分析....................................... 错误!未定义书签。

4 功能实现............................................... 错误!未定义书签。

5 系统测试............................................... 错误!未定义书签。

五设计总结 .................................................. 错误!未定义书签。

参考文献......................................................... 错误!未定义书签。

附录................................................................. 错误!未定义书签。

职工管理系统代码解释

职工管理系统代码解释

#include<stdio.h>//printf,scanf输出,输入的头文件#include<string.h>//strcpy(),strcmp()字符串函数的头文件#include<malloc.h>#include<stdlib.h>//malloc函数的头文件<sdtlib.h>包含<malloc.h>#define ALLMAX 100typedef struct Node//定义一个结构体来表示链表的节点{int chusheng,gongzuo,dianhua;char sex,name[ALLMAX],xueli[ALLMAX],zhiwu[ALLMAX],zhuzhi[ALLMAX]; struct Node *next;}SLNode;typedef struct{/*定义一个结构体来表示基本员工的基本信息,和链表节点的结构体,有所不同比链表的结构体少了一个指向Node结构体指针变量*/int chusheng,gongzuo,dianhua;char name[ALLMAX],sex,xueli[ALLMAX],zhiwu[ALLMAX],zhuzhi[ALLMAX];}DataType;void ListInitiate(SLNode **head){//开辟一个SLNode大小的空间,来初始化链表头指针,并让next指向nullif((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);(*head)->next=NULL;}SLNode *ListInsert(SLNode *head,DataType x){//此函数功能是插入链表节点,并让节点插入合适位置SLNode *p,*q,*s;p=head->next;//首先先开辟一个节点的内存空间if((q=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//然后把X里的信息赋值给q链表节点q->chusheng=x.chusheng; q->gongzuo=x.gongzuo;q->dianhua=x.dianhua; strcpy(q->name,);q->sex=x.sex; strcpy(q->xueli,x.xueli);strcpy(q->zhiwu,x.zhiwu); strcpy(q->zhuzhi,x.zhuzhi);//strcpy(a1,a2)函数的功能是把a2字符的值赋值给a1if(head->next==NULL){//如果只有头节点,而没有其他的节点,则将q节点插入到头节点后head->next=q;head->next->next=NULL;}else{//如果有其他节点元素for(;p;p=p->next){//不断向后查找,当前面节点name值小于数据X里name值并且后面的节点name值大于数据X里name值的时候插入if(p->next!=NULL){if(strcmp(p->name,)<0&&strcmp(p->next->name,)>0){/*strcmp(a1,a2)函数的功能是比较a1,a2字符的值,若a1=a2,则返回值为若a1>a2,则返回一个正值,,若a1<a2,则返回一个负值*/s=p->next;p->next=q;q->next=s;break;}}else if(strcmp(p->name,)<0&&p->next==NULL){//不断先后查找,当找到最后一个节点的时候,并且前面所有的name值都小于数据X里name值,把节点插入到链表最后p->next=q;q->next=NULL;break;}if(strcmp(p->name,)>0){//后面所以节点name的值都比数据X里name值大,就把节点插入后指针后,即所以链表节点前s=head->next;head->next=q;q->next=s;break;}}}//return head;}void ListDelete(SLNode *head){//此函数的功能是删除链表中特定的节点,以职员name为关键字SLNode *p,*s;char x[20];s=head;p=head->next;if(head->next==NULL){//当链表中无节点时,给出提示信息printf("名单中无职工信息,无须删除!\n");return;}printf("请输入要删除职工的姓名:\n");//获得要删除的节点的name的值scanf("%s",x);for(p;p;p=p->next){//然后不断的往后找,知道节点里的name的值,等于输入的name的值的时候,就退出此for循环,,用break语句if(strcmp(p->name,x)==0){//找到后,要删除节点的前面节点指向要删除节点的后面节点s->next=p->next;free(p);//然后释放要删除节点的内存空间printf("删除成功!请继续操作!\n");//break,退出for循环break;}s=p;}if(p==NULL){//如果没有找到要删除的节点,则提示信息printf("名单中无职工信息,无须删除!\n");}}void Listxiugai(SLNode *head){//此函数为修改指定的节点,以职员name为关键字,DataType x;SLNode *p;p=head->next;if(p==NULL){//当链表中无节点时,给出提示信息printf("职工名单无职工信息,无须修改!\n");return;}printf("请输入要修改的职工姓名:\n");//获得要修改的节点的name的值scanf("%s",);printf("依次写入该职工的信息:\n");for(;p;p=p->next){//不断往后找,直到找到要修改的节点,让后通过scanf获得用户重新输入的各属性值,再重新赋值给要修改的节点Pif(strcmp(,p->name)==0){scanf("%s %c %d %d %s %s %s %d",p->name,&p->sex,&p->chusheng,&p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,&p->dianhua);break;}}if(p==NULL)//如果没有找到要修改的节点,则提示信息printf("此职工不存在,无法修改其信息!\n");printf("修改成功!请继续操作!\n");}void put(SLNode *head,FILE *fp){//此函数的功能是将,链表中节点的值,打印到worker.txt文件中SLNode *p;//打开要输入信息的文件if((fp=fopen("worker.txt","w"))==NULL){//如果没有打开,则提示错误信息printf("无法打开‘worker.txt’!\n");exit(0);}for(p=head->next;p;p=p->next){//通过for循环,不断的将链表节点信息输入到文件中fprintf(fp,"%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhi wu,p->zhuzhi,p->dianhua);}//输入信息成功后,关闭打开的文件if(fclose(fp)){//如果关闭失败,则提示错误信息printf("无法关闭‘worker.txt’!\n"); exit(0);}}void Listfind(SLNode head){//此函数的功能是,寻找特定职员的信息int i;SLNode *p;DataType x;if(head.next==NULL){//如果没有链表节点,则提示信息printf("名单中无职工信息,无法查询!\n");return;}//打印出一段字符,提示用户,输入不同的数字,来执行不同的操作printf("0.退出查询系统,回到主菜单\n1.对姓名进行查询\n2.对出生年月进行查询\n3.对工作年月进行查询\n4.对学历进行查询\n5.对职务进行查询\n6.对住址进行查询\n7.对电话号码进行查询\n");for(;;){//一个空的for循环,来不断的接受用户的查询,当用户输入时,在通过break语句退出此for循环//得到用户要操作的数字,通过这个数字的不同来执行不同的查询操作scanf("%d",&i);if(i==0)//如果用户输入,则退出for循环,也就是退出查询break;if(i==1){//输入,按姓名查询p=head.next;printf("请输入姓名:");scanf("%s",);i=0;for(p;p;p=p->next){//通过用户输入的name值,来查询链表各节点中name的值,如相同,则打印到屏幕上if(strcmp(p->name,)==0){++i;//设置一个i值,来判断,有木有查询到所要查询的员工信息printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,p->dianhua);}}if(i==0)//i=0,说明没有查询到要查询的员工信息,则提示信息printf("职工名单中不存在此人!\n");//否则说明,查询成功,即给出提示信息else printf("查询成功!请继续操作!\n");}/*下面的程序和上面的程序一样,只是通过获得不同的i值,来通过不同的关键字来查询,当i=1.对姓名进行查询i=2.对出生年月进行查询i=3.对工作年月进行查询i=4.对学历进行查询i=5.对职务进行查询 i=6.对住址进行查询i=7.对电话号码进行查询,,,所以,下面的程序就不解释啦*/if(i==2){p=head.next;printf("请输入出生年月:");scanf("%d",&x.chusheng);i=0;for(p;p;p=p->next){if(p->chusheng==x.chusheng){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这个时间出生的!\n");else printf("查询成功!请继续操作!\n");}if(i==3){p=head.next;printf("请输入工作年月:");scanf("%d",&x.gongzuo);i=0;for(p;p;p=p->next){if(p->gongzuo==x.gongzuo){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这个时间工作的!\n");else printf("查询成功!请继续操作!\n");}if(i==4){p=head.next;printf("请输入学历:");scanf("%s",x.xueli);i=0;for(p;p;p=p->next){if(strcmp(p->xueli,x.xueli)==0){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这种学历的!\n");else printf("查询成功!请继续操作!\n");}if(i==5){p=head.next;printf("请输入职务:");scanf("%s",x.zhiwu);i=0;for(p;p;p=p->next){if(strcmp(p->zhiwu,x.zhiwu)==0){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有这种职务的!\n");else printf("查询成功!请继续操作!\n");}if(i==6){p=head.next;printf("请输入住址:");scanf("%s",x.zhuzhi);i=0;for(p;p;p=p->next){if(strcmp(p->zhuzhi,x.zhuzhi)==0){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没有住这的!\n");else printf("查询成功!请继续操作!\n");}if(i==7){p=head.next;printf("请输入电话:");scanf("%d",&x.dianhua);i=0;for(p;p;p=p->next){if(p->dianhua==x.dianhua){++i;printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,p->dianhua);}}if(i==0)printf("职工名单中没人用这个号码!\n");else printf("查询成功!请继续操作!\n");}//如果用户输入i的值,不是我们提示的值,则给出用户错误信息,并让用户重新输入if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5 && i!=6 && i!=7)printf("输入出错!请再次输入!\n");}}void print(SLNode *head){//此函数,是打印出链表中的所有员工的信息for(SLNode *p=head->next;p;p=p->next)printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->chusheng,p->gongzuo,p->xueli,p->zhiwu,p ->zhuzhi,p->dianhua);}void Listpaixu(SLNode *head){//此函数,是对职员信息来排序,,int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head->next==NULL){printf("名单中无职工信息,无法排序!\n");return;}printf("0.退出排序系统,回到主菜单\n1.对性别进行排序\n2.对出生年月进行排序\n3.对工作年月进行排序\n");for(;;){scanf("%d",&i);if(i==0)break;//通过用户输入值的不同,来对节点不同的信息进行排序if(i==1){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)//或的链表节点的数目n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){//采用冒泡排序法来对链表进行排序if(p->sex>q->sex){//如果前面节点sex大于后面的sex,则交换二节点的位置if(head==p){//判断p是否为头指针,来进行不同的操作head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");//排序成功后,打印出排序好的职员信息,通过调用print()函数来实现print(head);}/*下面的程序和上面的程序一样,只是通过获得不同的i值,来通过不同的关键字来排序,所以,下面的程序就不解释啦*/if(i==2){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->chusheng>q->chusheng){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");print(head);}if(i==3){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){ if(p->gongzuo>q->gongzuo){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");print(head);}if(i!=0&&i!=1&&i!=2&&i!=3)printf("输入出错!请再次输入!\n");}}void main(){//main函数,程序执行的入口DataType x;//定义一个DataType结构体SLNode *head;//定义一个链表的头节点int i,n;FILE *fp;//定义一个文件指针ListInitiate(&head);//初始化链表printf("请输入职工人数n:");//提示用户输入员工的人数,来控制总的员工信息scanf("%d",&n);//获得用户输入的员工的数目值printf("请输入职工信息:姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");//提示,用户输入那些员工信息for(i=0;i<n;i++){//不断获得n个员工的信息scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.chusheng,&x.gongzuo,x.xueli,x.zhiwu,x.zhuzh i,&x.dianhua);//并将这些员工信息插入到所建的链表中head=ListInsert(head,x);}//打开要存放数据的文件if((fp=fopen("worker.txt","w"))==NULL){printf("无法打开‘worker.txt’!\n");exit(0);}//把链表中用户输入的信息,放入worker.txt文件中put(head,fp);if(fclose(fp)){printf("无法关闭‘worker.txt’!\n"); exit(0);}//打印出本系统的功能,即通过用户输入的不同的值来执行不同的操作printf("0.结束系统\n1.新增一名职工\n2.删除一名职工\n3.查询职工信息\n4.修改职工信息\n5.对职工信息进行排序\n");for(;;){scanf("%d",&i);if(i==0)break;if(i==1){//增加员工信息printf("请输入职工信息:姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.chusheng,&x.gongzuo,x.xueli,x.zhiwu,x.zhuzh i,&x.dianhua);head=ListInsert(head,x);printf("新增成功!请继续操作!\n");//增加成功后,把新的链表的信息重新打印到文件中put(head,fp);}if(i==2){//删除员工信息ListDelete(head);if((fp=fopen("worker.txt","w"))==NULL){//打开文件失败,给出提示信息printf("无法打开‘worker.txt’!\n");exit(0);}//删除成功后,把新的链表的信息重新打印到文件中put(head,fp);if(fclose(fp)){printf("无法关闭‘worker.txt’!\n"); exit(0);}}if(i==3)//查找员工信息Listfind(*head);if(i==4){//修改员工信息Listxiugai(head);if((fp=fopen("worker.txt","w"))==NULL){printf("无法打开‘worker.txt’!\n");exit(0);}//修改成功后,把新的链表的信息重新打印到文件中put(head,fp);if(fclose(fp)){printf("无法关闭‘worker.txt’!\n"); exit(0); }}if(i==5){//排序员工信息SLNode *p=head;Listpaixu(p);}if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5) //用户输入的值,不符合要求,则给出提示信息printf("输入出错!请再次输入!\n");}}。

C语言课程设计报告—人事管理系统1

C语言课程设计报告—人事管理系统1

人事管理系统前言:现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助, 各行各业都需要特定计算系统的运用, 我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。

我们需要学习C语言编程, 根据课堂讲授内容, 做相应的自主练习, 消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题, 逐渐培养编程能力、用计算机解决实际问题的能力, 能够按照要求编辑一些基本的程序, 提高自己的思维能力。

题目:(1)某高校主要人员有: 在职人员(行政人员、教师、一般员工)、退休人员及临时工。

现在需要储存这些人员的人事档案信息, 内容包括编号、姓名、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。

其中, 人员编号唯一, 不能重复。

(2)添加删除功能:能根据学院人事的变动情况, 添加删除记录。

(3)查询功能: 能根据编号和姓名进行查询。

(4)编辑功能(高级): 根据查询对相应的记录进行修改并记录。

(5)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数, 高学历高职称人数), 统计要求同时显示被统计着的信息。

排序功能: 按照年龄、来院时间进行排序。

保存功能: 能对输入的数据进行相应的存储。

分析:我们编辑的程序要能够满足题目的要求, 可以进行这么多的功能的计算!但是在开始我们运行使用程序的时候必须要知道我们要运用这些功能中的哪一个!这就要求我们可以程序中任意选择我们所需要的功能!很显然我们要编辑存储人员的信息自然要运用到文件!而人员的信息必须要以结构体的形式来表示才能够方便我们提取信息!我们选择了要运行的功能分支之后!这些功能是以主函数以外的被调函数!当有需要时被调函数还可以调用其他的被吊函数!例如我们题目中的统计和查询功能, 就可以用这种方式来编辑程序!方便清楚!设计:很显然主程序要用到SWICTH函数, 这样可以选择要运行的那个功能的函数来执行, 而其他的功能函数则不必运行!三、解题思路1.定义结构struct staff{char num[10];char name[20];char sex[10];int age;char title[20];char p_landscape[30];char Qualifications[30];int Service_time;char come_time[30];char category[30];}staff[100];2.主程序进入主菜单函数void main(){menu();}/*******************主菜单函数**********************/void menu(){char w0;do{system("cls");fflush(stdin); /*清除缓冲区输入*/puts("***********************高校人事管理系统**********************\n\n");puts("\t\t\t\t1)增加人员信息\n"); puts("\t\t\t\t2)删除人员信息 \n"); puts("\t\t\t\t3)查询人员信息\n"); puts("\t\t\t\t4)修改人员信息\n"); puts("\t\t\t\t5)统计人员信息\n"); puts("\t\t\t\t6)对人员排序\n");puts("\t\t\t\t7)保存人员信息\n"); puts("\t\t\t\t8)浏览人员信息\n"); puts("\t\t\t\t9)退出\n");printf("\t\t\t\t 请选择 [ ]\b\b"); w0=getchar();}while(w0<'1'||w0>'9'); switch(w0-48){case 1:add();break;case 2:delete_data();break;case 3:search();break;case 4:modify();break; case 5:stastic();break;case 6:sort();break;case 7:save();break;case 8:browse();break;case 9:break;} }(1)查询功能int search_data()/*{int i,flag; char s[30],w0;system("cls");/*清屏*/ n=load(); do{fflush(stdin); /*清除缓冲区输入*/printf(" 通过1)编号 2)姓名 [ ]\b\b"); w0=getchar(); }while(w0<'1'||w0>'2'); if(w0=='1'){/*按编号查找*/ flag=0;puts("输入人员编号:"); scanf("%s",s); for(i=0;i<n;i++){if(strcmp(s,staff[i].num)==0){printf_face();printf_one(staff[i]); flag=1;break;} else continue; }if(flag==0)puts("该人员不存在!"); }else {/*按姓名查找*/ flag=0;puts("输入人员姓名:"); scanf("%s",s); for(i=0;i<n;i++){if(strcmp(s,staff[i].name)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0) puts("该人员不存在!");}return i;void search(){int k;char w1;loop: k=search_data();do{fflush(stdin); /*清除缓冲区输入*/printf("1)回主菜单 2)退出 3)继续查询 [ ]\b\b"); w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')menu();else if(w1=='2')exit(0);void add(){char w0,w1;loop: system("cls");puts("请输入编号(如001):");scanf("%s",s.num);if(test(s.num))goto loop;/*编号重复*/puts("请输入姓名:");scanf("%s",);puts("请输入性别(男,女):");scanf("%s",s.sex);puts("请输入年龄:");scanf("%d",&s.age);puts("请输入职务(教授副教授讲师助教学生后勤人员):");scanf("%s",s.duty);puts("请输入职称 (无初级高级 ):");scanf("%s",s.title);puts("请输入政治面貌( 党员非党员 ):");scanf("%s",s.p_landscape);puts("请输入最高学历(小学初中高中大学硕士学位更高):");scanf("%s",s.Qualifications);puts("请输入任职时间:");scanf("%d",&s.Service_time);puts("请输入来院时间(如20050101):");scanf("%s",e_time);puts("请输入人员类别(行政人员教师一般员工退休人员临时工):");scanf("%s",s.category);do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');switch(w0){case 1:save(s);break;case 2:break;}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续增加人员信息 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')goto loop;else if(w1=='2')menu();else exit(0);}(3)保存信息void save(){char w0;save_all();printf("所有信息已保存!\n");do{fflush(stdin); /*清除缓冲区输入*/printf("1) 回主菜单 2) 退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1')menu();else exit(0);}void save_all()/*保存所有数据函数*/{int i;FILE *fp;if((fp=fopen("text.txt","wb"))==NULL){printf("无法打开文件!");exit(0);}for(i=0;i<n;i++){if(staff[i].age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name, staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,sta ff[i].Qualifications,staff[i].Service_time,staff[i].come_time,staff[i].category );else continue;}fclose(fp);}(4)删除人员void delete_data(){int k; char w0,w1;loop: k=search_data();if(k<n){do{fflush(stdin); /*清除缓冲区输入*/printf("确认要删除该人员信息? 1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){staff[k].age=0;save_all();puts("该人员信息已被删除!");} } do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续删除数据 2)回主菜单 3)退出w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1') goto loop; else if(w1=='2')menu(); else exit(0); }(5)修改人员信息 void modify() {int k=0,w0,g; char h[30],w1,w2; loop: g=search_data(); if(g<n){ do{puts("\t\t\t 修改: 1)编号"); puts("\t\t\t 2)姓名"); puts("\t\t\t 3)性别"); puts("\t\t\t 4)年龄"); puts("\t\t\t 5)职务"); puts("\t\t\t 6)职称"); puts("\t\t\t 7)政治面貌"); puts("\t\t\t 8)最高学历"); puts("\t\t\t 9)任职时间"); puts("\t\t\t 10)来院时间"); puts("\t\t\t 11)人员类别"); printf(" 请选择 : [ ]\b\b"); scanf("%d",&w0);}while(w0<1||w0>11); switch(w0){case 1:puts("请输入新编号:");scanf("%s",h);strcpy(staff[g].num,h);break; case 2:puts("请输入姓名:");scanf("%s",h);strcpy(staff[g].name,h);break; case 3:puts("请输入性别:");scanf("%s",h);strcpy(staff[g].sex,h);break; case 4:puts("请输入年龄:");scanf("%d",&k);staff[g].age=k;break; case 5:puts("请输入职务:");scanf("%s",h);strcpy(staff[g].duty,h);break; case 6:puts("请输入职称:");scanf("%s",h);strcpy(staff[g].title,h);break;scanf("%s",h);strcpy(staff[g].p_landscape,h);break;case 8:puts("请输入最高学历:");scanf("%s",h);strcpy(staff[g].Qualifications,h);break;case 9:puts("请输入任职时间:");scanf("%d",&k);staff[g].Service_time=k;break;case 10:puts("请输入来院时间:");scanf("%s",h);strcpy(staff[g].come_time,h);break;case 11:puts("请输入人员类别:");scanf("%s",h);strcpy(staff[g].category,h);break;}do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)保存 2)否[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'2');if(w1=='1'){save_all(); puts("保存修改成功!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续修改 2)回主菜单 3)退出[ ]\b\b");w2=getchar();}while(w2<'1'||w2>'3');if(w2=='1')goto loop;else if(w2=='2')menu();else exit(0);}(6)统计人员信息void stastic(){int i,count;char w0,w1;n=load();if(n==0){puts("没有数据!");getchar();menu();}loop: system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过1)在职人员 2)党员\n");printf(" 3)女工人数 4)最高学历 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'4');if(w0=='1'){/*统计在职人员*/printf_face();for(i=0,count=0;i<n&&staff[i].age;i++)if(strcmp(staff[i].category,"退休人员")!=0&&strcmp(staff[i].category,"临时工")!=0){count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count); }else if(w0=='2'){/*统计党员*/ printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].p_landscape,"党员count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count);}else if(w0=='3'){/*统计女工人员*/ printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].sex,"女")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t 共有%d 条记录",count);}else {/*统计高学历人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0){count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count);} do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)继续统计 2)回主菜单 3)退出 [ ]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1') goto loop; else if(w1=='2')menu(); else exit(0); }(6) 排序功能void sort() {int i,j;char w0,w1; struct staff s1; loop: n=load();system("cls"); do{fflush(stdin); /*清除缓冲区输入*/printf("通过 1)年龄 2)来院时间w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){/*按年龄排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(staff[i].age>staff[j].age){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}else {/*按来院时间排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(strcmp(staff[i].come_time,staff[j].come_time)>0){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}printf_face();for(i=0;i<n;i++) /*显示排序结果*/printf_one(staff[i]);do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)回主菜单 2)继续排序 3)退出[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') menu();else if(w1=='2')goto loop;else exit(0);}四、运行与测试报告*********************************高校人事管理系统******************************1)增加人员信息2)删除人员信息3)查询人员信息4)修改人员信息5)统计人员信息6)对人员排序7)保存人员信息8)浏览人员信息9)退出请选择【 1】请输入编号(如001):20071003335请输入姓名:majianbo请输入性别(男,女):nan请输入年龄:20请输入职务(教授副教授讲师助教学生后勤人员): jiaoshou请输入职称 (无初级高级 ):gaoji请输入政治面貌( 党员非党员 ):danyuan请输入最高学历(小学初中高中大学硕士学位更高): shuoshi请输入任职时间:20070901请输入来院时间(如20050101):20070901请输入人员类别(行政人员教师一般员工退休人员临时工): jiaoshi是否保存?1)是 2)否 [1]该信息已成功保存!1)继续增加人员信息 2)回主菜单 3)退出 [ ]程序:#include<stdlib.h>#include <stdio.h>#include <string.h>struct staff/*定义结构体*/{char num[10];/*编号*/char name[20];/*姓名*/char sex[10];/*性别*/int age;/*年龄*/char duty[20];/*职务*/char title[20];/*职称*/char p_landscape[30];/*政治面貌*/char Qualifications[30];/*学历*/int Service_time;/*任职时间*/char come_time[30];/*来院时间*/char category[30];/*人员类别*/}staff[100];struct staff s;int n;void menu();void printf_face()/*显示数据结构项目函数*/{printf("编号姓名性别年龄职务职称政治面貌学历任职时间来院时间人员类别\n");}void printf_one(struct staff p)/*输出单个数据函数*/{printf("%-4s%-7s%-5s%-3d%-7s%-5s%-8s%-12s%-5d%-12s%-3s\n",p.num,,p.se x,p.age,p.duty,p.title,p.p_landscape,p.Qualifications,p.Service_time,e_tim e,p.category);}int load()/*加载函数*/{int i=0;FILE *fp;if((fp=fopen("text.txt","rb"))==NULL){return 0; exit(0);}for(i=0;!feof(fp);i++){ /*输出数据到结构体*/fscanf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name,staff [i].sex,&staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,staff[i ].Qualifications,&staff[i].Service_time,staff[i].come_time,staff[i].category);} fclose(fp);return i;}int search_data()/*查找单个数据函数*/{int i,flag;char s[30],w0;system("cls");/*清屏*/n=load();do{fflush(stdin); /*清除缓冲区输入*/printf(" 通过1)编号 2)姓名 [ ]\b\b");w0=getchar(); }while(w0<'1'||w0>'2');if(w0=='1'){/*按编号查找*/flag=0;puts("输入人员编号:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,staff[i].num)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0)puts("该人员不存在!");}else {/*按姓名查找*/flag=0;puts("输入人员姓名:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,staff[i].name)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0) puts("该人员不存在!");}return i;}void save_all()/*保存所有数据函数*/{int i;FILE *fp;if((fp=fopen("text.txt","wb"))==NULL){printf("无法打开文件!");exit(0);}for(i=0;i<n;i++){if(staff[i].age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name, staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,sta ff[i].Qualifications,staff[i].Service_time,staff[i].come_time,staff[i].category );else continue;}fclose(fp);}int test(char h[10])/*检查编号是否重复*/{int i;n=load();for(i=0;i<n;i++)if(strcmp(h,staff[i].num)==0){puts("输入的编号有重复!请重新输入编号!");system("pause");return 1;}return 0;}void single_save(struct staff p)/*保存单个数据函数*/{FILE *fp;if((fp=fopen("text.txt","ab+"))==NULL){printf("无法打开文件!");exit(0);}fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",p.num,,p.sex,p.age,p.duty ,p.title,p.p_landscape,p.Qualifications,p.Service_time,e_time,p.category);printf("该信息已成功保存!\n");fclose(fp);}/*********************************修改模块**********************************/ void modify(){int k=0,w0,g;char h[30],w1,w2;loop: g=search_data();if(g<n){do{puts("\t\t\t修改: 1)编号");puts("\t\t\t 2)姓名");puts("\t\t\t 3)性别");puts("\t\t\t 4)年龄");puts("\t\t\t 5)职务");puts("\t\t\t 6)职称");puts("\t\t\t 7)政治面貌");puts("\t\t\t 8)最高学历");puts("\t\t\t 9)任职时间");puts("\t\t\t 10)来院时间");puts("\t\t\t 11)人员类别");printf(" 请选择 : [ ]\b\b");scanf("%d",&w0);}while(w0<1||w0>11);switch(w0){case 1:puts("请输入新编号:");scanf("%s",h);strcpy(staff[g].num,h);break;case 2:puts("请输入姓名:");scanf("%s",h);strcpy(staff[g].name,h);break;case 3:puts("请输入性别:");scanf("%s",h);strcpy(staff[g].sex,h);break;case 4:puts("请输入年龄:");scanf("%d",&k);staff[g].age=k;break;case 5:puts("请输入职务:");scanf("%s",h);strcpy(staff[g].duty,h);break;case 6:puts("请输入职称:");scanf("%s",h);strcpy(staff[g].title,h);break;case 7:puts("请输入政治面貌:");scanf("%s",h);strcpy(staff[g].p_landscape,h);break;case 8:puts("请输入最高学历:");scanf("%s",h);strcpy(staff[g].Qualifications,h);break;case 9:puts("请输入任职时间:");scanf("%d",&k);staff[g].Service_time=k;break;case 10:puts("请输入来院时间:");scanf("%s",h);strcpy(staff[g].come_time,h);break;case 11:puts("请输入人员类别:");scanf("%s",h);strcpy(staff[g].category,h);break;}do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)保存 2)否[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'2');if(w1=='1'){save_all(); puts("保存修改成功!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续修改 2)回主菜单 3)退出[ ]\b\b");w2=getchar();}while(w2<'1'||w2>'3');if(w2=='1')goto loop;else if(w2=='2')menu();else exit(0);}/************************保存模块******************************/void save(){char w0;save_all();printf("所有信息已保存!\n");do{fflush(stdin); /*清除缓冲区输入*/printf("1) 回主菜单 2) 退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1')menu();else exit(0);}/*************************查找模块*****************************/ void search(){int k;char w1;loop: k=search_data();do{fflush(stdin); /*清除缓冲区输入*/printf("1)回主菜单 2)退出 3)继续查询 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')menu();else if(w1=='2')exit(0);else goto loop;}/***************************增加模块*****************************/ void add(){char w0,w1;loop: system("cls");puts("请输入编号(如001):");scanf("%s",s.num);if(test(s.num))goto loop;/*编号重复*/puts("请输入姓名:");scanf("%s",);puts("请输入性别(男,女):");scanf("%s",s.sex);puts("请输入年龄:");scanf("%d",&s.age);puts("请输入职务(教授副教授讲师助教学生后勤人员):");scanf("%s",s.duty);puts("请输入职称 (无初级高级 ):");scanf("%s",s.title);puts("请输入政治面貌( 党员非党员 ):");scanf("%s",s.p_landscape);puts("请输入最高学历(小学初中高中大学硕士学位更高):");scanf("%s",s.Qualifications);puts("请输入任职时间:");scanf("%d",&s.Service_time);puts("请输入来院时间(如20050101):");scanf("%s",e_time);puts("请输入人员类别(行政人员教师一般员工退休人员临时工):");scanf("%s",s.category);do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');switch(w0-48){case 1:single_save(s);break;case 2:break;}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续增加人员信息 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')goto loop;else if(w1=='2')menu();else exit(0);}/*******************************删除模块*****************************/void delete_data(){int k; char w0,w1;loop: k=search_data();if(k<n){do{fflush(stdin); /*清除缓冲区输入*/printf("确认要删除该人员信息? 1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){staff[k].age=0;save_all();puts("该人员信息已被删除!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续删除数据 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') goto loop;else if(w1=='2')menu();else exit(0);}/********************************统计模块*******************************/void stastic(){int i,count;char w0,w1;n=load();if(n==0){puts("没有数据!");getchar();menu();}loop: system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过1)在职人员 2)党员\n");printf(" 3)女工人数 4)最高学历 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'4');if(w0=='1'){/*统计在职人员*/printf_face();for(i=0,count=0;i<n&&staff[i].age;i++)if(strcmp(staff[i].category,"退休人员")!=0&&strcmp(staff[i].category,"临时工")!=0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else if(w0=='2'){/*统计党员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].p_landscape,"党员")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else if(w0=='3'){/*统计女工人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].sex,"女")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else {/*统计高学历人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)继续统计 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') goto loop;else if(w1=='2')menu();else exit(0);}/*******************************排序模块***********************************/ void sort(){int i,j;char w0,w1;struct staff s1;loop: n=load();system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过 1)年龄 2)来院时间 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){/*按年龄排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(staff[i].age>staff[j].age){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}else {/*按来院时间排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(strcmp(staff[i].come_time,staff[j].come_time)>0){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}printf_face();for(i=0;i<n;i++) /*显示排序结果*/printf_one(staff[i]);do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)回主菜单 2)继续排序 3)退出[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') menu();else if(w1=='2')goto loop;else exit(0);}/********************************浏览模块**************************************/void browse(){int i;char w0;n=load();system("cls");printf_face();for(i=0;i<n ;i++)printf_one(staff[i]);printf("\t\t\t\t共有%d条人员记录\n",n);do{fflush(stdin); /*清除缓冲区输入*/printf(" 1)回主菜单 2)退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1') menu();if(w0=='2') exit(0);}/********************************主菜单函数*************************************/void menu(){char w0;do{system("cls");fflush(stdin); /*清除缓冲区输入*/puts("*********************************高校人事管理系统*******************************\n\n");puts("\t\t\t\t1)增加人员信息\n");puts("\t\t\t\t2)删除人员信息 \n");puts("\t\t\t\t3)查询人员信息\n");puts("\t\t\t\t4)修改人员信息\n");puts("\t\t\t\t5)统计人员信息\n");puts("\t\t\t\t6)对人员排序\n");puts("\t\t\t\t7)保存人员信息\n");puts("\t\t\t\t8)浏览人员信息\n");puts("\t\t\t\t9)退出\n");printf("\t\t\t\t请选择 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'9');switch(w0-48){case 1:add();break;case 2:delete_data();break;case 3:search();break;case 4:modify();break;case 5:stastic();break;case 6:sort();break;case 7:save();break;case 8:browse();break;case 9:break;}}/***********************************主函数****************************************/void main(){menu();}。

c语言职工工资管理系统代码

c语言职工工资管理系统代码

c语言职工工资管理系统代码随着社会的发展和经济的进步,职工工资管理成为了企业管理中的重要一环。

为了提高工资管理的效率和准确性,许多企业开始采用计算机软件来进行工资管理。

本文将介绍一个基于C语言的职工工资管理系统代码。

首先,我们需要定义一些基本的数据结构和变量。

在这个系统中,我们需要记录每个职工的姓名、工号、基本工资、津贴、扣款等信息。

我们可以使用结构体来定义这些信息,例如:```cstruct Employee {char name[20];int id;float basicSalary;float allowance;float deduction;};```接下来,我们可以定义一些函数来实现不同的功能。

例如,我们可以编写一个函数来添加新的职工信息:```cvoid addEmployee(struct Employee *employees, int *count) { printf("请输入职工姓名:");scanf("%s", employees[*count].name);printf("请输入职工工号:");scanf("%d", &employees[*count].id);printf("请输入职工基本工资:");scanf("%f", &employees[*count].basicSalary);printf("请输入职工津贴:");scanf("%f", &employees[*count].allowance);printf("请输入职工扣款:");scanf("%f", &employees[*count].deduction);(*count)++;}```我们还可以编写一个函数来计算每个职工的实际工资:```cfloat calculateSalary(struct Employee employee) {return employee.basicSalary + employee.allowance - employee.deduction;}```接下来,我们可以编写一个函数来显示所有职工的信息和实际工资:```cvoid displayEmployees(struct Employee *employees, int count) {printf("姓名\t工号\t基本工资\t津贴\t扣款\t实际工资\n");for (int i = 0; i < count; i++) {printf("%s\t%d\t%.2f\t\t%.2f\t%.2f\t%.2f\n", employees[i].name, employees[i].id, employees[i].basicSalary, employees[i].allowance, employees[i].deduction, calculateSalary(employees[i]));}}```最后,我们可以编写一个主函数来实现整个系统的流程:```cint main() {struct Employee employees[100];int count = 0;int choice;do {printf("请选择操作:\n");printf("1. 添加职工信息\n");printf("2. 显示职工信息\n");printf("3. 退出\n");scanf("%d", &choice);switch (choice) {case 1:addEmployee(employees, &count);break;case 2:displayEmployees(employees, count);break;case 3:printf("感谢使用职工工资管理系统!\n"); break;default:printf("无效的选择,请重新输入!\n");break;}} while (choice != 3);return 0;}```通过以上代码,我们可以实现一个简单的职工工资管理系统。

c语言课程设计之人事管理系统

c语言课程设计之人事管理系统

C语言课程设计之人事管理系统简介人事管理系统是一种用于管理组织内人员信息和管理人力资源的系统。

在本文档中,我们将介绍一个使用C语言编写的简单人事管理系统。

该系统可以实现员工信息的添加、删除、修改和查询,以及一些基本的人事管理功能。

功能模块1. 员工信息管理模块•添加员工信息:包括姓名、工号、职位、部门等基本信息。

•删除员工信息:根据工号删除指定员工的信息。

•修改员工信息:根据工号修改指定员工的信息。

•查询员工信息:可以根据姓名、工号等条件查询员工的信息。

2. 薪资管理模块•发放工资:根据员工的工作时长、加班情况等计算工资并发放。

•调整薪资:可以根据员工表现调整薪资水平。

3. 考勤管理模块•打卡记录:记录员工的上下班打卡情况。

•考勤统计:统计员工的出勤情况,包括迟到、早退、旷工等信息。

系统设计1. 数据结构•员工信息结构体:包括姓名、工号、职位、部门等信息。

•薪资结构体:包括基本工资、加班工资等信息。

•考勤记录结构体:包括打卡时间、出勤情况等信息。

2. 功能实现•员工信息管理:使用链表或数组存储员工信息,实现增删改查操作。

•薪资管理:根据员工的工作情况计算薪资并更新薪资信息。

•考勤管理:记录员工的打卡信息并统计考勤情况。

系统实现1. 界面设计•采用控制台界面,通过菜单选择实现各项功能。

•显示员工信息列表、薪资管理界面和考勤记录界面。

2. 代码实现•使用C语言实现各个功能模块,包括管理员工信息、计算薪资、记录考勤等。

•采用函数封装、模块化设计,提高代码的可读性和可维护性。

测试与验证1. 单元测试•对每个功能模块进行单元测试,确保功能的正确性。

•模拟各种情况,包括正常情况和异常情况。

2. 系统测试•综合测试所有功能模块,验证系统的完整性和稳定性。

•模拟真实使用情况,检查系统的性能和可靠性。

总结通过本文档的介绍,我们了解了一个简单的C语言编写的人事管理系统的设计思路和实现方法。

人事管理系统是组织管理中的重要系统之一,对于提高工作效率和管理人力资源具有重要意义。

c语言课程设计--职工考勤管理系统

c语言课程设计--职工考勤管理系统

c语言课程设计--职工考勤管理系统青岛理工大学《C语言程序设计》题目职工考勤管理程序指导教师:姓名:学号:班级:专业:计算机工程地点:计算机工程学院机房时间:2022.6.30至2022.7.4一、内容此系统以对职工考勤为背景,提供对职工信息、上下班时间的录入、显示、查询、删除等功能。

具体功能实现如下:1、职工信息新建:实现职工工号、姓名、顺序号、上下班时间的录入功能,并能将其以文件形式加以保存。

2、3、4、5、考勤信息浏览:实现对全体职工所投的的考勤信息的浏览功能。

查询功能:实现按工号或姓名查询职工一周的上下班时间的功能。

删除功能:实现对职工考勤信息的删除管理。

系统以菜单方式工作,界面清晰,易于操作。

二、上机环境操作系统:window某p/8.1开发工具:vc6.0三、函数调用关系图录入函数input()主函数显示函数diplay()查询函数earch0()删除函数del()四、各函数功能说明对每个函数功能加以说明,说明该函数主要实现了什么内容。

例如:1.main()主函数2.voidinput();录入函数3.voiddiplay();显示函数4.voidearch0();查找函数5.voiddel();删除函数五、算法描述或流程图(或者进行描述,或者绘出流程图,例子见下)主函数欢迎界面程序主菜单输入要选择的选项前的序号,给某赋值Switch()Cae条件Cae1Cae2Cae3Cae4Del()Cae5E某it()DefultInput ()Diplay()Search0()录入函数定义局部变量i,某打开文件(某!=’n’)Do-while循环Scanf输入职工信息进入结构Fwrite把输入的职工信息写入文件输入结束标记某(是n就结束,否则继续输入),判断是否跳出循环打不开文件输出“打不开文件”显示函数定义局部变量i打开文件Feek查询文件的末尾,计算nRewind将指针指向文件开头i查询函数定义局部变量打开文件Feek查询文件的末尾,计算n(结构体个数)Rrewind将指针指向文件开头i删除函数定义局部变量打开文件Feek查询文件的末尾,计算n(结构体个数)Rrewind将指针指向文件开头i六、程序运行效果图;欢迎界面主菜单录入考勤信息显示考勤信息查询考勤信息删除考勤信息删除考勤信息成功七、总结通过这次做C语言课设,我发现这学期在老师那学的只是一些皮毛而已。

c语言课程设计报告 职工工资管理系统

c语言课程设计报告 职工工资管理系统

一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。

•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。

2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。

3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。

4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。

5. 删除记录:可删除数据文件中的任一记录。

6.恢复记录:能恢复被删除的任一记录。

7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。

(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。

8.保存数据文件功能。

9.打开数据文件功能。

经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。

程序运行结果如下表所示(记录个数至少8 个)。

二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。

同时将数据储存在ckerk_list文件中并自动保存至磁盘。

注:如首次使用,尚未输入数据,请先输入数据。

输入的数据将自动保存。

再次选择输入功能时原数据将被覆盖。

②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。

若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。

C语言课程设计报告 职工信息管理系统

C语言课程设计报告 职工信息管理系统

case 0: exit(); } printf("\n\n 操作完毕,请再次选择!"); } else printf("\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.num,one.sex,one.age,one.recor d,one.position,one.wanges,one.tel,one.addr); fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.n um,one.sex,one.age,one.record,one.position,one.wanges,one.tel,one.addr); fclose(fp); }
5 数据删除 【程序】
void delete() { int m,k=0; long a,b; char namekey[8], valid[4]; printf("\n 请输入您要删除的职工姓名:"); scanf("%s",namekey); if((fp=fopen("worker.xls","r+"))==NULL) { printf("\n 不能打开该文件!"); exit(); } while(!feof(fp)) { a=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",,one.num,one.sex,one.age,one. record,one.position,one.wanges,one.tel,one.addr); if(strcmp(namekey,)==0) { k=1; break; } } if(k==1) {

C语言程序设计-职工信息管理系统

C语言程序设计-职工信息管理系统

河南理工大学计算机科学与技术学院课程设计报告20 12 — 20 13 学年第二学期设计名称职工信息管理系统设计上机地点上机日期学生姓名学号专业班级指导教师年月日一.设计目的:通过亲自设计程序,可以令我们熟悉c语言操作,更熟练的掌握c语句。

初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。

二.总体设计:三.详细设计:(一). 为了方便使用结构此系统结构均为全局类型定义struct employee //定义一个职工信息的结构体{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100];(二).各模块的功能和实现1.菜单模块:显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。

2.输入模块:输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的void input()函数来实现。

3.保存模块:将内存中职工的信息输出到磁盘文件中,可以通过自己定义的void save(int)函数来实现。

4.浏览模块:浏览所有职工的相关信息,通过自己定义的void display()函数来实现。

5.删除模块:删除需要删除的职工的所有信息,通过自己定义的void del()函数来实现。

6.添加模块:添加需要添加的职工的相关信息,通过自己定义的void add()函数来实现。

7.按职工号查询模块:可以按职工号来查询职工的相关信息,通过自己定义的void search_num()函数来实现。

8.按职工的的学历查询模块:可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。

9.按职工的电话号码查询模块:可以按职工的电话来查询职工的相关信息,通过自己定义的void search_tel函数来实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1 课程设计目的...................................................................................... 3 2.2 课程设计任务...................................................................................... 2 2.3 设计环境.............................................................................................. 2 2.4 开发语言.............................................................................................. 2 3 分析和设计.................................................................................................... 3 3.1 模块设计.............................................................................................. 4 3.2 系统流程图.......................................................................................... 4 3.3 主要模块的流程图.............................................................................. 5 4 具体代码实现................................................................................................ 7 5 课程设计总结................................................................................................ 9 5.1 程序运行结果 / 预期运行结果........................................................9 5.2 课程设计体会.................................................................................... 13 参考文献.......................................................................................................... 14 致 谢.......................................................................................................... 14
5. 信息删除是删除职工一些信息。 6. 信息添加是增加一些职工信息。
职工信息管理系统
菜单 选择
信息 输入
信息 浏览
信息 查询
信息 删除
信息 添加
按工号 查询
按姓名 查询
按学历 查询
3.1 模块设计
定义结构体类型 struct employee 表示职工信息(包括:工号、姓名、联系电 话、性别、工资、学历、年龄、地址),定义一个结构体数组 em[N],用来存放 N 个学生的信息,假设 N 为 3。如下所示:
()
()
输入功能代码
switch(n)
n=3
调用查 询函数
search
()
n=4
调用删 除函数
del
()
n=5
调用添 加函数
add
()
default
退出
exit (0)
结束
图 3.2 主函数流程图
1、主函数 显示程序中所有功能和所有会调用到的函数名。再运用选择函数 switch 根据所输入的数字进入对应的功能程序。 具体程序如下:
3.查询职工信息\n");
printf("
4.删除职工信息\n");
printf("
5.添加职工信息\n");
printf("
6.退出\n");
printf("\n");
scanf("%d",&n);
switch(n)
{
case 1:printf("
输入职工信息
\n");printf("\n");input();main();break;
结束
图 3.3 录入函数流程图
2、输入函数 定义一个结构体 struct employee 和数组 em[N]用来存储 N 个职工信(职
工号 em[i].number、姓名 em[i].name、性别 em[i].sex、年龄 em[i].age、 学 历 em[i].xueli 、 学 历 工 资 em[i].wage 、 住 址 em[i].address 、 电 话 em[i].telephone)。通过 for 循环输入所有职工信息。用 printf 语句提示 需要输入的内容,接着用 scanf 语句输入相应的内容。输入完毕后套用保存
1. 菜单选择是职工信息管理的入口,进行的各种操作均需要这里进 行选择。
2. 信息输入是将职工的信息输入到文件中,包括工号、姓名、性别、 年龄、学历、工资、住址、电话等。
3. 信息浏览是将已经输入的职工信息的显示出来。 4. 信息查询是用来查询职工的信息,查询方式有按工号查询和姓名 查询还有按学历查询三种方式。
2.3 设计环境
(1)WINDOWS 2000/2003/XP/7/Vista 系统 (2)Visual C++或 TC 集成开发环境 2.4 开发语言
C 语言
3 分析设计
职工信息管理系统编程的作用是将职工的信息存放在文件中,然后在程序中 可以浏览、查询、删除、添加职工的信息,好方便了解职工信息,同时能够及时 刷新职工信息。职工信息管理系统可以按功能进行以下划分,如下图所示:
打基础。
2.2 课程设计任务
设计一个职工信息管理系统,使之能提供职工信息录入功能、职工信息浏览 功能、查询功能:按姓名查询,职工信息包括职工号,姓名,性别,年龄,学历, 工资,住址,电话等。实现菜单设计,使用数据文件保存和修改, 应用结构体和指 针等内容。
1、 查阅相关文献资料; 2、 按时完成系统的设计并且能够运行; 3、 要求程序正确,功能可靠;操作简单,使用方便; 4、 课程设计交流:认真写课程设计日志,每 2 天指导老师审查,通 过邮件、电话,或者面谈与导师沟通汇报情况。 5、 按课程设计(论文)要求,写课程设计论文。
#define N struct employee { int number;
int age; int wage; char name[20]; char sex[10]; char address[30]; char xuelil[20]; long int telephone;
}em[N]; 定义函数 input(),用来输入若干职工信息存入 em 数组中。 定义函数 save(),用来把结构体数组中的信息写入文件 bbb.txt 中。在 save 函数中先用写的方式保存到文件 bbb.txt,然后以读的方式打开文件 bbb,指针变量 fp,打开文件 bbb 失败就退出。 定义函数 search(),用来在文件中查找某职工的信息。 定义函数 display(),用来显示某职工的信息。 定义函数 del(),用来删除某职工的信息。 定义函数 add(),用来添加某职工的信息。
case 2:printf("
浏览职工信息
\n");printf("\n");display(*p);main();break;
case 3:printf("
查询职工信息
\n");printf("\n");search();break; case 4:printf("
\n");printf("\n");del(p);break; case 5:printf("
3.2 系统流程图
系统流程图如下:
开始 菜单选择


入?



览?



询?



加?



除?
信息输 入
信息浏 览
信息查 询
信息添 加

信息删 除
结束
图 3.1 系统流程图
3.3 主要模块的流程图
主函数模块流程图如下:
开始 显示菜单
n=1
n=2
调用输 入函数
调用浏览 函数
input display
(7)职工信息删除、添加功能
2.1 课程设计目的
学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问 题的专业课题。通过课程设计(论文),将课本上的理论知识和实际有机结合起 来,提高学生的分析解决实际问题的能力;加强学生适应实际,实践编程的能力; 锻炼使用文献资料及进行科学实验或技术设计的初步能力,为毕业设计(论文)
2 需求分析
1、程序结构合理 2、界面比较美观 3、最好使用结构、体指针 4、输入时有提示,输出美观,整齐 职工信息由工号、姓名、性别、年龄、学历、工资、住址、电话等构成。 功能要求:
相关文档
最新文档