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

Python020

求一个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("------

#include<stdio.h>

#define N 40

#include<string.h>

#include<conio.h>

#include<stdlib.h>

struct student{

 long num//工号

 char name[10]//姓名

 char sex[4]//性别

 char ad[100]//地址

 char barthday[20]//出生日期

 char apartnum[100],posinum[10],adds[100]//部门编号、职务编号、备注

 char posiname[20]//职务名称

 float income//职务工资

}st[N]

void menu()

{

    printf("****************************************\n")

    printf("欢迎使用家庭财务管理系统\n")

    printf("****************************************\n\n")

    printf("1:添加记录\n")

    printf("2:查询记录\n")

    printf("3:删除记录\n")

    printf("4:显示所有记录\n")

    printf("0:退出\n")

}

void  input(struct student s[],int *n)

{

    printf("请输入您所要添加的职工数目\n")

    int x,i,j,b,flag=0

    scanf("%d",&x)

    b=*n+x

    for(i=*n+1i<=bi++)

    {

        flag=1

        printf("请输入员工工号:\n")

        scanf("%ld",&s[i].num)

        for(j=1j<ij++)

            if(s[i].num==s[j].num&&i>1)

            { printf("输入有误\n")flag=0i--b--break}

        if(flag)

        {

            printf("请输入员工姓名:\n")

            scanf("%s",s[i].name)

            printf("请依次输入该员工性别、出生日期、地址、部门编号、职务编号、职务名称、职务工资、备注:\n")

            scanf("%s%s%s%s%s%s%f%s",&s[i].sex,&s[i].barthday,&s[i].ad,&s[i].apartnum,&s[i].posinum,&s[i].posiname,&s[i].income,&s[i].adds)

        }

    }

    *n=bif(flag) printf("添加成功\n")

    printf("输入完毕!按任意键返回主菜单!") getch()

}

void Delete(struct student s[],int *n)

{

    printf("请输入您所要删除的职工姓名\n")

    char m[10]int j

    scanf("%s",m)

    for(j=1j<=*nj++)

    if(strcmp(s[j].name,m)==0)

    {

        *n=*n-1

        for(j<=*nj++)

        s[j]=s[j+1]

        break

    }

    printf("删除成功!\n")

    printf("输入完毕!按任意键返回主菜单!") getch()

}

void find(struct student s[],int n)

{

    long b=0char c[10],kk[10]

    printf(" \t****************************************\n")

    printf(" \t\t1.1----------按工号查询\n")

    printf(" \t\t1.2----------按姓名查询\n")

    printf(" \t****************************************\n")

    int j,e,flag=0

    float soc

    scanf("%s",kk)

    if(strcmp(kk,"1.1")==0){

        printf("请输入职工工号\n")

        scanf("%s",c)

        {

            for(j=0,e=strlen(c)j<ej++)

            b=b*10+c[j]-48

            printf("工号  姓名  性别  出生日期  地址  部门编号  职务编号  职务名称  职务工资  备注\n")

            for(j=1j<=nj++)

            if(b==s[j].num)

            {

                flag=1

                printf("%ld %s %s %s %s %s %s %s %.2f %s",s[j].num,s[j].name,s[j].sex,s[j].barthday,s[j].ad,s[j].apartnum,s[j].posinum,s[j].posiname,s[j].income,s[j].adds)

            }

            if(!flag)

                printf("未找到相关职工信息\n")

       }

    }

    else if(strcmp(kk,"1.2")==0)

    {

        printf("请输入职工姓名\n")

        scanf("%s",c)

        printf("工号  姓名  性别  出生日期  地址  部门编号  职务编号  职务名称 职务工资  备注\n")

        for(j=1j<=nj++)

            if(strcmp(s[j].name,c)==0)

            {

                flag=1

                printf("%ld %s %s %s %s %s %s %s %.2f %s\n",s[j].num,s[j].name,s[j].sex,s[j].barthday,s[j].ad,s[j].apartnum,s[j].posinum,s[j].posiname,s[j].income,s[j].adds)

            }

        if(!flag)

            printf("未找到相关职工信息\n")

    }

    else

        printf("输入有误.....\n")

    printf("查找完毕!按任意键返回主菜单!") getch()

}

void print1(struct student s[],int n)

{

    printf("工号  姓名  性别 出生日期  地址  部门编号 职务编号  职务名称  职务工资  备注\n")

    for(n>0n--)

    printf("%ld %s %s %s %s %s %s %s %.2f %s\n",s[n].num,s[n].name,s[n].sex,s[n].barthday,s[n].ad,s[n].apartnum,s[n].posinum,s[n].posiname,s[n].income,s[n].adds)

    printf("输出完毕!按任意键返回主菜单!") getch()

}

int main()

{

    menu()

    int x,n=0

    while(scanf("%d",&x)!=EOF&&x!=0)

    {

        switch(x)

        {

            case 1:input(st,&n)break

            case 2:find(st,n)break

            case 3:Delete(st,&n)break

            case 4:print1(st,n)break

            default:printf("Input error!\n")

        }

        system("cls") /*清屏*/

        menu()

 }

 return 0

}