C语言职工信息管理系统设计精选Word文档格式.docx

上传人:b****6 文档编号:19580787 上传时间:2023-01-08 格式:DOCX 页数:47 大小:339.94KB
下载 相关 举报
C语言职工信息管理系统设计精选Word文档格式.docx_第1页
第1页 / 共47页
C语言职工信息管理系统设计精选Word文档格式.docx_第2页
第2页 / 共47页
C语言职工信息管理系统设计精选Word文档格式.docx_第3页
第3页 / 共47页
C语言职工信息管理系统设计精选Word文档格式.docx_第4页
第4页 / 共47页
C语言职工信息管理系统设计精选Word文档格式.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

C语言职工信息管理系统设计精选Word文档格式.docx

《C语言职工信息管理系统设计精选Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言职工信息管理系统设计精选Word文档格式.docx(47页珍藏版)》请在冰豆网上搜索。

C语言职工信息管理系统设计精选Word文档格式.docx

102

罗斯

103

张满

104

林磊

105

胡水

106

王源

107

李君

108

张清

109

万羽

3.数据结构

本程序定义了结构体emplyee,用于存放职工的基本信息和工资信息。

typedefstructemployee/*标记为employee*/

{

charnum[10];

charname[15];

charsex;

char

char

intgz;

}ZGGZ

其各字段的值的含义如下。

num[10]:

保存职工编号

name[15]:

保存职工姓名

sex:

保存职工性别

保存职工部门

保存职工职称

gz:

保存职工工资

二程序设计

1建立职工信息结构体

(1)函数原型功能和形参说明

1)printheader()

函数原型:

voidprintheader()

printheader()函数用于在以表格形式显示记录时,打印输出表头信息。

2)printdata()

函数原型:

voidprintdata(ZGGZpp)

printdata()函数用于以表格显示的方式,打印输出单个数组元素pp中的记录信息。

3)Disp()

voidDisp(ZGGZtp[],intn)

Disp()函数用于显示tp数组中存储的n条记录,内容为emplyee结构中定义的内容。

4)numberinput()

floatnumberinput(char*notice)

numberinput()函数用于输入数值型数据,notice用于保存printf()中输出的提示信息。

该函数返回用户输入的浮点类型数据值。

5)Stringinput()

voidStringinput(char*t,intlens,char*notice)

Stringinput()函数用于输入字符串,并进行字符串长度验证(长度<

lens),t用于保存输入的字符串,因为是以指针形式传递的,所以t相当于该函数的返回值。

notice用于保存printf()中输出的信息。

6)Locate()

intLocate(ZGGZtp[],intn,charfindmess[],charnameornum[])

Locate()函数用于定位数组中符合要求的元素,并返回该数组元素的下标值。

参数findmess[]保存要查找的具体内容,nameornum[]保存按什么字段在数组tp中查找。

7)Add()

intAdd(ZGGZtp[],intn)

Add()函数用于在数组tp中增加工资记录元素,并返回数组中的当前记录数。

8)Qur()

voidQur(ZGGZtp[],intn)

Qur()函数用于在数组tp中按职工编号或姓名查找满足条件的记录,并显示出来。

9)Del()

intDel(ZGGZtp[],intn)

Del()函数用于先在数组tp中找到满足条件的记录,然后删除该记录。

10)Modify()

voidModify(ZGGZtp[],intn)

Modify()函数用于在数组tp中修改记录元素。

11)Insert()

intInsert(ZGGZtp[],intn)

Insert()函数用于在数组tp中插入记录,并返回数组中的当前记录数。

12)Tongji()

voidTongji(ZGGZtp[],intn)

Tongji()函数用于在数组tp中完成记录的统计工作,统计该公司职工工资的整体分布情况。

13)Sort()

voidSort(ZGGZtp[],intn)

Sort()函数用于在数组tp中完成利用冒泡排序算法实现数组的按实发工资字段的降序排序。

