求一个c语言人事管理系统

Python010

求一个c语言人事管理系统,第1张

不灭王朝

码龄9年

关注

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->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来做界面.