问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)

发布网友 发布时间:2022-12-17 07:21

我来回答

1个回答

热心网友 时间:2023-10-03 03:08

/*接上一楼*/
struct
Student
*create()
/*create函数定义,此函数实现创建单向动态链表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,链表的头指针;*p1,*p2,中间指针变量*/
puts("\n现在请输入学院名:");
scanf("%s",college);
puts("\n年级:");
scanf("%s",grade);
puts("\n专业和班级:");
scanf("%s",classname);
puts("\n下面请按提示依次输入数据:\n(如果要结束输入,请输入学号0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("输入第一个学生的学号:");
scanf("%ld",&p1->num);
puts("输入此学生成绩:\n英语:");
scanf("%f",&p1->score.english);
puts("数学:");
scanf("%f",&p1->score.math);
puts("计算机:");
scanf("%f",&p1->score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1->grade=mark_grade(p1);
for(;p1->num!=0;)
{
len++;
if(len==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("输入下一个学生的学号:");
scanf("%ld",&p1->num);
puts("输入此学生成绩:\n英语:");
scanf("%f",&p1->score.english);
puts("数学:");
scanf("%f",&p1->score.math);
puts("计算机:");
scanf("%f",&p1->score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1->grade=mark_grade(p1);
}
p2->next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函数定义,此函数实现从现有链表中删除一个结点*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,没有任何数据记录。\n");
else
{
for(p1=head;!(del_num==p1->num||p1->next==NULL);p2=p1,p1=p1->next);
if(del_num==p1->num)
{
if(p1==head)head=p1->next;
else
p2->next=p1->next;
printf("学号为%ld学生的数据删除成功。\n",del_num);
--len;
}
else
printf("未找到学号为%ld学生的记录。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函数定义,此函数实现向现有链表中插入一个结点或覆盖相同学号的数据*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0->next=NULL;
puts("数据插入成功。\n");
}
else
{
for(;((*p0).num>(*p1).num)&&(p1->next!=NULL);p2=p1,p1=p1->next);
if((*p0).num==(*p1).num)
{
printf("已经存在一个学号为%ld的学生的数据,要覆盖原有数据吗?\n输入
Y
=覆盖原有数据\n输入其它=保留原有数据\n",p0->num);
FFLUSH;
scanf("%c",&control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0->next=p1->next;}
else
{p2->next=p0;p0->next=p1->next;}
puts("数据已经更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num<(*p1).num)
{
if(p1==head)head=p0;
else
p2->next=p0;
p0->next=p1;
puts("数据插入成功。\n");
}
else
{
p1->next=p0;
p0->next=NULL;
puts("数据插入成功。\n");
}
}
++len;
return
(head);
}
struct
Student
*sort(struct
Student
*head)
/*sort函数定义,此函数实现对链表中的数据按照平均分高低排序*/
{
struct
Student
*p1,*p2;
for(p1=head;p1->next!=NULL;p1=p1->next)
for(p2=p1->next;p2!=NULL;p2=p2->next)
{
if(p1->score.average<p2->score.average)
{
SWAP(p1->num,p2->num);
SWAP(p1->grade,p2->grade);
SWAP(p1->score.english,p2->score.english);
SWAP(p1->score.math,p2->score.math);
SWAP(p1->score.computer,p2->score.computer);
SWAP(p1->score.total,p2->score.total);
SWAP(p1->score.average,p2->score.average);
}
}
return
head;
}
/*接下一楼*/
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
汽车胎扎了个钉子是拔还是不拔? 台式机电源什么牌子好 台式机电源有哪些牌子 金牌 银牌 铜牌电源哪个好 台式机电源等级性能解析 电脑电源推荐-全汉(FSP) 500W银牌(88%)全模组SFX电源 我的妻子背叛了我,我该怎么办, 初一语文复习材料(急急急!!!) 绿色蝈蝈课后题答案七上语文 女人梦见黄鼠狼的七大预兆 怎么知道注塑机螺杆有无卡死现象? 请问为什么在钢之炼金术师fa里,爱德华一开始不用炼金术换 C语言:学生管理程序? 劲牌携主导产品劲酒拓展国际业务 上岸是什么意思网络语 Zhejiang Zhongbao Holding Industry Co.,LTD 地址:浙江新昌省级高新科技区 浙江小型高低温箱哪家好 第四纪冰川时期的动物为什么偏大? 洛天依是谁创造的 洛天依出自哪里 天命贵人是什么意思 什么是天命贵人 快穿之浮生若梦(七十四) 用棱长1dm的小正方体拼成下图的形状,求它的表面积。 我想问一下芒果没熟切开了怎么办 QQ聊天时发链接带页面介绍 例如下面红框内的东西 就是在QQ或者聊天工具发链接的时候自己带出来的页面简介 qq发送链接 怎么显示公司简介 请问一下陌陌号是指什么 急求单链表排序!! 怎样用指针把两个字符串拼接(我自己写的不知道有什么问题) 微信删除了的聊天记录怎么恢复 山的笔顺是什么呀? 水溶肥桃树一亩用多少斤 学生管理程序 学生管理程序c++的 编写一个学生成绩管理程序 急!!!学生信息管理程序 车内监控摄像头一般装在哪个位置? View的动词单词 请教个viewWithTag的问题 如何通过viewWithTag获取当前的表视图 iphone开发中 viewWithTag 什么意思 如何隐藏 UILabel 与 viewWithTag 为什么用viewWithTag的不到cell中的控件 翻译 The view of the house is great 2.a great view with a house 3.a great view with a house in it 刷卡电开水器公司_刷卡电开水器带反渗透厂家 贵州茅台陈年酒53度值钱吗 大航海时代4威力加强版 朋沙科拉接到买木材的任务之后就没码头了 就一个交易所 什么都没有 连码头都没 单机《大航海时代》的问题 大航海4塞拉故乡在哪 大航海时代4威力加强版伍丁的非洲霸主之证的问题 哪款手机游戏软件可以下载古风游戏? 泰拉瑞亚深渊领主是什么