14)save()

voidSave(ZGGZtp[],intn)

Save()函数用于将保存职工工资的数组tp中的n个元素写入磁盘的数据文件中。

15)主函数main()

Main()是整个工资管理系统控制部分

(2)程序清单

#inclu#include<

stdio.h>

#include<

stdlib.h>

string.h>

structemployee

charsex[5];

chardepartment[30];

charfunction[32];

intwage;

};

intreademployeest[]);

voidmenu();

voidwriteemployeest[]);

voidadd();

voidselect();

//查看职工所有信息

voidnamequery();

//按姓名查询

voidnumdel();

//按工号删除

voidtongji();

//统计

voidsort();

//排序

voidnummodify();

//按工号修改职工信息

voidsave();

//保存信息

voidfh();

//返回主菜单

structemployeest[300];

//这个数组用来保存所有的职工信息和文件里面的一致

intNumber=0;

//记录总的职工人数也就是数组/文件里面的职工人数

voidmain()

intchoose=0;

FILE*fp=NULL;

charyesorno;

if((fp=fopen("

student1.txt"

"

rb+"

))==NULL)

{

printf("

\n=========>

提示:

文件不存在,是否要创建一个?

(y/n)\n"

);

scanf("

%c"

&

yesorno);

if(yesorno=='

y'

||yesorno=='

Y'

{

//这里仅为了建立文件

fp=fopen("

wb+"

fclose(fp);

//关闭fp所指的文件,释放文件缓冲区

}

else

exit(0);

Number=read);

//要是文件已经有数据将数据初始化到数组中

system("

cls"

while(true)

menu();

printf("

\t\t====>

请选择:

"

scanf("

%d"

choose);

system("

switch(choose)

case0:

exit(0);

//退出

break;

case1:

add();

fh();

//增加职工信息

case2:

select();

//查看职工信息

case3:

namequery();

//查找

case4:

numdel();

//删除

case5:

tongji();

//统计

case6:

sort();

//排序

case7:

nummodify();

//修改后返回

case8:

save();

//保存

default:

}

fflush(stdin);

getchar();

voidsave()

\t=====程序在运行时已自动保存.....\n"

voidfh()

\t===>

按Enter键返回主菜单\n"

voidnummodify()//修改职工信息

FILE*fp=NULL;

charxh[60];

inti=0;

intchangeIndex=0;

//changeIndex改变标记

intindex=0;

请输入要修改的职工编号:

%s"

xh);

for(i=0;

i<

Number;

i++)

if(strcmp(xh,st[i].num)==0)//比较输入工号和数组中已有工号

changeIndex=i;

//保存要修改的人的下标

\t工号\t姓名\t性别\t部门\t职能\t工资\n"

\t%s\t%s\t%s\t%s\t%s\t%d\n\n"

st[changeIndex].num,st[changeIndex].name,st[changeIndex].sex,st[changeIndex].department,st[changeIndex].function,st[changeIndex].wage);

请重新输入该职工信息"

工号:

st[changeIndex].num);

st[changeIndex].name);

性别:

st[changeIndex].sex);

部门:

st[changeIndex].department);

职能:

st[changeIndex].function);

工资:

st[changeIndex].wage);

//信息修改后重新更新文件里面的数据以保持数据一致性

fp=fopen("

fwrite(&

st[i],sizeof(structstudent),1,fp);

//把ptr所指向n*size个字节输入到fp所指向的文件中

\t=======>

修改成功\n"

voidsort()//排序

structstudentt;

intwantNUmber=0;

intj=0;

intk=0;

for(i=0;

Number1;

k=i;

for(j=i+1;

j<

j++)

if(st[j].wage>

st[k].wage)

k=j;

if(k!

=i)

t=st[i];

st[i]=st[k];

st[k]=t;

你想输出前几名的成绩:

wantNUmber);

if(wantNUmber>

Number)

wantNUmber=Number;

wantNUmber;

st[i].num,st[i].name,st[i].sex,st[i].department,st[i].function,st[i].wage);

}

