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

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

一.要求:

(1)上机时间:每天上午8:00~11:30。下午2:00~4:30上课时间,严禁迟到、早退及旷课,严禁做与课程设计无关的事情,情节严重者取消课程设计成绩。

(2)保质保量完成课程设计要求的所有内容。

(3)将所需上交的电子文档存放在以学号和姓名命名的文件夹中。

(4)杜绝抄袭。如若发现有抄袭现象,抄袭者和被抄袭者的课程设计成绩全部取消。

二.课程设计结束应提交的文档:

1、系统分析报告,内容有:

(1)数据流图(DFD)(可选项,仅要求学有余力的学生完成)

(2)数据词典(DD) (可选项,仅要求学有余力的学生完成)

2、系统设计报告,内容有:

(1)软件设计说明书(SDS)

(2)模块结构图(SC)和模块说明

(3)数据结构说明(包括输入、输出、数据库等)

(4)用户界面

3、编程报告,内容有:

(1)能实际运行的源程序

(2)程序说明和变量说明

4、附加源代码,内容有:

(1)数据库创建的SQL脚本文件

(2)应用系统的关键源代码

三.课程设计进度安排:

课程设计内容

学时

地点

备注

应用系统设计培训

2天

软件实验室

周六、周日

查阅资料,分析与设计数据库

1天

图书馆、软件实验室

周一

编写程序,进行调试

2天

软件实验室

周二、三

完成模块联调,进行测试

1天

软件实验室

周四

成果验收,完成设计报告

1天

软件实验室

周五

四.打印文档规范:

1.统一用A4纸打印。

2.统一打印封面。

3.正文字体:五号。

4.页面设置:上边距:2.54;左边距:2.5;右边距:2.5;

标注页码。

5.正文具体内容格式见“图书管理系统”模板。

五、参考题目

1. 学生成绩管理系统数据库设计;

第 4 页

2. 课程管理子系统数据库设计;

3. 通讯录子系统数据库设计;

4. 教室管理子系统数据库设计;

5. 宿舍管理子系统数据库设计;

6. 个人事务管理子系统数据库设计;

7. 卫生科医疗管理子系统数据库设计;

8. 库房入库出库管理子系统数据库设计;

9. 小商店销售管理子系统数据库设计;

10. 工资管理系统数据库设计

11. 人事管理系统数据库设计

12. 仓库管理系统数据库设计

第 5 页

13. 学生管理系统数据库设计

14. 图书馆管理信息系统数据库设计

15. 宾馆客房管理信息系统数据库设计

16. 学籍管理系统数据库设计

17. 机票预定系统数据库设计

18. 其它管理子系统数据库设计(自己选题需经指导教师认可)。

六、参考书目

1.《数据库系统概论》,萨师煊、王珊, 高等教育出版社,2006年。

2.《数据库原理与应用》,李红,高等教育出版社,2003。

3.《SQL Server 数据库设计与管理》,姜力,高群,北京大学出版社,2006。

4.《PowerDesigner软件工程技术》,白尚旺等,电子工业出版社,2004。

5.《信息系统开发实例精粹》,汪孝宜,胡海璐,米海生,电子工业出版社,2006。

6.《Visual C#2005数据库开发经典案例》,罗斌,中国水利出版社,2008。

#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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9720621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存