实验二 编写员工人事管理的应用程序

来源:互联网 发布:万国数据加班多吗 编辑:程序博客网 时间:2024/04/30 08:39

实验二 编写员工人事管理的应用程序 

实验目的

C语言环境下(Turbo CVC)编写一个简单的员工人事管理的应用程序。

通过本实验,使学生能够在C语言环境下熟练地编写基本的应用程序。

实验意义

通过本实验,使学生能够进一步理解C语言中动态存储分配的使用,熟悉指针和数组的使用方法。

实验背景

某软件公司大约有30名员工,每名员工有姓名、工号、职务等属性,每年都有员工离职和入职。把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且打印最新的员工名单。

实验步骤及要求

1、设计员工人事信息的存储结构

2、建立10名员工的初始资料

3、增加2名新员工,存储在顺序表的头部

4、删除2名员工的所有信息,保持顺序表的结构

5、显示现有员工的所有信息

6、提交源程序清单及程序注释

7、提交程序使用方法和程序使用界面

8、上机演示实验结果

实验学时

3学时

 

 

#include<stdio.h>#include<stdlib.h>#include<string.h>typedef  struct Worker{    char name[20];  //员工姓名    char num[10];   //员工工号    char job[20];   //员工职位    struct  Worker *next;  //指向下一个员工}Worker,*linklist;int initlist(linklist &W)  //初始化{    if(!W)    return 0;    W->next=NULL;  //初始 指针为空    return 1;}int input(linklist &W)  //建立员工信息{    linklist p;    p=(linklist)malloc(sizeof(Worker));  //为新节点申请空间    if(!p) //申请未成功    {return 0;}    else   // 输入每一位员工信息    {        printf("请输入姓名:\n");        scanf("%s",p->name);getchar();        printf("请输入工号:\n");        scanf("%s",p->num);getchar();        printf("请输入职位:\n");        scanf("%s",p->job);getchar();    }    p->next=W->next;  //头结点插入 p节点指向并替代第一个节点    W->next=p;       //W指向第一个节点    return 0;}int del(linklist &W,char num[10])  //按员工号删除员工信息{    Worker *p,*q;    p=W->next;     q=W;    while(!(strcmp(p->num,num)==0)&&p)   //匹配员工号    {        q=p;        p=p->next;    }    if(p)  //删除p结点 q->next=p    {        q->next=p->next;        free(p);        printf("删除信息成功!\n");        }    else  //p位置不存在    {printf("删除信息不成功!\n");}    return 1;}int show(linklist &W)  //显示员工信息{    linklist p;    for(p=W->next;p;p=p->next)  //输出每一位员工信息    {        printf("姓名:%s    ",p->name);        printf("工号:%s    ",p->num);        printf("职位:%s    \n",p->job);    }        return 0;}int main(){    linklist W;    int a;    char str[100],str2[100];    initlist(W);    printf("请输入要执行的操作:input,del,show\n");    while(scanf("%s",str)!=EOF) //选择进行那一项操作    {        if(!strcmp(str,"input"))        {            printf("请输入要输入的人数:\n");            scanf("%d",&a);            while(a--)  //判断循环次数            {input(W);}        }        else if(!strcmp(str,"del"))        {            printf("请输入要删除员工的工号:\n");            scanf("%s",str2);            del(W,str2);        }        else if(!strcmp(str,"show"))        {show(W);}        printf("请输入要执行的操作:input,del,show\n");    }    return 0;}



 

原创粉丝点击