/********************************头文件调用*********************************************/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
/********************************结构体声明*********************************************/
/********************************职工信息结构体*****************************************/
struct Employee; //职工信息结构体声明
typedef struct Employee *PtrToNode; //结构体指针定义
typedef PtrToNode List; //链表头指针定义
typedef PtrToNode Position; //链表结点指针定义
/********************************职称结构体*****************************************/
struct Title; //职称结构体声明
typedef struct Title *PtrToTitle; //结构体指针定义
/********************************函数声明************************************************/
/********************************链表函数声明********************************************/
List MakeEmpty(List L); //空链表创建函数
int IsEmpty(List L); //判断空链表函数
int IsLast(Position P,List L); //判断链尾函数
void DeleteList(List L); //链表删除函数
Position FindNumPrevious(int number,List L); //职工号前驱指针查找函数
Position FindNamePrevious(char name[],List L); //职工姓名前驱指针查找函数
List Sort(List L); //链表冒泡排序函数
PtrToTitle MakeEmptyTitle(PtrToTitle L1); //空职称链表创建函数
PtrToTitle InsertTitle(char t[20],PtrToTitle L1); //职称插入函数
/********************************文件函数声明********************************************/
List Init(List L); //初始化函数
void Save(List L); //信息保存函数
void MakeFileEmpty(); //清空文件函数
/********************************菜单函数声明********************************************/
void MainMeun(); //主菜单
void ViewMeun(); //显示菜单
void EmployeeMeun(); //职工信息显示菜单
void ModMeun(); //修改菜单
void ModMeun1(); //修改的部分菜单
void ModMeun(); //删除菜单
/********************************职工管理函数声明********************************************/
void Add(List L); //信息录入函数
void View(List L); //信息显示函数
void ViewNum(List L); //职工号显示函数
void ViewName(List L); //职工号显示函数
void ViewEmployee(List L); //职工信息显示函数
void ViewDepartment(List L); //部门信息显示函数
void ViewTime(List L); //入厂时间显示函数
void Mod(List L); //信息修改函数
void Mod1(Position P,List L); //修改的部分函数
void ModNum(Position P,List L); //职工号修改函数
void ModName(Position P,List L); //职工姓名修改函数
void ModDepartment(Position P,List L); //工作部门修改函数
void ModTitle(Position P,List L); //职工职称修改函数
void ModTime(Position P,List L); //入厂时间修改函数
void Modmoney(Position P,List L); //职工工资修改函数
void Delete(List L); //职工号删除函数
void DeleteNum(List L); //职工号删除函数
void DeleteName(List L); //职工姓名删除函数
void PrintEmployee(Position P); //职工信息打印函数
void TurnBack(); //返回上一菜单函数
char Test1(char a,char b,char c); //菜单输入检测函数
/*********************************结构体定义***********************************************/
//职工信息结构体
struct Employee
{
int num; //职工号
char name[20]; //姓名
char department[20]; //工作部门
char Title[20]; //职称
char time[10]; //入厂时间 年/月/日 2018/6/29
int money; //工资
Position Next; //Next指针 (指向下一结构体)
};
//职称结构体
struct Title
{
char title[20]; //职称名称
int num; //部门职称人数
struct Title* Next; //Next指针
};
/*********************************函数定义**************************************************/
/*********************************主函数**************************************************/
int main()
{
List L=NULL;
char a;
L=Init(L);
printf("\n\t\t输入回车键继续");
getchar();
while(1)
{
system("cls"); //实现清屏
MainMeun(); //调用 主菜单显示函数
fflush(stdin); //清除键盘缓冲区
a=Test1(getchar(),'1','7'); //菜单输入检测函数
switch(a)
{
case '1': system("cls"); Add(L); break; //调用 信息录入函数
case '2': system("cls"); View(L); break; //调用 信息显示函数
case '3': system("cls"); Mod(L); break; //调用 信息修改函数
case '4': system("cls"); Delete(L); break; //调用 信息删除函数
case '5': system("cls"); Save(L); system("pause"); break; //调用 信息保存函数
case '6': system("cls"); MakeFileEmpty(); break; //调用 信息删除函数
case '7': return 0; //退出系统
}
}
return 0;
}
/*********************************链表函数**********************************************/
//空链表创建函数
List MakeEmpty(List L)
{
if(L) //相当于 if(L!=NULL) ,即指针L指向的空间不为空
DeleteList( L ); //删除原先链表
L=(List)malloc(sizeof(struct Employee)); //创建新的空链表
if(!L) //相当于 if(L==NULL) ,即指针L指向的空间为空
{
printf("创建失败,内存不足!!!"); //创建失败,提示内存不足
system("pause"); //暂停屏幕显示
return NULL; //返回上一级菜单
}
L->Next=NULL; //Next指针指向空
return L; //返回链表头
}
//空职称链表创建函数
struct Title *MakeEmptyTitle(struct Title *L1)
{
if(L1) //相当于 if(L!
C语言课程设计——职工管理系统(链表实现)
最新推荐文章于 2022-12-10 15:34:33 发布