本文实例为大家分享了C++职工管理系统实例代码
1.单个职工的头文件
staff.h
#ifndef STAFF_H_INCLUDED
#define STAFF_H_INCLUDED
//结构体创建
struct staff
{
char ID[10];
char name[10];
char sex[10];
int pay;
int reward;
int factpay;
};
//自定义结构体
typedef struct staff staff;
//单个职工信息创建
staff Createstaff();
//单个职工信息输出
void Displaystaff(staff staff);
//修改职工信息
void updatestaff(staff *Staff);
#endif // STAFF_H_INCLUDED
单个职工的cpp文件
staff.cpp
#include <stdio.h>
#include <stdlib.h>
#include \"staff.h\"
staff Createstaff()
{
staff staff;
printf(\"-----------ID-----------\\n\");
scanf(\"%s\", staff.ID);
printf(\"-----------name-----------\\n\");
scanf(\"%s\", staff.name);
printf(\"-----------sex-----------\\n\");
scanf(\"%s\", staff.sex);
printf(\"-----------pay-----------\\n\");
scanf(\"%d\", &staff.pay);
printf(\"-----------reward-----------\\n\");
scanf(\"%d\", &staff.reward);
staff.factpay = staff.pay + staff.reward;
printf(\"\\n\");
return staff;
}
void Displaystaff(staff staff)
{
printf(\"%10s\", staff.ID);
printf(\"%10s\", staff.name);
printf(\"%10s\", staff.sex);
printf(\"%10d\", staff.pay);
printf(\"%10d\", staff.reward);
printf(\"%10d\", staff.factpay);
printf(\"\\n\");
}
void updatestaff(staff *Staff)
{
printf(\"-----请显示要修改的数据--------\\n\");
Displaystaff(*Staff);
printf(\"-------请输入要修改的数据---------\");
printf(\"-----------pay-----------\\n\");
scanf(\"%d\", &Staff->pay);
printf(\"-----------reward-----------\\n\");
scanf(\"%d\", &Staff->reward);
Staff->factpay = Staff->pay + Staff->reward;
printf(\"\\n\");
}
2.链表的创建
链表的头文件
linklist.h
#ifndef LINKLIST_H_INCLUDED
#define LINKLIST_H_INCLUDED
#include \"staff.h\"
//链表结点创建
struct Node
{
struct staff Staff;
struct Node *next;
};
//自定义结点
typedef struct Node node;
typedef struct Node *linklist;
//创建链表
node *Createlinklist();
//输出链表中的数据
void Displaylinklist(node *head);
//按职工号查找职工
node *searchnode(node *head, char ID[]);
//按姓名查找职工
void searchnodebyname(node *head, char name[]);
//删除职工
void delenode(linklist head, char ID[]);
//插入职工
void insertnode(linklist head, staff Staff);
//链表销毁
void distroylinklist(linklist head);
#endif // LINKLIST_H_INCLUDED
链表创建的源程序
linklist.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include \"staff.h\"
#include \"linklist.h\"
node *Createlinklist()
{
node *head, *p;
head = (node *)malloc(sizeof(node));
head->next = NULL;
staff a[100] = {{\"11111\", \"mmm\", \"f\", 12000, 2000, 14000},
{\"22222\", \"aaa\", \"m\", 13000, 3000, 16000},
{\"33333\", \"sss\", \"f\", 15000, 3000, 18000},
{\"44444\", \"fff\", \"m\", 17000, 8000, 25000},
{\"55555\", \"ggg\", \"f\", 20000, 5000, 25000}};
for(int i = 0; i<5; i++)
{
p = (node *)malloc(sizeof(node));
p->Staff = a[i];
p->next = head->next;
head->next = p;
}
return head;
}
void Displaylinklist(node *head)
{
linklist p;
p = head->next;
while(p!=NULL)
{
Displaystaff(p->Staff);
p = p->next;
}
}
node *searchnode(node *head, char ID[])
{
linklist p;
p = head;
while(p!=NULL&&strcmp(p->next->Staff.ID, ID)!=0)
{
p = p->next;
}
return p->next;
}
void searchnodebyname(node *head, char name[])
{
linklist p;
p = head;
while((p!=NULL)&&(strcmp((p->next)->Staff.name, name)!=0))
{
p = p->next;
}
printf(\"-----´ËÈËΪ---------\\n\");
printf(\"%s\", p->next->Staff.name);
printf(\"\\n\");
}
void delenode(linklist head, char ID[])
{
linklist p;
p = head;
while(p->next&&(strcmp(p->next->Staff.ID, ID)!=0))
{
p = p->next;
}
if(p->next)
{
p->next = p->next->next;
}
else
{
printf(\"=====NO FOUND========\\n\");
}
}
void insertnode(linklist head, staff Staff)
{
linklist p;
p = (node *)malloc(sizeof(node));
p->Staff = Staff;
p->next = head->next;
head->next = p;
}
void distroylinklist(linklist head)
{
linklist p;
p = head;
while(p!=NULL)
{
p = p->next;
free(p);
}
}
3.文件存盘
file.h
#ifndef FILE_H_INCLUDED
#define FILE_H_INCLUDED
#include \"linklist.h\"
#include \"staff.h\"
//职工信息存盘
void saveinformation(linklist head );
//职工信息加载
void loadinformation(linklist head );
#endif // FILE_H_INCLUDED
file.cpp
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include \"file.h\"
#include \"linklist.h\"
#include \"staff.h\"
void saveinformation(linklist h )
{
FILE *fp;
linklist p;
if ( (fp = fopen(\"stu.txt\",\"w\") ) == NULL)
{
printf(\"Failure to open stu.txt!\\n\");
exit(0);
}
for ( p = h->next; p; p=p->next )
{
fwrite( &(p->Staff), sizeof(node), 1, fp);
}
fclose(fp);
}
void loadinformation( linklist h )
{
FILE *fp;
staff nodeBuffer;
if ((fp = fopen(\"stu.txt\",\"r\")) == NULL)
{
printf(\"\\n\\t数据文件丢失或为首次运行, 将加载测试数据\\n\");
return ;
}
while( fread(&nodeBuffer, sizeof(node), 1, fp)!=0 )
{
insertnode(h, nodeBuffer);
}
}
4.主函数
mainmeun.cpp
#include <stdio.h>
#include <stdlib.h>
#include \"linklist.h\"
#include \"staff.h\"
#include \"file.h\"
void mainmeun(linklist head);
void searchmenu(linklist head);
int main(void)
{
linklist head=NULL;
//int n;
//printf(\"------请输入你要存的数据----------\\n\");
//scanf(\"%d\", &n);
head = Createlinklist();
system(\"cls\");
//Displaylinklist(head);
mainmeun(head);
printf(\"\\n\\n\");
//loadinformation(head);
//saveinformation(head);
return 0;
}
void mainmeun(linklist head)
{
linklist p;
char ID[10];
//char name[10];
staff Staff;
int selection;
int flag = 1;
do
{
printf(\"=================职工管理系统===================\\n\");
printf(\"==========1.链表输出=====2.数据查询=====\\n\");
printf(\"=======3.数据删除===4.数据修改=====5.添加数据======\\n\");
printf(\"=======6.链表销毁===7.信息存盘=====8.放弃存盘=====\\n\");
printf(\"==================================================\\n\");
printf(\"======请选择功能(1~8):\");
scanf(\"%d\", &selection);
switch(selection)
{
case 1:
Displaylinklist(head);
break;
case 2:
searchmenu(head);
break;
case 3:
printf(\"=========请输入工号==========\\n\");
scanf(\"%s\", ID);
delenode(head, ID);
break;
case 4:
printf(\"=========请输入工号==========\\n\");
scanf(\"%s\", ID);
p = searchnode(head, ID);
updatestaff(&(p->Staff));
break;
case 5:
printf(\"========添加数据=========\");
Staff = Createstaff();
insertnode(head, Staff);
break;
case 6:
distroylinklist(head);
break;
case 7:
loadinformation(head);
saveinformation(head);
break;
case 8:
flag = 0;
break;
}
}while(flag == 1);
printf(\"========BYE=====BYE======\");
}
void searchmenu(linklist head)
{
linklist p;
int flag = 1;
char ID[10];
char name[10];
do
{
printf(\"=========查找菜单===========\\n\");
printf(\"===1.ID======2.name====3.退出====\\n\");
printf(\"=================================\\n\");
int selection;
printf(\"==请选择功能(1~3):\");
scanf(\"%d\", &selection);
switch(selection)
{
case 1:
printf(\"=====请输入ID=======\\n\");
scanf(\"%s\", ID);
p = searchnode(head, ID);
Displaystaff(p->Staff);
break;
case 2:
printf(\"=====请输入name======\\n\");
scanf(\"%s\", name);
searchnodebyname(head, name);
break;
case 3:
flag = 0;
break;
}
system(\"pause\");
system(\"cls\");
}while(flag == 1);
}
以上就是本文的全部内容,希望对大家实现C++职工管理系统有所帮助,启发。
推荐几篇文章:
C++实现简单的图书管理系统
C++实现简单的职工信息管理系统
C++基础学生管理系统
本文地址:https://www.stayed.cn/item/1543
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我