求C语言大学模拟管理系统代码

1、问题描述:为了简化设计,假设大学中只有3种人:教师、学生和在职学生,且只实现信息的输入和显示,不涉及其他功能。其中:教师信息包括:身份证号、姓名、职称、所在系、工资;... 1、问题描述:
为了简化设计,假设大学中只有3种人:教师、学生和在职学生,且只实现信息的输入和显示,不涉及其他功能。其中:
教师信息包括:身份证号、姓名、职称、所在系、工资;
学生信息:身份证号、学号、姓名、专业、入学时间;
在职学生:身份证号、学号、姓名、专业、入学时间、职称、所在系、工资;

2、功能要求:
(1)教师信息的输入、输出、保存
(2)学生信息的输入、输出、保存;
(3)在职学生信息的输入、输出、保存。

3、问题的解决方案:
(1)步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
(2)完成最低要求:完成全部功能的系统。
(3)进一步要求:对数据的合法性进行检查,提示。
展开
 我来答
自我编程
2019-03-04 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

输入验证我没写,你要自己添加。

输入那里switch case少一个break,是利用case贯通的效果,不要补充break。

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#include <time.h>
typedef struct node
{
    char id[20];//身份证
    char on[20];//学号
    char name[40];//姓名
    char subject[20];//专业
    struct tm  esTime;//入学时间
    int flag;//0:在职学生;1:普通学生;2:教师
    char title[20];//职称
    char faculty[20];//所在系
    float wages;//工资
    struct node *nexteStu;//在职学生链表指针
    struct node *nextStu;// 学生链表指针
    struct node *nextTea;//教师链表指针
}NODE;

void newNode(NODE **nodeHeads,NODE **nodeTails,int flag);//增加节点
void printfNodes(NODE **nodeHead,int flag);//打印链表

void meError(void *p);//内存申请失败
int main()
{
    int n,flag;
    NODE *nodeHeads[3]={NULL},*nodeTails[3]={NULL};
    while(1)
    {
        printf("选择要录入的人员类型:\n------0、在职学生。\n------1、普通学生。\n------2、教师 。\n------3、结束输入\n");
        scanf("%d",&flag);
        if(flag==0 || flag==1 ||flag==2)
        while(1)
        {
            newNode(nodeHeads,nodeTails,flag);
            printf("1、继续输入;2、返回主菜单;\n");
            scanf("%d",&n);
            if(n==2)
                break;
        }
        if(flag==3)
            break;

    }
    printfNodes(nodeHeads,0);
    printfNodes(nodeHeads,1);
    printfNodes(nodeHeads,2);

    return 0;
}


void printfNodes(NODE **nodeHeads,int flag)//打印链表
{
    NODE *nhSave=NULL;
    if(nodeHeads[flag])
    {

        switch(flag)
        {
            case 0:
                nhSave=nodeHeads[flag];
                printf("输入的在职学生信息:\n");
                while(nhSave->nexteStu)
                {
                    printf("----身份证:%s\n----学号:%s\n----姓名:%s\n----专业:%s\n----入学时间:%04d-%02d-%02d\n----职称:%s\n----所在系:%s\n----工资:%.2f\n",
                           nhSave->nexteStu->id,nhSave->nexteStu->on,nhSave->nexteStu->name,nhSave->nexteStu->subject,
                           nhSave->nexteStu->esTime.tm_year+1900,nhSave->nexteStu->esTime.tm_mon,nhSave->nexteStu->esTime.tm_mday,
                           nhSave->nexteStu->title,nhSave->nexteStu->faculty,nhSave->nexteStu->wages);
                    nhSave=nhSave->nexteStu;
                }

                break;
            case 1:
                nhSave=nodeHeads[flag];
                printf("输入的普通学生信息:\n");
                while(nhSave->nextStu)
                {
                    printf("----身份证:%s\n----学号:%s\n----姓名:%s\n----专业:%s\n----入学时间:%04d-%02d-%02d\n",
                           nhSave->nextStu->id,nhSave->nextStu->on,nhSave->nextStu->name,nhSave->nextStu->subject,
                           nhSave->nextStu->esTime.tm_year+1900,nhSave->nextStu->esTime.tm_mon,nhSave->nextStu->esTime.tm_mday);
                    nhSave=nhSave->nextStu;
                }
                break;
            case 2:
                nhSave=nodeHeads[flag];
                printf("输入的教师信息:\n");
                while(nhSave->nextTea)
                {
                    printf("----身份证:%s\n----姓名:%s\n----职称:%s\n----所在系:%s\n----工资:%.2f\n",
                           nhSave->nextTea->id,nhSave->nextTea->name,
                           nhSave->nextTea->title,nhSave->nextTea->faculty,nhSave->nextTea->wages);
                    nhSave=nhSave->nextTea;
                }
                break;
        }
    }

    printf("\n");
}

