C语言/C++常见习题问答集锦(五十二) 之职工信息管理系统

程序之美

用C语言,职工信息管理系统具体要求
1、基本信息:如工号、姓名、性别、年龄、学历、住址、电话号码、工资等。
2、各职工信息用结构体来实现,建议使用链表来实现建立、删除、插入等操作。
3、需建立输出文件,将输入的职工信息存储在该文件中。
4、主功能界面要求包含有自己的学号信息
PS:请写的简单,并在旁边注释!就当是给傻,子写的!谢谢orz.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct workers
{char jobNo[15];       //职工号char name[15];        //姓名char sex[15];         //性别char birthday[15];    //出生年月char degree[15];      //学历char position[15];    //职务 char salary[15];      //工资 char addr[15];        //住址 char tel[15];         //电话 };//类型定义语句
typedef struct node
{struct workers data;struct node *next;}Node;//添加信息函数     "尾插法建表"
void Add(Node *worker)
{Node *p, *q;char n[10]; q = worker; while (q->next != NULL){q = q->next;     }while (1){printf("提示:输入0返回主菜单!\n");printf("请输入职工号:");scanf("%s", n);if (strcmp(n, "0") == 0){break;}p = (Node *)malloc(sizeof(Node));strcpy(p->data.jobNo, n);printf("请输入姓名:");scanf("%s", p->data.name);printf("请输入性别:");scanf("%s", p->data.sex);printf("请输入出生年月:");scanf("%s", p->data.birthday);printf("请输入学历:");scanf("%s", p->data.degree);printf("请输入职务:");scanf("%s", p->data.position);printf("请输入工资:");scanf("%s", p->data.salary);printf("请输入住址:");scanf("%s", p->data.addr);printf("请输入电话:");scanf("%s", p->data.tel);printf("提示:已经完成一条记录的添加!");p->next = NULL;q->next = p;      q = p;        }}//修改职工信息函数
int  change(Node *worker)
{Node *p;char find[20];   p = worker->next;   if (p == NULL){printf("\n提示:没有资料可以修改!\n");return 0;}printf("请输入要修改的职工号");scanf("%s", find);while (p != NULL) {if (strcmp(p->data.jobNo, find) == 0){break;}p = p->next;}if (p!=NULL){int x;while (1){printf("完成修改请输入0,否则输入非0数字进行修改!");scanf("%d", &x);if (x == 0){break;}printf(" 请输入新职工号: ");scanf("%s", p->data.jobNo);printf(" 请输入新职工姓名: ");scanf("%s", p->data.name);printf(" 请输入新职工性别: ");scanf("%s", p->data.sex);printf(" 请输入新职工出生年月: ");scanf("%s", p->data.birthday);printf(" 请输入新职工学历: ");scanf("%s", p->data.degree);printf(" 请输入新职工职务: ");scanf("%s", p->data.position);printf(" 请输入新职工工资: ");scanf("%s", p->data.salary);printf(" 请输入新职工住址: ");scanf("%s", p->data.addr);printf(" 请输入新职工电话: ");scanf("%s", p->data.tel);printf(" \n提示:该职工资料已经修改!\n ");}}else printf("\n提示:没有你要修改的资料!\n ");
}//输出职工信息函数
int  Disp(Node *worker)
{Node *p;p = worker->next;if (p == NULL){printf(" \n提示:没有信息可以显示!\n ");return 0;}printf("\t\t\t\t显示结果\n");printf(" \n职工号   姓名    性别    出生年月    学历    职务    工资    住址    电话    \n ");while (p!=NULL)  {printf("\n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,p->data.sex, p->data.birthday, p->data.degree, p->data.position,p->data.salary, p->data.addr, p->data.tel);p = p->next;}}//查询职工信息函数: 按职工号查询    按职工姓名查询
int  Cha_xun(Node *worker)
{Node *p;int sel;char find[20];    p = worker->next;   if (p==NULL) {printf(" \n提示:没有资料可以查询!\n ");return 0;}printf("\n提示:\n 输入 0---- 退出\t 输入 1----按职工号查询\t 输入 2-----按职工姓名查询\n");printf("请选择:");scanf("%d", &sel);if (sel == 1){printf("\n请输入你要查询分类的职工号:");scanf("%s", find);while (p!=NULL)  {if (strcmp(p->data.jobNo, find) == 0){printf(" 职工号      姓名      性别    出生年月    学历    职务    工资    住址    电话 \n ");printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,p->data.sex, p->data.birthday, p->data.degree, p->data.position,p->data.salary, p->data.addr, p->data.tel);}p = p->next;   }}else if (sel == 2){printf(" \n输入你要查询分类的职工姓名:");scanf("%s", find);while (p!=NULL){if (strcmp(p->data.name, find) == 0) {printf(" 职工号        姓名    性别    出生年月    学历    职务    工资    住址    电话 \n ");printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.jobNo, p->data.name,p->data.sex, p->data.birthday, p->data.degree, p->data.position,p->data.salary, p->data.addr, p->data.tel);}p = p->next;}}else if (sel == 0)return 0;}//删除职工信息函数
int  Delete(Node *worker)
{Node *p, *r;char find[10];p = worker->next;if (p == NULL){printf("提示:没有职工信息可以删除!\n ");return 0;}printf(" \n提示:请输入你要删除的职工号!\n ");scanf("%s", find);while (p != NULL){if (strcmp(p->data.jobNo, find) == 0){break;}p = p->next;}if (p!=NULL){r = worker;while (r->next != p){r = r->next;}r->next = r->next->next;    }
}//将职工信息保存到文件中
void save(Node *worker)
{int n;Node *p = NULL;FILE *fp;    printf("是否保存到文件?( 1-----保存!,0-----不保存! )");scanf("%d", &n);if (n == 1){if (worker->next == NULL){printf(" 没有记录!");}else{p = worker->next;}if ((fp = fopen(" 职工信息管理系统.txt ", " wb ")) == NULL)  {printf(" 文件不能打开!\n");     }while (p != NULL)   {fprintf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,p->data.birthday, p->data.degree, p->data.position, p->data.salary,p->data.addr, p->data.tel);        p = p->next; }fclose(fp);  }}//读取职工信息
void Du_qu(Node *worker)
{Node *p;FILE *fp; if ((fp = fopen("职工信息管理系统.txt", "rb")) == NULL)     {printf("文件不能打开!\n ");}p = worker->next;while (p!=NULL){fscanf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,p->data.birthday, p->data.degree, p->data.position, p->data.salary,p->data.addr, p->data.tel);     p=p->next;}fclose(fp);}//主函数实现
int main()
{Node *worker;int flag;worker = (Node*)malloc(sizeof(Node));worker->next = NULL; while(1){printf("\t职 工 信 息 管 理 系 统\n");printf("==================菜 单==================\n ");printf("1.输入职工信息\n ");printf("2.修改职工信息\n ");printf("3.浏览职工信息\n ");printf("4.查询职工信息\n ");printf("5.删除职工信息\n ");printf("6.读取职工信息\n ");printf("0.退出\n ");printf("输入你选择的序号:");scanf("%d", &flag);switch (flag){case 0:  printf(" \n提示:退出系统!\n ");  break;case 1:     Add(worker); save(worker);  break;    //添加职工信息,保存到文件中 case 2:  change(worker);  break;           //修改职工信息 case 3:  Disp(worker);  break;             //显示职工信息 case 4:  Cha_xun(worker);  break;           //查询职工信息 case 5:  Delete(worker);  break;          //删除职工信息 case 6:  Du_qu(worker);  break;             //读取职工信息 default: printf("提示:输入错误!\n ");}}
}

C语言/C++常见习题问答集锦(五十二) 之职工信息管理系统相关推荐

  1. C语言/C++常见习题问答集锦(六十五) 之彩票幸运星

    C语言/C++常见习题问答集锦(六十五) 之彩票幸运星 程序之美 1.L1-062 幸运彩票 (15 分) 彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张 ...

  2. C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归)

    C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归) 程序之美 1.C语言,计算1乘以3×5*-乘n的积,并输出结果,n值由键盘接收. #include<stdio.h>v ...

  3. C语言/C++常见习题问答集锦(七十六)之玫瑰花寄语

    C语言/C++常见习题问答集锦(七十六)之玫瑰花寄语 程序之美 在古希腊神话中,玫瑰花集爱与美于一身,既是美神的化身,又溶进了爱神的血液.可以说,在世界范围内,玫瑰是用来表达爱情的通用语言,形成了永不 ...

  4. C语言/C++常见习题问答集锦(七十四) 之裨补阙漏

    C语言/C++常见习题问答集锦(七十四) 之裨补阙漏 程序之美 1.编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址.(注意: 主函数中用****作为结束输入的标 ...

  5. C语言/C++常见习题问答集锦(四十) 之分门别类

    C语言/C++常见习题问答集锦(四十) 之分门别类 程序之美 1.编写一个count函数,统计下输入的字符串中"."(句号)的个数,并进行输出. int count(char* p ...

  6. C语言/C++常见习题问答集锦(三十三)之人民币兑换

    C语言/C++常见习题问答集锦(三十三)之人民币兑换 程序之美 1.将一元钱换成1分,2分和5分硬币,每种硬币的个数大于0,且为5的倍数,编写程序并计算几种换法 C++: #include <i ...

  7. C语言/C++常见习题问答集锦(四十三) 之持之以恒

    C语言/C++常见习题问答集锦(四十三) 之持之以恒 程序之美 1.C语言计算1-1/3+1/5-1/7+1-+1/101 #include<stdio.h> int main(){int ...

  8. C语言/C++常见习题问答集锦之哆啦A梦

    C语言/C++常见习题问答集锦之哆啦A梦 程序之美 前言 主体 运行效果 代码示例 逻辑分析 初始化 绘制流程 资源释放 结束语 程序之美 前言 还记得儿时的哆啦A梦(机器猫)么?每逢周末,就会急匆匆 ...

  9. C语言/C++常见习题问答集锦[八十三]之数据结构顺序表(operand types are error: no match for “operator==“)

    C语言/C++常见习题问答集锦[八十三]之数据结构顺序表{operand types are error: no match for "operator=="} 程序之美 前言 主 ...

最新文章

  1. 杂记-01.xcode模拟器管理
  2. 【浅谈数据结构】《数据结构》Data Structure
  3. [19/04/11-星期四] 多线程_并发协作(生产者/消费者模式_2种解决方案(管程法和信号灯法))...
  4. 百安俱乐部关于“BotNet专题讨论”资料
  5. 统计一个数组中正数和负数的个数
  6. TIME_WAIT太多解决思路和方法
  7. APP支付报错ALI40247处理方案!
  8. jsoneditor
  9. 移动Web UI库(H5框架)
  10. 服务器断开消息,Websockets - 断开服务器消息
  11. JAVA开发路线走向高级开发工程师
  12. git merge fast-forward squash no-ff
  13. 《当时只道是寻常》——安意如——品纳兰容若《饮水词》
  14. Linux交换分区 swap分区
  15. LTR|怎么理解基于机器学习“四大支柱”划分的学习排序方法
  16. 报错(SQLite 3.8.3 or later is required (found 3.7.17).)的解决办法
  17. 华为OJ平台题目-砝码重量
  18. 解决Identify and stop the process that‘s listening on port 8080 端口问题
  19. 计算机中的虚拟ip,如何设置电脑虚拟IP
  20. 45种美丽、免费的字体,适用于潮流的网页设计

热门文章

  1. 2017年哈工大数理逻辑B期末考试参考答案(1)
  2. Oracle INSERT ALL 语句介绍
  3. 机器学习(周志华) 第十四章概率图模型
  4. Python Random随机数
  5. gps android时钟同步,通过GPS时间同步Android设备?
  6. jsp中EL表达式显示时中文乱码
  7. java接口汽车品牌,88_熟练掌握ES Java API_对汽车品牌进行全文检索、精准查询和前缀搜索...
  8. ScyllaDB 1.2 国内安装更新源发布
  9. Commvault资源集合(20191009)
  10. mysql的WAL技术是什么_我们常听到的WAL到底是什么