本文实例为大家分享了C++职工管理系统实例代码,供大家参考,具体内容如下
1.单个职工的头文件
staff.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#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);
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。