C语言课程设计——职工管理系统(链表实现)

这个博客介绍了一个使用C语言编写的职工管理系统,系统包括职工信息结构体、职称结构体,以及一系列链表操作函数,如空链表创建、删除、排序等。此外,系统还实现了文件操作,如信息保存、清空文件。通过主菜单,用户可以进行信息录入、显示、修改和删除等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/********************************头文件调用*********************************************/

#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!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值