码龄9年
关注
int menu(){
printf("请按提示输入完成操作!\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->nextp!=NULLp=p->next){
for(q=p->nextq!=NULLq=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("------
人事管理 本身与C语言没什么关系不过 可以用C语言编写人事管理软件,实现各种人事管理的需求。
不过 实际应用中,并不会使用C完成这些,因为C在界面上的缺陷,使得C设计的程序界面美观度,友好度不足。
现在更习惯于使用C++开发C/S架构的管理软件
或者使用java/js/php做B/S架构软件。
PB做C/S也不错。
你这是个作业或者是本科的毕业设计吧?只用C的话,你要确定程序最终的运行环境.因为主要是用windows的,所以假定你用的windows,这样的话,你的程序界面就需要用windwos
sdk编程的知识了,因为你用C,所以MFC就没法用了,那个是C++的.
数据的存储,你可以采用自己设计存储文件的方式,也可以使用现有的数据库,推荐采用SqlLite或者mysql.
如果你的和序序跑在linux下,那可以采用gtk来做界面.