共用体类型应用

学校全体员工分为教师和行政人员两类。教师的数据包括:编号,姓名,职业(t),职称(教授professor,副教授associate professor,讲师lecturer等);行政人员的数据包括:编号,姓名,职业(w),部门号(100,200,300等)。要求输入若干人员的数据并能输出他们的资料,同时统计教师(tcount)和行政人员(wcount)的数量。使用动态内存分配函数实现。

输入格式:

输入第一行给出正整数n,随后给出n个员工的信息。

输出格式:

输出指定数量的员工信息,并在最后一行输出教师和行政人员的数量。

输入样例:

5
10000 jack t professor
20000 rose t associate professor
30000 mike w 100
40000 robin w 200
50000 lina t lecturer

输出样例:

10000 jack t professor
20000 rose t associate professor
30000 mike w 100
40000 robin w 200
50000 lina t lecturer
tcount = 3, wcount = 2
#include<stdio.h>
struct t
{
    char z[50];
};
struct w
{
    int n;
};
struct stu
{
    long int num;
    char name[20];
    char c;
    union
    {
        struct t a;
        struct w b;
    }people;
}a[40];
main()
{   char c;
    int n,i,k=0,y=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%ld %s %c",&a[i].num,a[i].name,&a[i].c);
        if(a[i].c=='t')
        {   y++;
         c=getchar();
            gets(a[i].people.a.z);
        }
        else{
            
            k++;
        c=getchar();
            scanf("%d",&a[i].people.b.n);
        }
    }
    for(i=0;i<n;i++)
    {
        if(a[i].c=='t')
            printf("%ld %s %c %s\n",a[i].num,a[i].name,a[i].c,a[i].people.a.z);
        else 
            printf("%ld %s %c %d\n",a[i].num,a[i].name,a[i].c,a[i].people.b.n);
    }
    printf("tcount = %d, wcount = %d",y,k);
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
、问题描述(功能要求): 某高校,主要人员有:在职人员行政人员教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。 要求: 1) 添加删除功能:能根据学院人事的变动情况,添加删除记录; 2) 查询功能:能根据编号姓名进行查询; 3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储; 4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数); 5) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。 6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。 2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告以及系统使用说明书。 四、报告:
某高校,主要人员有:领导、教师和学生,共有的信息包括编号姓名、性别、年龄。其中领导还应包含的信息有:任职部门(学院、各系部)、职称教师还应包含的信息有:职称、任职时间、专业;学生还应包含的信息有:所在班级、所在宿舍等。 某高校有四类员工教师、实验员、行政人员教师行政人员;共有的信息包括编号姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。 2、功能要求 (1)基本功能 1) 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。 2) 查询功能:可根据编号姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 3) 显示功能:可显示当前系统中所有记录,每条记录占据一行。 4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员编号姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值