首页 > 编程 > C++ > 正文

C++实现简单的职工管理系统实训代码

2020-05-23 14:05:42
字体:
来源:转载
供稿:网友
这篇文章主要为大家详细介绍了C++职工管理系统实训代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
 

本文实例为大家分享了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++职工管理系统有所帮助,启发。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表