求C语言大学模拟管理系统代码
1、问题描述:为了简化设计,假设大学中只有3种人:教师、学生和在职学生,且只实现信息的输入和显示,不涉及其他功能。其中:教师信息包括:身份证号、姓名、职称、所在系、工资;...
1、问题描述:
为了简化设计,假设大学中只有3种人:教师、学生和在职学生,且只实现信息的输入和显示,不涉及其他功能。其中:
教师信息包括:身份证号、姓名、职称、所在系、工资;
学生信息:身份证号、学号、姓名、专业、入学时间;
在职学生:身份证号、学号、姓名、专业、入学时间、职称、所在系、工资;
2、功能要求:
(1)教师信息的输入、输出、保存
(2)学生信息的输入、输出、保存;
(3)在职学生信息的输入、输出、保存。
3、问题的解决方案:
(1)步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
(2)完成最低要求:完成全部功能的系统。
(3)进一步要求:对数据的合法性进行检查,提示。 展开
为了简化设计,假设大学中只有3种人:教师、学生和在职学生,且只实现信息的输入和显示,不涉及其他功能。其中:
教师信息包括:身份证号、姓名、职称、所在系、工资;
学生信息:身份证号、学号、姓名、专业、入学时间;
在职学生:身份证号、学号、姓名、专业、入学时间、职称、所在系、工资;
2、功能要求:
(1)教师信息的输入、输出、保存
(2)学生信息的输入、输出、保存;
(3)在职学生信息的输入、输出、保存。
3、问题的解决方案:
(1)步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
(2)完成最低要求:完成全部功能的系统。
(3)进一步要求:对数据的合法性进行检查,提示。 展开
5个回答
展开全部
输入验证我没写,你要自己添加。
输入那里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 广告
2024-07-22 广告
APQP管理软件是上海闳怀信息科技有限公司专为企业开发的一款质量管理工具。该软件旨在协助企业实现产品质量计划与控制的全流程管理,覆盖从产品策划、设计开发、过程确认到生产反馈等多个环节。通过APQP管理软件,企业能够更有效地进行质量管控,降低...
点击进入详情页
本回答由上海闳怀提供
展开全部
你的这个要求实在是太高了。不会有人满足你的要求的。因为该问题早就已经不仅仅是一个简单的 C 语言编程问题了。它涉及到编程过程中的很多理论知识。例如:数据结构和算法的设计、整个程序的总体设计风格、以及即使在集成编程环境下面录入完全部的程序源代码,但是程序必须要经过一系列的不断调试(例如:在可疑的语句处设置断点、单步跟踪等)、编译、链接,直到运行出最终的正确结果。
故你的这个要求只能够依靠自己的刻苦努力编写、以及不断调试、运行程序来完成了。
故你的这个要求只能够依靠自己的刻苦努力编写、以及不断调试、运行程序来完成了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还要mfc人机界面啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
又不难,自己不会写?
追答
私信
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询