int menu(){

printf("请按提示输入完毕操作!\n");  

printf("1.查询员工信息\n");  

printf("2.统计员工数量\n");  

printf("3.录入员工信息\n");  

printf("4.删除员工信息\n");  

printf("5.按id排序全部员工\n"); 

printf("6.打印全部员工信息\n");

printf("7.退出系统\n");   

return 0;

}

如menu()函数所看到的,该系统一共同拥有7个功能

#include <stdio.h>
#include <stdlib.h>
#include <string.h> struct emp{
int id;
char name[50];
struct emp * next;
// struct emp * prev;
}; struct emp * initList(); struct emp * addListTailNode(struct emp * head); struct emp * deleteListNode(struct emp * head,int id); struct emp * searchEmp(struct emp * head,int id); int printList(struct emp * l); int printNode(struct emp * p); struct emp * sortList(struct emp * head); int getListLen(struct emp * head); int writeToDisk(struct emp * head); struct emp * readFromDisk(); int menu(); int usage(struct emp * head);

#include "emp.h"

int main(){
struct emp * head;
head=readFromDisk();
usage(head);
return 0;
} struct emp * initList(){
struct emp * head;
head=(struct emp *)malloc(sizeof(struct emp));
head->next=NULL;
return head;
} struct emp * addListTailNode(struct emp * head){
int id;
char name[50];
struct emp * p, * last , * check;
last = head;
while(last->next!=NULL){
last=last->next;
}
printf("依次输入:员工id号,姓名!\n");
scanf("%d%s",&id,&name);
check = head;
while(check!=last){ //遍历
check=check->next;
if(id==check->id){
printf("加入�失败!员工id号反复!\n");
return head;
}
}
p=(struct emp *)malloc(sizeof(struct emp));
p->id=id;
strcpy(p->name,name);
//
last->next=p;
last=p;
p->next=NULL;
printf("%s员工信息已加入�!\n",p->name);
return head;
} struct emp * deleteListNode(struct emp * head,int id){
struct emp * p,* q;
p = head->next;
while(p!=NULL){
if(p->next->id==id){
break;
}
p=p->next;
}
if(head->next==NULL){
printf("书籍信息为空!删除失败!\n");
}
else{
q = p->next;
p->next = q->next;
printf("%s书籍信息被删除!\n",q->name);
free(q);
}
return head;
} struct emp * searchEmp(struct emp * head,int id){//查询,返回节点信息
struct emp * p;
p = head->next;
while(p!=NULL){
if(p->id==id){
break;
}
p=p->next;
}
return p;
} int printNode(struct emp * p){//打印节点信息
if(p!=NULL){
printf("员工id: %d 员工姓名:%s\n",p->id,p->name);
}
else{
printf("系统内无该员工信息!\n");
}
return 0;
} int printList(struct emp * head){ //打印整条链表
struct emp * p;
p = head->next;
while(p!=NULL){
printNode(p);
p=p->next;
}
return 0;
} struct emp * sortList(struct emp * head){//排序
struct emp * p,* q;
int temp_id;
char temp_name[50];
for(p=head->next;p!=NULL;p=p->next){
for(q=p->next;q!=NULL;q=q->next){
if(p->id>q->id){
temp_id = q->id;
q->id = p->id;
p->id = temp_id;
//
strcpy(temp_name,q->name);
strcpy(q->name,p->name);
strcpy(p->name,temp_name);
}
}
}
return head;
} int getListLen(struct emp * head){
int len=0;
struct emp * p;
p=head->next;
while(p!=NULL){
len++;
p=p->next;
}
return len;
} int writeToDisk(struct emp * head){
FILE * fp;
struct emp * p;
if((fp = fopen("D:\\emp.hhtx", "w")) == 0){
printf("写入失败……!\n");
return 0;
}
//
p=head->next;
while(p!=NULL){
fwrite(p,sizeof(struct emp),1,fp);
printf("%d %s\n",p->id,p->name);
p=p->next;
}
fclose(fp);
return 0;
} struct emp * readFromDisk(){
FILE * fp;
struct emp * head,* last,* p,* temp;
head = initList();
if((fp = fopen("D:\\emp.hhtx", "r")) == 0){
printf("载入失败……未找到存档数据!\n\n");
return head;
}
//
last = head;
p=(struct emp *)malloc(sizeof(struct emp));
while(p!=NULL){
p=(struct emp *)malloc(sizeof(struct emp));
fread(p,sizeof(struct emp),1,fp);
printf("读取数据: %d %s\n",p->id,p->name);
//
last->next=p;
last=p;
p=p->next;
}
fclose(fp);
printf("系统数据初始化完毕!");
return head;
} int menu(){
printf("请按提示输入完毕操作!\n");
printf("1.查询员工信息\n");
printf("2.统计员工数量\n");
printf("3.录入员工信息\n");
printf("4.删除员工信息\n");
printf("5.按id排序全部员工\n");
printf("6.打印全部员工信息\n");
printf("7.退出系统\n");
return 0;
} int usage(struct emp * head){
int x,id;
struct emp * p;
menu();
while(1){
printf("请输入序列号:");
scanf("%d",&x);
switch(x){
case 1:
printf("输入所要查询的员工的id号:");
scanf("%d",&id);
p = searchEmp(head,id);
printNode(p);
printf("---------------------------------\n");
break;
case 2:
printf("系统中一共存在%d个员工\n",getListLen(head));
break;
case 3:
head=addListTailNode(head);
printf("---------------------------------\n");
break;
case 4:
printf("输入所要删除的员工的id号:");
scanf("%d",&id);
head=deleteListNode(head,id);
printf("---------------------------------\n");
break;
case 5:
printf("排序開始……\n");
head=sortList(head);
printf("排序已完毕!\n");
printf("---------------------------------\n");
break;
case 6:
printList(head);
printf("---------------------------------\n");
break;
case 7:
writeToDisk(head);
printf("保存完毕……\n");
printf("已退出系统!\n");
printf("---------------------------------\n");
return 0;
default:
return 0;
}
}
return 0;
}

