1. */
  2. * Copyright (c) 2016,烟台大学计算机与控制工程学院
  3. * All rights reserved.
  4. * 文件名:text.cpp
  5. * 作者:常轩
  6. * 微信公众号:Worldhello
  7. * 完成日期:2016630
  8. * 版本号:V1.0
  9. * 问题描述:模块化设计,分别有录入信息,删除信息,浏览信息,查询信息,修改信息,采用链表存储数据,用文件保存职工信息等
  10. * 程序输入:无
  11. * 程序输出:见运行结果
  12. */

在此博文中的程序可能会有一些BUG,如想获取此程序的工程压缩包,请关注微信公众号:Worldhello,在后台回复:职工信息管理系统,即可获得压缩包与完整的程序设计报告。另外回复:银行储蓄,可获得通过使用XML文件存取用户信息的C++程序。后台获得的程序BUG相对来说会比较少,因为一直在优化。

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "string.h"
  4. #include "malloc.h"
  5. struct WORK{
  6. int Number; //工号
  7. char Name[32]; //姓名
  8. char Sex[2]; //性别
  9. int Old; //年龄
  10. char Edu[20]; //学历
  11. float Salary; //工资
  12. char Address[64]; //住址
  13. long Tel; //电话
  14. struct WORK *next;
  15. };
  16. WORK* worker=NULL;
  17. void Help(); //帮助
  18. void saveWorToFile(); //保存职工信息到文件
  19. void addworker(WORK *wor); //添加职工信息(链表操作)
  20. void delWork(char* name); //删除职工信息(链表操作)
  21. void delworker(); //删除职工信息
  22. void add(); //录入职工信息
  23. void lookthrough(); //浏览职工信息
  24. void query(); //查询职工信息
  25. void Reviseworker(); //修改职工信息
  26. int menu_select(); //菜单界面
  27. void readWorkerput (); //从文件中读取职工信息
  28. int main()
  29. {
  30. readWorkerput ();
  31. char choose;
  32. for(;;)
  33. {
  34. choose=menu_select();
  35. if(choose==1)
  36. add();
  37. else if(choose==2)
  38. lookthrough();
  39. else if(choose==3)
  40. query();
  41. else if(choose==4)
  42. delworker();
  43. else if(choose==5)
  44. Reviseworker() ;
  45. else if(choose==6)
  46. Help();
  47. else
  48. break;
  49. }
  50. return 0;
  51. }
  52. int menu_select() //菜单函数定义
  53. {
  54. char c;
  55. printf("===============================================================\n");
  56. printf("|----------------------职工信息管理系统 v1.0------------------|\n");
  57. printf("| |\n");
  58. printf("| 1.录入信息 |\n");
  59. printf("| 2.浏览信息 |\n");
  60. printf("| 3.查询信息 |\n");
  61. printf("| 4.删除信息 |\n");
  62. printf("| 5.修改信息 |\n");
  63. printf("| 6.使用帮助 |\n");
  64. printf("| 7.退出系统 |\n");
  65. printf("***************************************************************\n");
  66. printf(" 请输入(1-7)进行操作:\n");
  67. do{
  68. scanf("%c",&c);
  69. }while(c<'1'||c>'7');
  70. return c-48;
  71.  
  72. }
  73. /****************************************************************************************************************************/
  74. void add() //1、录入职工信息函数定义
  75. {
  76. WORK *p;
  77. p=worker;
  78. int tmp=1;
  79. int number;
  80. char name[32];
  81. char sex[2];
  82. int old;
  83. char edu[20];
  84. float salary;
  85. char address[64];
  86. long tel;
  87. printf("输入工号:");
  88. scanf("%d",&number);
  89. while(p!=NULL)
  90. {
  91. if(p->Number ==number)
  92. {
  93. printf("该工号已存在!\n");
  94. tmp =2;
  95. }
  96. p=p->next;
  97. }
  98. if(tmp==2)
  99. return ;
  100. printf("输入姓名:"); //姓名
  101. scanf("%s",name);
  102. printf("输入性别:"); //性别
  103. scanf("%s",sex);
  104. printf("输入年龄:"); //年龄
  105. scanf("%d",&old);
  106. printf("输入学历:"); //学历
  107. scanf("%s",edu);
  108. printf("输入工资:"); //工资
  109. scanf("%f",&salary);
  110. printf("输入地址:"); //地址
  111. scanf("%s",address);
  112. printf("输入电话:"); //电话
  113. scanf("%ld",&tel);
  114. WORK *n=(WORK *)malloc(sizeof(WORK));
  115. n->Number=number;
  116. strcpy(n->Name,name);
  117. strcpy(n->Sex,sex);
  118. n->Old=old;
  119. strcpy(n->Edu,edu);
  120. n->Salary=salary;
  121. strcpy(n->Address,address);
  122. n->Tel=tel;
  123. addworker(n);
  124. saveWorToFile();
  125. printf("录入成功!\n");
  126. }
  127. void addworker(WORK *wor)
  128. {
  129. WORK *p;
  130. if(worker==NULL)
  131. {
  132. worker =wor;
  133. wor->next=NULL;
  134. }
  135. else
  136. {
  137. p = worker;
  138. while(p)
  139. {
  140. if(p->next==NULL)
  141. {
  142. p->next =wor;
  143. wor->next =NULL;
  144.  
  145. }
  146. p= p->next;
  147. }
  148. }
  149. }
  150. /***************************************************************************************************************************/
  151. void lookthrough() //2、浏览信息
  152. {
  153. WORK * p;
  154. p=worker;
  155. if(p!=NULL)
  156. {
  157. printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n");
  158. while(p!=NULL)
  159. {
  160. printf("%d %s %s %d %s %f %s %ld\n",p->Number,p->Name,p->Sex,p->Old,p->Edu,p->Salary,p->Address,p->Tel);
  161. p=p->next;
  162. }
  163. }
  164. else
  165. printf("暂无职工信息!\n");
  166. }
  167.  
  168. /***************************************************************************************************************************/
  169. void query() //3、查询职工信息
  170. {
  171. int num;
  172. int tmp=1;
  173. WORK * p;
  174. p=worker;
  175. int ju;
  176. int nianling;
  177. char xueli[20];
  178. int judge;
  179. printf(" 精确查找请按--1\n 批量查找请按--2\n");
  180. scanf("%d",&judge);
  181. switch(judge)
  182. {
  183. case 1:
  184. printf("请输入您要查询的工号:\n");
  185. scanf("%d",&num);
  186. while(p!=NULL)
  187. {
  188. if(p->Number==num)
  189. {
  190. tmp =3;
  191. break;
  192. }
  193. p=p->next;
  194. }
  195. if(tmp==3)
  196. {
  197. printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n");
  198. printf("%d %s %s %d %s %f %s %ld\n",p->Number,p->Name,p->Sex,p->Old,p->Edu,p->Salary,p->Address,p->Tel);
  199. }
  200. else
  201. printf("工号不存在!\n");
  202. break;
  203. case 2:
  204.  
  205. printf(" 查询同一年龄职工信息请按------1\n 查询同一学历职工信息请按------2\n");
  206. scanf("%d",&ju);
  207. if(ju==1)
  208. {
  209. printf("请输入年龄:\n");
  210. scanf("%d",&nianling);
  211. if(p!=NULL)
  212. { printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n");
  213. while(p!=NULL)
  214. {
  215. if(p->Old==nianling)
  216. {
  217. printf("%d %s %s %d %s %f %s %ld\n",p->Number,p->Name,p->Sex,p->Old,p->Edu,p->Salary,p->Address,p->Tel);
  218. }
  219. p=p->next;
  220. }
  221. }
  222. else
  223. printf("暂无职工信息!");
  224. }
  225. else if(ju==2)
  226. {
  227. printf("请输入学历:");
  228. scanf("%s",xueli);
  229. if(p!=NULL)
  230. {
  231. while(p!=NULL)
  232. {
  233. if(!strcmp(p->Edu,xueli))
  234. {
  235. printf("%d %s %s %d %s %f %s %ld\n",p->Number,p->Name,p->Sex,p->Old,p->Edu,p->Salary,p->Address,p->Tel);
  236. }
  237. p=p->next;
  238. }
  239. }
  240. else
  241. printf("暂无职工信息!");
  242. }
  243. }
  244. }
  245. /***************************************************************************************************************************/
  246. void delworker() //4、删除职工信息
  247. {
  248. WORK * p;
  249. p=worker;
  250. int n;
  251. int tem=1;
  252. char panduan[4];
  253. printf("请输入要删除的工号:\n");
  254. scanf("%d",&n);
  255. printf("确定删除%d?(yes/no)\n",n);
  256. scanf("%s",panduan);
  257. if(strcmp("no",panduan)==0)
  258. return;
  259. else
  260. {
  261. while(p!=NULL)
  262. {
  263. if(p->Number==n)
  264. {
  265. tem =2;
  266. break;
  267. }
  268. p=p->next;
  269. }
  270. }
  271. if(tem==2)
  272. delWork(p->Name);
  273. saveWorToFile();
  274. }
  275. void delWork(char *name)
  276. {
  277. WORK *p,*pre;
  278. if (worker==NULL)
  279. {
  280. return;
  281. }
  282. p =pre=worker;
  283. while(p)
  284. {
  285. if (!strcmp(p->Name,name))
  286. {
  287. if(p==worker)
  288. {
  289. worker = worker->next;
  290. free(p);
  291. printf("删除成功!\n");
  292. p=NULL;
  293. }
  294. else
  295. {
  296. pre->next =p->next;
  297. free(p);
  298. printf("删除成功!\n");
  299. p=NULL;
  300.  
  301. }
  302. }
  303. else
  304. {
  305. pre =p;
  306. p= p->next;
  307. }
  308. }
  309. }
  310. /***************************************************************************************************************************/
  311. void Reviseworker() //修改职工信息
  312. {
  313. char name[32];
  314. char sex[2];
  315. int old;
  316. char edu[20];
  317. float salary;
  318. char address[64];
  319. long tel;
  320. WORK * p;
  321. p=worker;
  322. int num;
  323. int a=1;
  324. char xueli[20];
  325. float money;
  326. int judge;
  327. printf("选择精确修改请按1\n选择批量修改请按2\n");
  328. scanf("%d",&judge);
  329. switch(judge)
  330. {
  331. case 1:
  332. printf("请输入被修改职工工号:\n");
  333. scanf("%d",&num);
  334. if(p==NULL)
  335. {
  336. printf("暂无职工信息录入!\n");
  337. return ;
  338. }
  339. while(p)
  340. {
  341. if(p->Number==num)
  342. {
  343. printf("此职工原来信息如下:\n");
  344. printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n");
  345. printf("%d %s %s %d %s %f %s %ld\n",p->Number,p->Name,p->Sex,p->Old,p->Edu,p->Salary,p->Address,p->Tel);
  346. printf("输入姓名:"); //姓名
  347. scanf("%s",name);
  348. printf("输入性别:"); //性别
  349. scanf("%s",sex);
  350. printf("输入年龄:"); //年龄
  351. scanf("%d",&old);
  352. printf("输入学历:"); //学历
  353. scanf("%s",edu);
  354. printf("输入工资:"); //工资
  355. scanf("%f",&salary);
  356. printf("输入地址:"); //地址
  357. scanf("%s",address);
  358. printf("输入电话:"); //电话
  359. scanf("%ld",&tel);
  360. strcpy(p->Name,name);
  361. strcpy(p->Sex,sex);
  362. p->Old=old;
  363. strcpy(p->Edu,edu);
  364. p->Salary=salary;
  365. strcpy(p->Address,address);
  366. p->Tel=tel;
  367. saveWorToFile(); //保存修改后信息
  368. printf("修改成功!\n");
  369. a=0;
  370. break;
  371. }
  372. p=p->next;
  373. }
  374. if(a==1)
  375. printf("没有此职工信息!\n");
  376. break;
  377. case 2:
  378. printf("根据学历批量修改职工工资\n");
  379. printf("请输入所要批量修改的职工学历和所加工资:\n");
  380. printf("学历:");
  381. scanf("%s",xueli);
  382. printf("所加工资:");
  383. scanf("%f",&money);
  384. if(p==NULL)
  385. {
  386. printf("暂无职工信息录入!\n");
  387. return ;
  388. }
  389. while(p)
  390. {
  391. if(!strcmp(p->Edu,xueli))
  392. {
  393. p->Salary=p->Salary+money;
  394. }
  395. p=p->next;
  396. }
  397. printf(" 修改成功!");
  398. saveWorToFile();
  399. break;
  400. }
  401. }
  402. /**************************************************************************************************************************/
  403. void Help() //使用帮助
  404. {
  405. system("cls");
  406. printf("该系统用来存储职工成员信息!\n\n");
  407. printf("使用说明:\n查询信息有两种方式,分为精确查找(凭借学号),批量查找(凭借年龄和学历)\n");
  408. printf("修改信息有两种方式,分为精确修改(个人信息的修改)和批量修改(同一学历的工资修改)\n");
  409. printf("学历格式:小学、初中、高中、中专、大专、大学\n\n\n\n");
  410. printf("项目开发:常轩 技术支持:Worldhello 微信公众号:Worldhello\n\n\n\n ");
  411. char a[10];
  412. printf("按任意键,回车后继续........\n");
  413. scanf("%s",a);
  414. system("cls");
  415. }
  416. /***************************************************************************************************************************/
  417. void saveWorToFile() //保存职工信息到文件
  418. {
  419. FILE *fp;
  420. WORK*p;
  421. p = worker;
  422. if((fp=fopen("worker.txt","w"))==NULL)
  423. {
  424. printf("Can not open the file,press any key exit!");
  425. exit(1);
  426. }
  427. // fprintf(fp,"工号 姓名 性别 年龄 学历 工资 地址 电话\n");
  428. while(p)
  429. {
  430. fprintf(fp,"%d %s %s %d %s %f %s %ld\n",p->Number,p->Name,p->Sex,p->Old,p->Edu,p->Salary,p->Address,p->Tel);
  431. p=p->next;
  432. }
  433. fclose(fp);
  434. }
  435. /***************************************************************************************************************************/
  436. void readWorkerput () //运行前把文件内容读取到电脑内存
  437. {
  438.  
  439. FILE *fp;
  440. fp=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt
  441. if(fp==NULL)
  442. {
  443. printf("无法打开文件\n");
  444. exit(0); //-------- 终止程序 ---------
  445. }
  446.  
  447. int i=0;
  448. while(!feof(fp))
  449. {
  450. WORK *p=(WORK *)malloc(sizeof(WORK));
  451. fscanf(fp,"%d %s %s %d %s %f %s %ld",&p->Number,p->Name,&p->Sex,&p->Old,p->Edu,&p->Salary,p->Address,&p->Tel);
  452. i++;
  453. }
  454. fclose(fp);
  455. FILE *FP;
  456. FP=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt
  457. if(FP==NULL)
  458. {
  459. printf("无法打开文件\n");
  460. exit(0); //-------- 终止程序 ---------
  461. }
  462. int b=i-1;
  463. int j=1;
  464. if(i==1)
  465. {
  466. fclose(FP);
  467. }
  468. else
  469. {
  470. while(!feof(FP))
  471. {
  472. WORK *n=(WORK *)malloc(sizeof(WORK));
  473. fscanf(FP,"%d %s %s %d %s %f %s %ld",&n->Number,n->Name,&n->Sex,&n->Old,n->Edu,&n->Salary,n->Address,&n->Tel);
  474. //printf("%d %s %s %d %s %f %s %ld\n",n->Number,n->Name,n->Sex,n->Old,n->Edu,n->Salary,n->Address,n->Tel);
  475. addworker(n);
  476. n=n->next;
  477. if(j==b)
  478. break;
  479. j++;
  480. }
  481. fclose(FP); //----关闭文件-----
  482. }
  483. }

