c语言单链表实现职工工资管理.docx
- 文档编号:11395715
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:26
- 大小:19.81KB
c语言单链表实现职工工资管理.docx
《c语言单链表实现职工工资管理.docx》由会员分享,可在线阅读,更多相关《c语言单链表实现职工工资管理.docx(26页珍藏版)》请在冰点文库上搜索。
c语言单链表实现职工工资管理
/*******************************************************************************
职工工资管理小软件
*******************************************************************************/
#include
#include
#include
#include
/******************************************************************************
职工变量定义
******************************************************************************/
typedefstructemployee
{
/*数据域*/
charsex[10];//性别
charage[10];//年龄
charpost[10];//岗位
charEmployeeID[15];//工号
charname[10];//姓名
intbasesalary;//基本工资
intpostwage;//岗位工资
floattotalwage;//总工资
/*指针域*/
structemployee*next;
}LNode,*LinkList;
/******************************************************************************
全局变量定义
******************************************************************************/
intiCount=0;
intsaveflag=0;/*是否需要存盘的标志变量*/
/*****************************************************************************
函数声明
******************************************************************************/
voidMainMenu();//登陆函数
intmenu();//主菜单函数
LinkListCreatLinkList();//职工信息创建函数
voidstringinput(char*t,intlens,char*notice);//字符长度判断函数函数
voidShowLinkList(pHead);//职工信息输出函数
voidOutOneNode(LinkListPNode);//输出一个节点的数据
LinkListFindWorker(LinkListpHead);//职工信息查询函数
voidupdate(LinkListpHead);//职工信息修改函数
voidsortList(LinkListpHead);//职工工资排序函数
LinkListFindWorker(LinkListpHead);//按职工姓名查找
LinkListFind_ByEmployeeID(LinkListpHead);//按职工工号查找
LinkListLoadData(LinkListpHead);
voidUpdateInfo();//职工信息更新函数
voidSaveData(LinkListpHead);//职工信息保存函数
//职工信息导入函数
voidauthor();//查询作者信息函数
voidback();//返回上一界面函数
/*****************************************************************************
系统主函数
******************************************************************************/
voidmain()
{
intiChoice;
for(;;)
{
system("cls");
printf("\n\n\n\n");
printf("欢迎进入职工工资管理系统\n\n\n");
printf("1进入管理系统\n\n");
printf("2查看作者信息\n\n");
printf("0退出\n\n");
printf("\n\n\n\n");
printf("请输入您的选择(0-2):
\n");
scanf("%d",&iChoice);
while(iChoice<0||iChoice>2)
{
system("cls");
printf("\n\n\n\n");
printf("欢迎进入职工工资管理系统\n\n\n");
printf("1进入管理系统\n\n");
printf("2查看作者信息\n\n");
printf("0退出\n\n");
printf("\n\n\n\n");
printf("您的输入有误!
\n");
printf("请重新输入您的选择(0-2):
\n");
scanf("%d",&iChoice);
}
switch(iChoice)
{
case1:
MainMenu();break;
case2:
author();back();break;
case0:
system("cls");
printf("\n\n\n\n\n\n");
printf("谢谢使用!
\n\n");
printf("\t再见!
\n\n\n\n");
exit(0);
}
fflush(stdin);
getchar();
system("cls");
}
}
/*****************************************************************************
功能:
登陆函数,进行密码验证
*****************************************************************************/
voidMainMenu()
{
charkey[10],password[10]="123";
intiNum=1;
LinkListpHead;//定义单链表结点指针
printf("请输入密码:
\t");
scanf("%s",key);
while(iNum<=3)
{
if(strcmp(password,key)==0)
{
while
(1)
{
intiChoice;
iChoice=menu();
system("cls");
switch(iChoice)
{
case1:
pHead=CreatLinkList();back();break;//创建职工信息
case2:
ShowLinkList(pHead);back();break;//显示职工信息
case3:
printf("\n\n\n\n");
printf("欢迎进入职工信息查询模块\n\n\n\n\n");
FindWorker(pHead);back();break;//查询职工信息
case4:
update(pHead);back();break;//职工信息添加
case5:
printf("\n\n\n\n");
printf("欢迎进入职工信息修改模块\n\n\n\n\n");
update(pHead);back();break;//职工信息修改
case6:
SaveData(pHead);back();break;//职工信息保存
case7:
sortList(pHead);back();break;//职工信息
case8:
//save(pHead);break;//职工信息
case9:
author();back();break;
case10:
//copy();break;//职工信息
case11:
//pHead=load(pHead);break;//职工信息
case0:
system("cls");
printf("\n\n\n\n");
printf("谢谢使用!
\n\n");
printf("\t再见!
\n\n\n\n");
//save();
exit(0);
}
fflush(stdin);
getchar();
system("cls");
}
}
else
{
iNum++;
printf("\n您是非法用户!
请输入密码:
\t");
scanf("%s",key);
if(iNum>2)
{
if(strcmp(password,key)==0)
continue;
else
{
printf("\n输入密码错误3次,系统将自动退出!
\n\n");
printf("欢迎下次使用!
\n\n");
exit(0);
}
}
}
}
}
/************************************************************************
功能:
主菜单函数,用于主显示菜单
参数:
iChoice
类型:
int
说明:
变量
返回值:
iChoice
************************************************************************/
intmenu()
{
intiChoice;
system("cls");
printf("\n您是合法用户!
");
printf("\n\n\n");
printf("|*****************欢迎进入职工工资管理系统************************|\n");
printf("||\n");
printf("||\n");
printf("|1职工信息创建|\n");
printf("||\n");
printf("|2职工信息浏览|\n");
printf("||\n");
printf("|3职工信息查询|\n");
printf("||\n");
printf("|4职工信息添加|\n");
printf("||\n");
printf("|5职工信息修改|\n");
printf("||\n");
printf("|6职工信息保存|\n");
printf("||\n");
printf("|7职工信息删除|\n");
printf("||\n");
printf("|8职工信息读取|\n");
printf("||\n");
printf("|9职工工资排序|\n");
printf("||\n");
printf("|10职工工资统计|\n");
printf("||\n");
printf("|0退出系统|\n");
printf("||\n");
printf("||\n");
printf("|*****************************************************************|\n");
printf("\n\n");
printf("请输入你所选择的选项(0-9):
");
scanf("%d",&iChoice);
while(iChoice>12||iChoice<0)
{
printf("您的输入有误!
\n");
printf("请重新输入你所选择的选项(0-9):
");
scanf("%d",&iChoice);
}
returniChoice;
}
/*****************************************************************************
功能:
输入字符长度判断函数,判断输入字符长度是否超过原定长度
*****************************************************************************/
voidstringinput(char*t,intlens,char*notice)
{
charn[50];
do
{
printf(notice);//显示提示信息
scanf("%s",n);//输出字符串
if(strlen(n)>(size_t)lens)
printf("\n输入字符过长!
");//超过lens只重新输入
}while(strlen(n)>(size_t)lens);
strcpy(t,n);//将输入的字符串拷贝到字符串t中
}
/*****************************************************************************
功能:
职工信息创建
*****************************************************************************/
LinkListCreatLinkList()//创建一个链表,包含n个节点
{
LinkListpHead;
LinkListpNew,pTail;
inti,iNum=0;
pHead=(LinkList)malloc(sizeof(LNode));//为头节点分配内存空间
if(pHead==NULL)
{
printf("分配空间失败!
");
exit
(1);
}
else
pHead->next=NULL;//链表初始化
system("cls");
printf("\n\n\n\n");
printf("欢迎进入职工信息创建模块\n\n\n\n\n");
printf("请输入要添加职工的个数:
\n");
scanf("%d",&iNum);
if(iNum>0)
{
/*利用for循环一次实现各节点的创建和数据的输入*/
for(i=0;i { pNew=(LinkList)malloc(sizeof(LNode));//为后继节点分配内存空间 if(pNew==NULL) { printf("分配空间失败! "); exit (1); } else { printf("\n\n"); printf("请输入第%d个职工信息: \n\n",i+1); printf("提示: 输入职工姓名为0则终止创建! \n\n"); stringinput(pNew->name,10,"\n请输入职工姓名: \t\t"); if(strcmp(pNew->name,"0")==0) break; stringinput(pNew->post,10,"\n请输入职工岗位: \t\t"); stringinput(pNew->EmployeeID,15,"\n请输入职工工号: \t\t"); stringinput(pNew->sex,10,"\n请输入职工性别: \t\t"); stringinput(pNew->age,10,"\n请输入职工年龄: \t\t"); printf("\n请输入职工基本工资: \t"); scanf("%d",&pNew->basesalary); printf("\n请输入职工岗位工资: \t"); scanf("%d",&pNew->postwage); if(pHead->next==NULL) { pHead->next=pNew; pTail=pNew; iCount++; } else { pTail->next=pNew;//将pNew链到链表中 pTail=pNew; iCount++; } } } pTail->next=NULL;//将链表的最后一个节点的指针域置空 printf("\n\n"); printf("当前共输入%d个职工信息\n\n",iCount); } printf("\n\n"); printf("职工信息创建完成! \n\n"); returnpHead; } /******************************************************************************* 功能: 输出一个节点的数据 ********************************************************************************/ voidOutOneNode(LinkListpNew) { printf("------------------------------------------------------------------------------\n"); printf("|姓名|职工号|性别|年龄|任职岗位|基本工资|岗位工资|\n"); printf("------------------------------------------------------------------------------\n"); printf("|%9s|%10s|%7s|%5s|%10s|%10d|%10d|\n",pNew->name,pNew->EmployeeID,pNew->sex,pNew->age,pNew->post,pNew->basesalary,pNew->postwage); printf("------------------------------------------------------------------------------\n"); printf("\n\n"); } /******************************************************************************* 功能: 职工信息输出 ********************************************************************************/ voidShowLinkList(LinkListpHead) { intiNum=0; LinkListpNew; pNew=pHead; system("cls"); printf("\n\n\n\n\n"); printf("欢迎进入职工信息浏览模块\n\n\n\n"); if(pNew==NULL) { printf("\n提示: 没有记录可以显示! \n\n"); return; } printf("------------------------------------------------------------------------------\n"); printf("|姓名|职工号|性别|年龄|任职岗位|基本工资|岗位工资|\n"); printf("------------------------------------------------------------------------------\n"); for(pNew=pHead->next;pNew! =NULL;pNew=pNew->next) { printf("|%9s|%10s|%7s|%5s|%10s|%10d|%10d|\n",pNew->name,pNew->EmployeeID,pNew->sex,pNew->age,pNew->post,pNew->basesalary,pNew->postwage); printf("------------------------------------------------------------------------------\n"); iNum++; } printf("\n\n职工信息输出完成! \n"); prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 单链表 实现 职工工资 管理