人事管理系统 c语言版的更多相关文章

  1. 教你做一个单机版人事管理系统(Winform版)treeview与listview使用详情

    ------------------------------------------------------------------部门部分------------------------------ ...

  2. JAVA课程设计——一个简单的教务人事管理系统

    大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...

  3. 基于Spring MVC + Spring + MyBatis的【人事管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/33163160 一.语言和环境 实现语言:JAVA语言 环境要求:IDEA/Eclip ...

  4. 团队编程——web应用之人事管理系统

    本次作业为团队作业,团队博客要求如下:1. 介绍团队情况:包括队长.成员.队名.成员照片.队训--.等:2. 介绍团队项目名称.总体任务,各成员任务等:3. 每个队做 一次需求调研(针对团队项目),要 ...

  5. libnode 0.4.0 发布,C++ 语言版的 Node.js

    libnode 0.4.0 支持 Windows ,提升了性能,libuv 更新到 0.10.17 版本,libj 更新到 0.8.2 版本. libnode 是 C++ 语言版的 Node.js,和 ...

  6. md5加密算法c语言版

    from: http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) ---------------- ...

  7. 基于gSOAP使用头文件的C语言版web service开发过程例子

    基于gSOAP使用头文件的C语言版web service开发过程例子 一服务端 1 打开VS2005,创建一个工程,命名为calcServer. 2 添加一个头文件calc.h,编辑内容如下: 1// ...

  8. MFC原创:三层架构01(人事管理系统)DAL

    VC++/MFC Window编程原创教程文件夹 C++课程设计来着.但还没学过数据,也还没理解过三层架构,就把这个作业深化点来做了.尽管要做的这个人事管理系统看起来是挺简单的,无非就是处理员工信息. ...

  9. Windows 8.1 with Update 镜像下载(增OEM单语言版)

    该系统已有更新的版本,请转至<Windows 8.1 with update 官方最新镜像汇总>下载. 2014年4月9日凌晨,微软向MSDN订阅用户开放了Windows 8.1 with ...

随机推荐

  1. SimpleAdapter

    1.视图 1)主视图 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

  2. 01-OC介绍

    目录 一.OC语言介绍 二.ios系统 三.在OC语言开发中使用C语言语法 四.面向对象 回到顶部 一.OC语言介绍 1 早在20世纪80年代早期,BardCox发明了Objective-C,扩充了C ...

  3. CentOS6使用第三方yum源安装更多rpm软件包

    引言:       CentOS自带的yum源中rpm包数量有限,很多时候找不到我们需的软件包,(例如:要安装网络连接查看软件iftop,默认设置下无法使用yum命令安装),下面教大家在CentOS ...

  4. 用ATL写简单的ActiveX控件 .

    我正在做的项目需要用读卡器来读数据,由于系统是B/S架构的所以只能把读卡器的驱动封装成一个无界面的ActiveX控件,这样web页面中的js代码才能访问读卡器其实做起来也挺简单的,我用的环境是VS20 ...

  5. 一个带动画效果的颜色选择对话框控件AnimatedColorPickerDialog

    android4.4的日历中选择日程显示颜色的时候有一个颜色选择对话框非常漂亮,模仿他的界面我实现了一个类似的对话框,而且带有动画效果. 代码的实现可讲的地方不多,主要是采用了和AlertDialog ...

  6. paip.按键替换映射总结

    paip.按键替换映射总结 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax 因为 ...

  7. 在MySql中实现MemberShip的权限管理

    步骤: 1.在MySql种创建一个数据库,名称任意取,我们只是要得到一个空的数据库,我们假设这个数据库的名称为authentication. 2.在VS种创建一个Web应用程序,File——new—— ...

  8. []: secureCRT连接ubuntu问题- The remote system refused the connection

    secureCRT连接ubuntu问题- The remote system refused the connection http://jxyang.iteye.com/blog/1484915 解 ...

  9. UML03-类图

    1.在类图中,聚合关系表达总体与局部的关系. 2.请根据下面的需求,画出用例图和类图. 系统允许管理员通过磁盘加载存货数据来运行存货清单报告: 管理员通过从磁盘加载存货数据.向磁盘保存存货数据来更新存 ...

  10. UVa 657 掷骰子

    意甲冠军:有一个大图.每个像素是格孩子只可能是 . * X 三种.代表背景.玻色子.色子点. 两格子是邻近或在通信,当且仅当两个格儿子*要么X.且具有共同的边,这是上下左右四个方向,斜过,即四连块. ...