voidtongji()//统计

inti,m,k,max,min;

doublesum=0.0;

sum+=st[i].wage;

总工资为:

%f\n"

sum);

平均工资为:

sum/Number);

i=0;

m=0;

max=0;

max=st[m].wage;

for(i=1;

if(st[i].wage>

max)

m=i;

最高工资为:

%d\n"

max);

st[m].num,st[m].name,st[m].sex,st[m].department,st[m].function,st[m].wage);

k=0;

min=0;

min=st[0].wage;

if(st[i].wage<

min)

min=st[k].wage;

最底工资分:

min);

st[k].num,st[k].name,st[k].sex,st[k].department,st[k].function,st[k].wage);

voidnumdel()//按工号删除

请输入要删除的职工工号:

if(strcmp(xh,st[i].num)==0)//如果查找到就删除

for(j=i;

st[j]=st[j+1];

//将剩余数据写入文件重新一写的方式打开文件把以前的数据擦除了

student1.dat"

wb"

删除成功;

\n"

voidnamequery()//按姓名查找

charname[20];

请输入要查找职工姓名:

name);

if(strcmp(name,st[i].name)==0)

voidselect()//查看职工

以下是全部职工信息\n"

voidadd()//增加职工

intnumberTemp=0;

structstudenttemp;

//临时保存信息

请输入要增加职工个数:

numberTemp);

numberTemp;

输入%d个职工信息\n"

i+1);

temp.num);

temp.name);

temp.sex);

temp.department);

temp.function);

temp.wage);

st[Number++]=temp;

//将刚添加的写入到数组

write);

//将刚添加的写入到文件

添加成功\n"

voidwritestudent*st)

fwrite(st,sizeof(structstudent),1,fp);

intreadstudentst[])

rb"

while(fread(&

st[i],sizeof(structstudent),1,fp))

i++;

returni;

voidmenu()

\t***********************************************************************\n"

\t**\n"

\t*职工信息管理系统结构体数组实现*\n"

\t*[1]增加职工信息[2]查看职工信息*\n"

\t*[3]查找职工信息[4]删除职工信息*\n"

\t*[5]平均工资,最高工资,最底工资[6]工资排列*\n"

\t*[7]修改职工信息[8]保存数据*\n"

\t*[0]退出系统*\n"

(3)运行结果

}}}

(3

主界面

增加职工信息

查看职工信息

查找职工信息

删除职工信息

平均工资

修改职工信息

保存数据

2)建立职工信息单链表

#include"

stdio.h"

stdlib.h"

string.h"

intsaveflag=0;

/*是否需要存盘的标志变量*/

structemployee

{

/*职工姓名*/

/*职工工号*/

charxb[4];

/*职工性别*/

charbm[10];

/*部门*/

charzc[10];

/*工号职称*/

floatgz;

/*工资*/

intmingci;

/*名次*/

typedefstructnode

structemployeedata;

structnode*next;

}Node,*Link;

//Linkl(注意是:

字母l不是数字1)

voidadd(Linkl);

voiddisp(Linkl);

voiddel(Linkl);

//删除功能

Node*Locate(Linkl,charfindmess[],charnameornum[]);

voidQur(Linkl);

//查询功能

voidTongji(Linkl);

voidSort(Linkl);

voidModify(Linkl);

//修改功能

voidSave(Linkl);

//保存功能

voidprinte(Node*p);

//本函数用于打印链表中某个节点的数据内容*/

//以下4个函数用于输出中文标题

voidprintstart();

voidWrong();

voidNofind();

voidprintc();

{printf("

\t*****************************************************************\n"

\t*职工信息管理系统单链表实现*\n"

\t*[1]增加职工信息[2]删除职工信息*\n"

\t*[3]查询职工信息[4]修改

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1