要求使用文件、链表,系统以菜单方式工作。

职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不相等)。试设计一职工信息管理系统,使之能够提供下列功能:

系统以菜单方式工作

职工信息录入功能(职工信息用文件保存)

职工信息浏览功能

职工信息查询功能,查询方式:

1)按学历查询

2)按职工号查询

职工信息删除,插入、修改功能。

基于各种基本数据的统计计算。如:统计职工总人数、本科以上学历人数等。

要求:

1、尽量不用全局变量

2、函数需要有参数和返回值,个别函数允许无参或者无返回值;

3、文件操作不要频繁的打开和关闭(参考word操作,打开以后将数据调入内存,完成各种功能后选择存盘,所有操作结束后才关闭文件)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>#define MAX 100//根据职工信息改变
#define A 2021082039
#define B 123456789
#define TRUE 1
#define FALSE 0
#define RED "\033[0;32;31m" //背景颜色
#define NONE "\033[m"typedef struct staff//结构体定义,职工号,姓名,性别,年龄,学历,工资,地址,电话号码
{char number[MAX];char name[MAX];char sex[MAX];char year[MAX];char edu[MAX];char money[MAX];char addr[MAX];char phonenum[MAX];struct staff *next;
}node;int loge();//用户登录 (账号密码正确才可以登录)
void menu(node *head2);//菜单
node *Filesave(node *head);//将职工信息保存到文件
int listread(node *head2);//从链表进行职工信息浏览
void input(node *head2);//函数1职工信息录入
int Eduserch(node *head2);//职工信息查询(按照学历)
int Numberserch(node *head2);//职工信息查询(按照职工号查询信息)
void Modify(node *head2);//修改职工信息(按照工号)
int Delete(node *head2);//删除职工信息(按照职工号)
node *Fileread();//读取文件中职工信息到链表中
void View(node *head2);//浏览全部员工基本信息 /*1.一共可能打开文件四次,可能打开三次,
一次在inputh函数(可选择是否保存),
一次在结束系统操作(可选择是否保存)
一次在修改函数 Modify(可选择是否保存)
必须打开一次在Fileread函数(为了读取文件中职工信息)
2.head2是没有数据的从文件读取数据到链表的链表的头指针
3.设置了登录系统,其他不知道账号密码的人无法登陆操作
4.用了清屏函数system("cls")
5.用了改变颜色函数system("color 30");//控制台背景浅蓝色和printf(RED"密码错误,请重新输入:\n"NONE);//打印红色的字体
6.合理运用程序模块化设计,主函数简洁
*/int main()
{node *head=Fileread();//读取文件中职工信息到链表中 ,头结点无数据 int R=loge();if(R==TRUE){system("cls");//清屏函数<stdlib.h> printf("登陆成功!\n");} menu(head);return 0;
}int loge()//用户登录
{system("color 30");//控制台背景浅蓝色 int n,m;printf("\t\t\t\t欢迎使用职工信息管理系统!\n");printf("请输入账号(10位数字):\n");scanf("%d",&n);printf("请输入账号密码:\n");scanf("%d",&m);while(1) {if(n==A) {if(m==B) return TRUE;else{printf(RED"密码错误,请重新输入:\n"NONE);//打印红色的字体 scanf("%d",&m);}} else{printf("账号不存在!请重新输入:\n");printf("请输入账号(10位数字):\n");scanf("%d",&n);printf("请输入账号密码:\n");scanf("%d",&m);}}return FALSE;} int select()//功能选择
{system("color 30");//控制台背景浅蓝色 int n;printf("---------------------------------------\n");printf("|选项: |       对应选项功能           |\n");printf("---------------------------------------\n");printf("|选择1:|       职工信息录入           |\n");printf("---------------------------------------\n");printf("|选择2:|       职工信息浏览           |\n"); printf("---------------------------------------\n");printf("|选择3:|职工信息查询(按照学历查询)  |\n");printf("---------------------------------------\n"); printf("|选择4:|职工信息查询(按照职工号查询) |\n");printf("---------------------------------------\n");printf("|选择5:|       职工信息删除           |\n");printf("---------------------------------------\n");printf("|选择6:|       职工信息修改           |\n");printf("---------------------------------------\n");printf("|选择0:|       退出职工系统           |\n");printf("---------------------------------------\n");printf("请您输入选择:");scanf("%d",&n);while(n<0||n>7){printf("无此选项,请重新输入:\n");scanf("%d",&n);}return n;}node *Fileread()//读取文件中职工信息到链表中
{FILE *fp;node *p,*pre,*tail,*head;head=(node *)malloc(sizeof(node));tail = pre=head;fp=fopen("work.txt","r");if(fp==NULL){printf("文件打开失败!!!");exit(0);}p=(node *)malloc(sizeof(node));p->next=NULL;head->next=NULL;while(fscanf(fp,"%s %s %s %s %s %s %s %s\n",p->number,p->name,p->sex,p->year,p->edu,p->money,p->addr,p->phonenum)!=EOF){pre = tail;tail->next=p;tail=p;p=(node *)malloc(sizeof(node));p->next=NULL;}fclose(fp);return head;
}void menu(node *head2)//菜单
{system("cls");//清屏操作printf("\t\t\t\t欢迎使用职工信息管理系统!\n"); int m=select();switch(m){case 1:printf("选择1:职工信息录入\n");system("cls");//清屏操作input(head2);//输入职工信息并保存到文件 break;case 2:printf("选择2:职工信息浏览\n");system("cls");//清屏操作 listread(head2);//浏览全部职工信息 break;case 3:printf("选择3:职工信息查询(按照学历查询)\n");system("cls");//清屏操作Eduserch(head2);//职工信息查询(按照学历)break;case 4: printf("选择4:职工信息查询(按照职工号查询)\n");system("cls");//清屏操作Numberserch(head2);break;case 5:printf("选择5:职工信息删除\n");system("cls");//清屏操作Delete(head2);//删除职工信息(按照职工号)break;case 6:printf("选择6:职工信息修改\n");system("cls");//清屏操作Modify(head2);//修改职工信息 break;case 0:printf("选择0:退出职工系统\n");system("cls");//清屏操作 Filesave(head2);printf("\n\n\n\t\t\t\t感谢您的使用,欢迎再次光临!\n\n\n");printf("\n\n\n\t\t\t\t感谢您的使用,欢迎再次光临!\n\n\n");getchar();//清除\n getchar();exit(0);  }}void input(node *head2)//输入职工信息
{system("cls");//清屏操作int i=1;node *p, *q;char n[10],s[10]; q = head2; while (q->next != NULL){q = q->next;     }while (1){printf("提示:输入0返回主菜单!输入1继续添加!\n");printf("请输入选择:");scanf("%s", n);if (strcmp(n, "0") == 0){Filesave(head2);printf("返回主菜单\n");menu(head2); }if(strcmp(n, "1") == 0){p = (node *)malloc(sizeof(node));printf("请输入职工号:");scanf("%s", p->number);printf("请输入姓名:");scanf("%s", p->name);printf("请输入性别(男(M)女(W)):");scanf("%s", s);while(strcmp(s,"M")!=0&&strcmp(s,"W")!=0){printf("输入错误,请重新输入职工性别!\n");scanf("%s",s);}if(strcmp(s,"M")==0||strcmp(s,"W")==0){strcpy(p->sex,s);}printf("请输入出生年月:");scanf("%s", p->year);printf("请输入学历:");scanf("%s", p->edu);printf("请输入工资:");scanf("%s", p->money);printf("请输入住址:");scanf("%s", p->addr);printf("请输入电话:");scanf("%s", p->phonenum);printf("提示:已经完成第%d个职工信息的添加!",i++);p->next = NULL;q->next = p;      q = p;        }} }int Eduserch(node *head2)//查找职工信息(按照学历)
{system("cls");//清屏操作printf("尊敬的用户,欢迎查找职工的信息(按照学历查找)!\n");char edu[MAX];printf("请输入你想查找的职工的学历:");scanf("%s",edu);node *head;head=head2;node *p;if(head->next==NULL){printf("此系统中无记录!\n");exit(0);}printf("职工号\t姓名\t性别\t出生时间\t学历\t工资\t\t地址\t\t电话号码\n");for(p=head->next;p!=NULL;p=p->next)if(strcmp(p->edu,edu)==0)printf("%s\t%s\t%s\t%s\t%s\t%s\t\t%s\t\t%s\n",p->number,p->name,p->sex,p->year,p->edu,p->money,p->addr,p->phonenum);int m;printf("返回上一级菜单输入1,结束请输入0!\n");scanf("%d",&m);if(m==1){printf("返回主菜单!\n");menu(head);    } if(m==0){printf("结束操作!\n");exit(0);}return 0;
}int Numberserch(node *head2)//查找职工信息(按照职工职工号查找)
{system("cls");//清屏操作printf("尊敬的用户,欢迎查找职工的信息(按照职工号查找)!\n");char number[MAX];printf("请输入你想查找的职工的职工号:");scanf("%s",number);node *head;head=head2;node *p;if(head->next==NULL){printf("此系统中无记录!\n");exit(0);}printf("职工号\t姓名\t性别\t出生时间\t学历\t工资\t\t地址\t\t电话号码\n");for(p=head->next;p!=NULL;p=p->next)if(strcmp(p->number,number)==0)printf("%s\t%s\t%s\t%s\t%s\t%s\t\t%s\t\t%s\n",p->number,p->name,p->sex,p->year,p->edu,p->money,p->addr,p->phonenum);int m;printf("返回上一级菜单输入1,结束请输入0!\n");scanf("%d",&m);if(m==1){printf("返回主菜单!\n");menu(head);  } if(m==0){printf("结束操作!\n");exit(0);}return 0;
}void Modify(node *head2)//修改职工信息(按照工号)
{char s[100];node *head=head2;node *p = head->next;char number[MAX];                                     if (head == NULL){printf("此系统为空!\n");menu(head);exit(0);}printf("请输入要修改职工的职工号:\n");scanf("%s",number);while ((strcmp(p->number,number)!=0 )&& p!= NULL){p =p->next;}if (strcmp(p->number,number)==0){printf("\t\t\t请输入需要修改的信息\n");printf("职工职工号:");scanf("%s",p->number);printf("职工姓名:");scanf("%s",p->name);printf("请输入性别(男(M)女(W)):");scanf("%s", s);while(strcmp(s,"M")!=0&&strcmp(s,"W")!=0){printf("输入错误,请重新输入职工性别!\n");scanf("%s",s);}if(strcmp(s,"M")==0||strcmp(s,"W")==0){strcpy(p->sex,s);}printf("职工出生时间:");scanf("%s",p->year);printf("职工学历:");scanf("%s",p->edu);printf("职工工资:");scanf("%s",p->money);printf("职工地址:");scanf("%s",p->addr);printf("职工电话:");scanf("%s",p->phonenum);}printf("修改成功");head=Filesave(head);int m;printf("返回上一级菜单输入1,结束请输入0!\n");scanf("%d",&m);if(m==1){printf("返回主菜单!\n");menu(head);  } if(m==0){printf("结束操作!\n");exit(0);}
}int Delete(node *head2)//删除职工信息(按照职工号)
{node *head;head=head2;char number[MAX];                                     //先查找 后删除node *p = head->next, *p1 =head->next,*p2;if (head == NULL){printf("此通讯录为空!\n");printf("返回主菜单!\n");menu(head);return 0;}printf("请输入要删除职工的职工号:\n");scanf("%s",number);while ((strcmp(p->number,number)!=0 )&& p!= NULL){p1=p;p =p->next;}if (strcmp(number, p->number)==0)                    //输出删除信息{if (p == head->next&&p!=NULL)head->next = p->next;else  if(p==head->next&&p->next==NULL){head->next=p->next;printf("信息已删除,先此通讯录为空!!\n");return 0;}elsep1->next = p->next;}else{printf("此信息不存在!!!\n");return 0;}printf("此信息已删除!\n");for(p2=head;p2!=NULL;p2=p2->next)//打印删除职工的基本信息 printf("%s\t%s\t%s\t%s\t%s\t%s\t\t%s\t\t%s\n",p->number,p->name,p->sex,p->year,p->edu,p->money,p->addr,p->phonenum);   printf("返回上一级菜单输入1,结束请输入0!\n");int m;scanf("%d",&m);if(m==1)    {printf("返回主菜单!\n");menu(head2);  } if(m==0){printf("结束操作!\n");exit(0);}return 0;
}node *Filesave(node *head2)// 将职工信息保存到文件
{node *p=head2->next;FILE *fp;int n;printf("是否想要保存到文件?是请输入1,否则输入0.\n");scanf("%d",&n);if(n==1){fp=fopen("work.txt","w");if(fp==NULL){printf("File can not be opened\n");exit(0);}while(p!=NULL){fprintf(fp,"%s %s %s %s %s %s %s %s\n",p->number,p->name,p->sex,p->year,p->edu,p->money,p->addr,p->phonenum);p=p->next;}fclose(fp);return head2;}elsereturn 0;
}int listread(node *head2)//读取链表中职工信息
{node *head;head=head2;node *p;if(head->next==NULL){printf("此系统中无记录!自动返回主菜单\n");menu(head); exit(0);}printf("尊敬的用户,欢迎浏览职工的基本信息!\n");printf("职工号\t姓名\t性别\t出生时间\t学历\t工资\t\t地址\t\t电话号码\n");for(p=head->next;p!=NULL;p=p->next)printf("%s\t%s\t%s\t%s\t%s\t%s\t\t%s\t\t%s\n",p->number,p->name,p->sex,p->year,p->edu,p->money,p->addr,p->phonenum);int m;printf("返回上一级菜单输入1,结束请输入0!\n");scanf("%d",&m);if(m==1){printf("返回主菜单!\n");menu(head);   } if(m==0){printf("结束操作!\n");exit(0);}return 0;
}

职工信息管理系统—C语言工程实践相关推荐

  1. c语言课程设计 职工信息管理系统,C语言课程设计-职工信息管理系统程序设计.doc...

    C语言课程设计-职工信息管理系统程序设计 C语言课程设计报告 设计题目:职工信息管理系统程序设计 课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构设计5 ...

  2. 职工信息管理系统c语言报告,职工信息管理系统(c语言实现)

    功能实现: (1)系统以菜单方式工作 (2)职工信息录入功能(职工信息用文件保存)--输入 (3)职工信息浏览功能--输出 (4)职工信息查询功能--算法 查询方式:按姓名查询/按职工号查询 (5)职 ...

  3. c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...

    <c语言程序设计>课程设计报告-职工信息管理系统.doc 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...

  4. 职工工资信息系统 c语言题,工资信息管理系统C语言设计.doc

    工资信息管理系统C语言设计 C语言课程实习报告 学 院: 工程学院 专 业: 岩土工程 班 级: 052052-33 学 号: 20051002623 姓 名: 刘恒 第一题:工资信息管理系统 一`题 ...

  5. C语言期末大作业15个(附源码)成绩管理系统、图书馆管理系统、学生打卡系统、超市信息管理系统、学生考勤系统、职工信息管理系统源码、歌曲信息管理系统、超市收款系统等等

    C语言期末作业15个(上) 1.C语言学生成绩管理系统 2.C语言图书馆管理系统(复杂版) 3.C语言图书馆管理系统(简洁版) 4.C语言停车管理系统(两个版本) 5.C语言学生考勤系统 6.C语言班 ...

  6. 职工信息管理系统(C语言)

    目录 1.前言 2.实现功能 3.流程图 4.源码 5.总结 1.前言 距学习C语言已经相当长的一段时间了,编写一个小项目,功能实现可能不是很完美,算是复习和记录吧! 2.实现功能 0.录入职工信息  ...

  7. 员工信息管理系统语言论文c,C语言课程设计 职工信息管理系统.doc

    C语言课程设计 职工信息管理系统.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  8. 职工信息管理程序设计c语言,C语言程序设计职工信息管理系统.docx

    C语言程序设计职工信息管理系统.docx 1 数信学院数信学院 课程设计报告课程设计报告 课程名称课程名称C C 语言程序设计语言程序设计_ _ 题目名称题目名称职工信息管理系统职工信息管理系统 学生 ...

  9. c语言结构体老师信息管理系统,C语言课程设计职工信息管理系统结构体数组实现程序源代码.doc...

    word格式 整理版 学习参考 //C语言课程设计 职工信息管理系统-结构体数组实现 #include #include #include struct employee { char num[10] ...

  10. 员工任务管理系统c语言,C语言职工信息管理系统课程设计任务书.docx

    C语言课程设计任务书 一.题目:职工信息管理系统 二.目的和要求 目的:要求熟练掌握C语言的基本知识和编辑技能: 基本掌握结构化程序设计的基本思路和方法. 要求:设计一个职工信息管理系统,使之能提供以 ...

最新文章

  1. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)
  2. WCF 第二章 契约
  3. C#基础面试题(学习总结)
  4. 微软如何在3年内将数据中心的用水量削减95%
  5. POPUP_TO_CONFIRM
  6. 集中式整合之加入springsecurity
  7. IP地址、子网掩码、网关、路由器等知识积累
  8. MVC Area领域处理以及T4MVC的使用
  9. 超市仓库管理系统python+tkinter
  10. 舵机的相关原理与控制原理
  11. 你努力的样子很“可耻”
  12. Adobe Photoshop 2021 22.4.2 绿色精简版
  13. prosper loan data EDA分析(特征字典)
  14. html中如何将图片3d转换,jpg格式图片如何可以转换成3DMax格式?
  15. windows下vscode + code runner + cmake + msbuild.exe搭建C++快速编译环境
  16. 在vs中char类型的实参与LPCWSTR类型的形参类型不兼容怎么解决?
  17. 一次把 Unicode 和 UTF-8 说清楚
  18. linux串口设备配置方法(固定ID)
  19. 51单片机真的过时了吗?单片机、ARM、DSP、FPGA/CPLD
  20. 【LEDE】x86软路由之路-03-挂载移动硬盘?

热门文章

  1. cad批量打印_CAD插件批量打印3.5.9
  2. 想了解能源互联网?看这篇就够了
  3. pads 2007 安装完成后, 出现 no license 的解决方法
  4. 1.1集成电路设计基础
  5. SQL查询是从Select开始的吗?
  6. 安装系统显示sql服务器未安装,win7系统安装SQLServer2005提示“SQL Server服务无法启动”的解决方法...
  7. 增量数据挖掘论文推荐
  8. WPF笔记汇总之ListView控件
  9. dd命令烧写superboot.bin
  10. 汇编语言程序设计---分支程序设计