C语言职工信息管理系统的更多相关文章

  1. c语言学生信息管理系统-学习结构体

    #include<stdio.h> #include<stdlib.h> //结构体可以存放的学生信息最大个数,不可变变量 ; //学生信息结构体数组,最多可以存放100个学生 ...

  2. C语言学生信息管理系统项目源码

    #include   //包含printf().scanf().gets().puts().getchar()函数 #include   //包含malloc()函数 #include   //包含s ...

  3. 职工工资管理系统 --C语言

    #include<stdio.h> #include<string.h> #include<stdlib.h> #define NUM 1000 void ente ...

  4. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  5. 【转载】C语言综合实验1—学生信息管理系统

    http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...

  6. C语言小练习之学生信息管理系统

    C语言小练习之学生信息管理系统 main.c文件   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  7. C语言实现天气信息管理系统

    这篇文章主要介绍了C语言实现天气信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C语言实现天气信息管理系统的具体代码,供大家参考,具体内 ...

  8. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  9. 用C语言制作小型商品信息管理系统过程中的问题

    大神请默默飘过... 以下是第一次制作时的源码: // 商品信息管理.cpp : 定义控制台应用程序的入口点. // // 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点. // #in ...

随机推荐

  1. springMVC的注解@PathVariable是什么?详情及用法解析

    在路由中定义变量规则后,通常我们需要在处理方法(也就是@RequestMapping注解的方法)中获取这个URL变量的具体值,并根据这个值(例如用户名)做相应的操作,Spring MVC提供的@Pat ...

  2. ZJNU 1129 - The sum problem——中级

    枚举区间可能的长度len,将m减去1~len构成的序列和后如果结果是len的倍数,则可以构成答案区间. /* Written By. StelaYuri */ #include<stdio.h& ...

  3. [HNOI2019]鱼(计算几何)

    看到数据范围n<=1000,但感觉用O(n^2)不现实,所以考虑方向应该是O(n^2logn). 一种暴力做法:用vector存到1点相同的2点和到2点相同的1点,然后枚举A,枚举BC,再枚举D ...

  4. Metasploit详解

    title date tags layout Metasploit 详解 2018-09-25 Metasploit post 一.名词解释 exploit 测试者利用它来攻击一个系统,程序,或服务, ...

  5. shell_切割日志

    可以修改的:1.日志存放目录:logdir='/data/logs/'2.每个类型日志保留个数:savefiles=30 #!/bin/bashnum=$(date -d"+1 day ag ...

  6. C# 关闭登录窗体,显示主窗体

    首先在programm.cs里设置登录窗体显示 static class Program    {        /// <summary>        /// The main ent ...

  7. P - Atlantis (线段树+扫描线)

      There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Som ...

  8. IP命令介绍

    ip指令可以显示或操作路由.网络设备.设置路由策略和通道 1.语法 ip [选项]  Object  COMMAND [help] Object对象可以是: link  网络设备.addr 设备的协议 ...

  9. 3dmax2016卸载/安装失败/如何彻底卸载清除干净3dmax2016注册表和文件的方法

    3dmax2016提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2016失败提示3dmax2016安装未完成,某些产品无法安装,也有时候想重新安装3 ...

  10. highcharys去掉x轴,y轴轴线和刻度

    x轴 xAxis: { lineWidth :,//去掉x轴线 tickWidth:,//去掉刻度 labels: { enabled: false },//去掉刻度数字 }, y轴 yAxis: { ...