void newNode(NODE **nodeHeads,NODE **nodeTails,int flag)//增加节点
{
    NODE *nHead=nodeHeads[flag],*nTail=nodeTails[flag],*nodeNew=NULL;

    nodeNew=(NODE *)malloc(sizeof(NODE));
    nodeNew->flag=flag;
    nodeNew->nextStu=NULL;
    nodeNew->nexteStu=NULL;
    nodeNew->nextTea=NULL;
    switch(flag)
    {
        case 0:
            printf("在职学生信息录入:\n");
            break;
        case 1:
            printf("普通学生信息录入:\n");
            break;
        case 2:
            printf("教师信息录入:\n");
            break;
    }


    printf("请输入身份证:");
    scanf("%s",nodeNew->id);
    printf("请输入姓名:");
    scanf("%s",nodeNew->name);

    switch(flag)
    {
        case 0:
            printf("请输入职称:");
            scanf("%s",nodeNew->title);
            printf("请输入所在系:");
            scanf("%s",nodeNew->faculty);
            printf("请输入工资:");
            scanf("%f",&nodeNew->wages);
        case 1:
            printf("请输入学号:");
            scanf("%s",nodeNew->on);
            printf("请输入专业:");
            scanf("%s",nodeNew->subject);
            printf("请输入入学时间(YY-MM-DD):");
            scanf("%4d-%02d-%02d",&nodeNew->esTime.tm_year,&nodeNew->esTime.tm_mon,&nodeNew->esTime.tm_mday);
            nodeNew->esTime.tm_year-=1900;
            break;
        case 2:
            printf("请输入职称:");
            scanf("%s",nodeNew->title);
            printf("请输入所在系:");
            scanf("%s",nodeNew->faculty);
            printf("请输入工资:");
            scanf("%f",&nodeNew->wages);
            break;
    }

    if(nHead==NULL)
    {
        nHead=(NODE *)malloc(sizeof(NODE));
        meError(nHead);
        nHead->flag=-1;
        nHead->nextStu=NULL;
        nHead->nexteStu=NULL;
        nHead->nextTea=NULL;
    }
    if((flag==0 && nHead->nexteStu==NULL) || (flag==1 && nHead->nextStu==NULL) ||(flag==2 && nHead->nextTea==NULL))
        switch(flag)
        {
            case 0:nHead->nexteStu=nodeNew;break;
            case 1:nHead->nextStu=nodeNew;break;
            case 2:nHead->nextTea=nodeNew;break;
        }
    else if((flag==0 && nHead->nexteStu!=NULL) || (flag==1 && nHead->nextStu!=NULL) ||(flag==2 && nHead->nextTea!=NULL))
        switch(flag)
        {
            case 0:nTail->nexteStu=nodeNew;break;
            case 1:nTail->nextStu=nodeNew;break;
            case 2:nTail->nextTea=nodeNew;break;
        }
    nTail=nodeNew;

    nodeHeads[flag]=nHead;
    nodeTails[flag]=nTail;
}
void meError(void *p)//内存申请失败
{
    if(p==NULL)
    {
        printf("\n异常:内存申请失败!回车结束程序!\n");
        while(getch()!='\r');
        exit(0);
    }
}
上海闳怀
2024-07-22 广告
APQP管理软件是上海闳怀信息科技有限公司专为企业开发的一款质量管理工具。该软件旨在协助企业实现产品质量计划与控制的全流程管理,覆盖从产品策划、设计开发、过程确认到生产反馈等多个环节。通过APQP管理软件,企业能够更有效地进行质量管控,降低... 点击进入详情页
本回答由上海闳怀提供
qzhao_1
2019-03-04 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4285万
展开全部
你的这个要求实在是太高了。不会有人满足你的要求的。因为该问题早就已经不仅仅是一个简单的 C 语言编程问题了。它涉及到编程过程中的很多理论知识。例如:数据结构和算法的设计、整个程序的总体设计风格、以及即使在集成编程环境下面录入完全部的程序源代码,但是程序必须要经过一系列的不断调试(例如:在可疑的语句处设置断点、单步跟踪等)、编译、链接,直到运行出最终的正确结果。

故你的这个要求只能够依靠自己的刻苦努力编写、以及不断调试、运行程序来完成了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
缘来是我LXZ
高粉答主

2019-03-04 · 缘来缘去终会散,花开花败总归尘。
缘来是我LXZ
采纳数:208 获赞数:186970

向TA提问 私信TA
展开全部
还要mfc人机界面啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
世_炎凉
2019-03-04
知道答主
回答量:1
采纳率:0%
帮助的人:756
展开全部
求求啦还有没有人啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-03-04 · TA获得超过117个赞
知道答主
回答量:700
采纳率:13%
帮助的人:72.2万
展开全部
又不难,自己不会写?
追答
私信
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式