数据结构课程设计

题目要求: 利用单链表实现职工管理系统,设有职工文件emp.dat,建立单链表,数据包括职工编号(no), 姓名(name),部门(depno),工资(salary)。且具有排序,文件读写,删除等功能。 -- 题目来源(数据结构教程-第五版-李春葆-P.77)da

代码如下

#include<iostream>
#include<windows.h>
#include<fstream>
#include<string>
#include<stdlib.h>
#include<time.h>
using namespace std;int people_num = 0;typedef struct employee
{int no;string name;int depno;int salary;struct employee *pnext;
}Emp;void Initial_list( Emp *&L )
{   L = new Emp;L->pnext = nullptr;
}void Create_List( Emp *& L )
{Emp *Root = L;fstream fs( "f1.dat", ios::in );string NO;string DEPNO;string NAME;string SALARY;while( !fs.eof() ){if( !fs ){cout << "Create() 打开文件错误 " << endl;return ;}else{Emp *node;node = new Emp;fs >> NO;fs >> NAME;fs >> DEPNO;fs >> SALARY;node->no = atoi( NO.c_str() );node->name =  NAME;node->depno = atoi( DEPNO.c_str() );node->salary = atoi( SALARY.c_str() );while( L->pnext != nullptr ){L = L->pnext;}L->pnext = node;node->pnext = nullptr;people_num++;//L  = Root;}}L = Root;fs.close();cout << "由文件创建链表成功" << endl;}void Add_List( Emp *& L, int no, string name, int depno, int salary )
{Emp *Root = L;Emp *node;node = new Emp;node->no = no;node->name = name;node->depno = depno;node->salary = salary;//fstream fs("f1.dat", ios::out );//fs << no << "\t" << name << "\t" << depno << "\t" << salary << endl;while( L->pnext != nullptr ){L = L->pnext;}L->pnext =  node;node->pnext = nullptr;people_num++;L = Root;
}void Sort_no( Emp *& L )
{cout << "Sort in no :  " << endl;Emp *Root = L;//L = L->pnext;for( int i = 0; i < people_num; i++ ){//L = L->pnext;        while( L->pnext->pnext != nullptr )     //如果有下一个{if( L->pnext->no > L->pnext->pnext->no )   //当前和下一个的编号进行比较{Emp *pt_one;  //保存当前Emp *pt_two;  //保存下一个的后续pt_one = L->pnext;pt_two = L->pnext->pnext->pnext;L->pnext = L->pnext->pnext;L->pnext->pnext = pt_one;L->pnext->pnext->pnext = pt_two;  }L = L->pnext;}L = Root;     }
}void Sort_depno( Emp *& L )
{Emp *Root = L;//L = L->pnext;for( int i = 0; i < people_num; i++ ){//L = L->pnext;        while( L->pnext->pnext != nullptr )     //如果有下一个{if( L->pnext->depno > L->pnext->pnext->depno )   //当前和下一个的编号进行比较{Emp *pt_one;  //保存当前Emp *pt_two;  //保存下一个的后续pt_one = L->pnext;pt_two = L->pnext->pnext->pnext;L->pnext = L->pnext->pnext;L->pnext->pnext = pt_one;L->pnext->pnext->pnext = pt_two;  }L = L->pnext;}L = Root;     }
}void Sort_salary( Emp *& L )
{Emp *Root = L;//L = L->pnext;for( int i = 0; i < people_num; i++ ){//L = L->pnext;        while( L->pnext->pnext != nullptr )     //如果有下一个{if( L->pnext->salary > L->pnext->pnext->salary )   //当前和下一个的编号进行比较{Emp *pt_one;  //保存当前Emp *pt_two;  //保存下一个的后续pt_one = L->pnext;pt_two = L->pnext->pnext->pnext;L->pnext = L->pnext->pnext;L->pnext->pnext = pt_one;L->pnext->pnext->pnext = pt_two;  }L = L->pnext;}L = Root;     }
}void Delete_no( Emp *& L, int no )
{Emp *Root = L;while( L->pnext != nullptr ){if( L->pnext->no == no ){L->pnext = L->pnext->pnext;people_num--;}L = L->pnext;}L = Root;
}void Delete_file( Emp *& L )
{}void Storage_file( Emp * L )
{cout << "文件保存 "<< endl;fstream fs("f1.dat", ios::out | ios::in );while( L->pnext != nullptr ){fs << L->pnext->no << "\t" << L->pnext->name << "\t" << L->pnext->depno << "\t" << L->pnext->salary;if( L->pnext->pnext != nullptr ){fs << endl;}L = L->pnext;}fs.close();cout << "文件保存成功 " << endl;
}void Dispaly_List( Emp *L )
{int count = 0;if( L != nullptr ){L = L->pnext;while( L != nullptr ){cout << "第 " << count + 1 <<" 个员工 : " << "编号 " << L->no <<" 姓名 " << L->name << " 部门号 " << L->depno <<" 工资数 " << L->salary << endl;L = L->pnext;count++;}}
}int main()
{Emp *L;Initial_list( L );Create_List( L );   //由文件创建cout << "由文件创建的链表如下 : " << endl;Dispaly_List( L );//  Add_List( L, 2, "闪电法师", 15, 8000 );//  Add_List( L, 1, "掘地矿工", 13, 7000 );cout << "调用函数添加如下 : " << endl;Add_List( L, 3, "暗夜女巫", 16, 5000 );Add_List( L, 5, "黑暗王子", 13, 6000 );Add_List( L, 4, "小蝙蝠", 11,  4000);Add_List( L, 0, "小雪人", 12, 9000 );Dispaly_List( L );cout << "按编号排序如下 : " << endl;Sort_no( L );Dispaly_List( L );Sort_depno( L );cout << "按部门排序如下 : " << endl;Dispaly_List( L );Sort_salary( L );cout << "按工资排序如下 : " << endl;Dispaly_List( L );Delete_no( L, 4 );cout << "删除编号为 4 的员工,显示如下 : " << endl;Dispaly_List( L );Storage_file( L );fstream fs( "f1.dat", ios::out | ios::in );if( !fs ){cout << "main() 打开文件错误 " << endl;}fs.close();cout << endl;system("pause");return 0;
}

好好学习,天天向上,一起学习哈!

数据结构--员工管理系统--链表实现相关推荐

  1. 数据结构员工通讯录管理系统 C语言,数据结构课程设计报告单位员工通讯录管理系统.doc...

    班级:计科112 学号: 201100814203 姓名:冯贵阳 PAGE PAGE 42 数 据 结 构 课 程 设 计 实 验 报 告 目录 1.单位员工通讯录管理系统(线性表的应用)---- - ...

  2. (附源码)springboot员工管理系统 毕业设计 021430

    员工管理系统的设计与实现 摘 要 由于数据库和数据仓库技术的快速发展,企业员工管理系统建设越来越向模块化.智能化.自我服务和管理科学化的方向发展.员工管理系统对处理对象和服务对象,自身的系统结构,处理 ...

  3. 公司员工管理系统(C++多态实现)

    公司员工管理系统(C++多态实现) 1.某小型公司,主要有四类人员:经理.技术人员.销售经理和推销员. 现在,需要存储这些人员的姓名.编号.级别.当月薪水.计算月薪总额并显示全部信息. 人员编号基数为 ...

  4. [附源码]java毕业设计生产型企业员工管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  5. 企业员工管理系统开发

    企业员工管理系统开发 程序介绍 代码 程序介绍 系统介绍 企业员工信息管理系统主要是对企业员工的基本信息进行增.删.改.查的相关操作,以便用户可以快速地对这些信息进行管理.本系统对管理者的控制更加严格 ...

  6. c语言系统分工 ppt,C语言案例员工管理系统.ppt

    <C语言案例员工管理系统.ppt>由会员分享,可在线阅读,更多相关<C语言案例员工管理系统.ppt(11页珍藏版)>请在人人文库网上搜索. 1.案例:员工管理系统,武汉纺织大学 ...

  7. C-企业员工管理系统

    C-企业员工管理系统 VS2017 #include <stdio.h> #include <stdlib.h> #include <windows.h> #inc ...

  8. 狂神Spring Boot 员工管理系统 超详细完整实现教程(小白轻松上手~)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

  9. 数据结构实验之链表五:单链表的拆分-sdut

    数据结构实验之链表五:单链表的拆分 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 输入N个 ...

最新文章

  1. 30分钟,让你彻底明白Promise原理
  2. 敏捷个人纸质书:第一章 源于生活和工作的敏捷个人
  3. [20160513]Restrict Session与静态监听.txt
  4. centos 安装vscode_CentOS6下安装VSCode
  5. Jsoup解析HTML实例及文档方法详解
  6. 关于代码手写UI,xib和StoryBoard
  7. BugkuCTF-Reverse题signin
  8. 设计导航网站|图片各种素材管够,资源丰富设计师懂得
  9. dev_t的主次编号
  10. virus.win32.xorer病毒
  11. 计算机操作系统详细学习笔记(一):计算机操作系统概述
  12. 安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错”(错误原因、详细分析及解决方法)以及在Windows Server2012上安装.NET Framework 3
  13. 局域网ip扫描工具_树莓派无屏幕自动获取IP诸方法
  14. 证件照尺寸像素规格,证件照尺寸怎么修改
  15. 什么是大小端,为什么会出现大小端,如何检测是大端还是小端
  16. java判断点与线与面的关系_高中数学必修二点线面的位置关系与线面平行判定及其性质(精华试题版)...
  17. Springboot学习笔记(四)SpringSecurity.Shiro
  18. 视频教程-SharePoint 2016进阶教程-其他
  19. java实现验证码demo
  20. 电脑报2013年第6期

热门文章

  1. Issue 385 ~蠎周刊 ~汇集全球蠎事儿 ;-)
  2. 尚硅谷--Mysql--高级篇
  3. PS2018CC版本
  4. springboot整合webSocket(看完即入门)
  5. 干货!史上最全数据分析学习路线来了!
  6. 电销行业新时代-AI智能电销机器人
  7. leetcode刷题:顺丰科技智慧物流校园技术挑战赛
  8. Linux服务器Anaconda安装Pytorch(注意,前方有大坑)
  9. 手机端课程表的实现——仿超级课程表
  10. java广度优先算法,算法之广度优先搜索