学生成绩管理系统3教学文案Word文件下载.docx
《学生成绩管理系统3教学文案Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统3教学文案Word文件下载.docx(26页珍藏版)》请在冰点文库上搜索。
指针p是否为空
是否
输入学号p->
num
输出p->
num是否为@
内存是否
溢出输入姓名p->
name
停止for(i=0;
i<
3;
i++)
输入输入成绩
返回p->
sum=s;
菜单p->
average=(float)s/3;
主函数:
intmain()
新建函数:
infor*init()
输入函数:
infor*creat()
显示函数:
structinfor*view(structinfor*head)
删除函数:
infor*delete(infor*head)
按名字寻找函数:
voidlookup(infor*head)
保存函数:
voidsave(infor*head)
按总分排序函数:
infor*sort(infor*head)
计算总分和均分函数:
voidzong(structinfor*head)
修改函:
voidchange(structinfor*head)
按学号排序函数:
infor*index(infor*h)
3系统实现
3.1题目一
(源代码)
#include<
stdio.h>
stdlib.h>
#include<
string.h>
#defineN4
structinfor
{
intterm;
//定义学期(1或2)
intno;
//学号
intclas;
//定义班级(1或2班)
charname[9];
//姓名
floatchinese;
//定义四门成绩
floatenglish;
floatmath;
floatcomputer;
structinfor*link;
};
intn=0;
//******************************************************************************
//函数功能:
创建链表,录入学生的相关信息,此函数返回一个指向链表头的指针
structinfor*creat()
structinfor*head=NULL,*p=NULL,*q=NULL;
charc;
fflush(stdin);
printf("
是否要输入信息(y/n):
"
);
scanf("
%c"
&
c);
p=q=(structinfor*)malloc(sizeof(structinfor));
q=head;
while(p!
=NULL&
&
c=='
y'
)
{
n++;
p=(structinfor*)malloc(sizeof(structinfor));
请输入要录入学生信息的学期:
fflush(stdin);
%d"
p->
term);
//学期只能为1或2
while(p->
term!
=1&
=2)
getchar();
printf("
输入错误!
请重新输入:
//若学期不为1或2,则输入有误
scanf("
}
请输入要录入学生成绩信息的班级:
//班级只能为1或2
clas);
clas!
}
请输入该班的学生信息!
\n"
//输入学生信息(包括学号、四门成绩)
请输入学生学号:
no);
请输入学生姓名:
%s"
p->
name);
//输入学生姓名
请输入语文成绩(0-100):
//输入四门成绩
%f"
chinese);
请输入数学成绩(0-100):
math);
请输入英语成绩(0-100):
english);
请输入计算机成绩(0-100):
computer);
if(n==1)//创建新结点
head=p;
else
q->
link=p;
q=p;
是否还要输入信息(y/n):
q->
link=NULL;
//链表结尾
return(head);
//链表返回头指针
}
实现对学生信息的修改
structinfor*p=head;
charch,m;
//定义一个数组,存储学生的姓名
intnum;
if(p==NULL)printf("
出错!
请先输入学生信息!
while
(1)//设置循环控制
\t\t\t请选择要修改的信息!
\t\n"
\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
//输出要修改的信息
\t\t\ta、学号:
\n"
\t\t\tb、姓名:
\t\t\tc、班级:
\t\t\td、成绩:
//清盘
ch);
if(ch=='
a'
{
你要修改的信息是:
学号!
//按姓名修改学号
请输入你要修改的学生姓名:
name);
if(strcmp(name,p->
name)==0)
printf("
请输入该学生新的学号:
//输入新学号
}
elseprintf("
无法查找到该学生!
//找不到信息
elseif(ch=='
b'
)//按学号修改该班级学生的信息
姓名!
请输入你要修改的学生的学号:
num);
if(num==p->
no)//输入学号,判断条件
{
请输入该学生的姓名:
//输入要做修改的学生姓名
}
elseprintf("
}
c'
班级!
//按学号修改班级
no)
请输入该学生的班级:
//输入要做修改的班级
scanf("
//找不到信息
elseif(ch=='
d'
成绩!
//按学号修改成绩
no)//输入学号
请输入该学生新的语文成绩:
请输入该学生新的数学成绩:
//输入新的四门成绩
请输入该学生新的英语成绩:
请输入该学生新的计算机成绩:
无法查找该学生的信息!
p=p->
link;
是否还要继续修改信息(y/n):
//判断,是否还要修改信息,跳出循环
if((m=getchar())=='
n'
)break;
//函数功能:
按照学号查询学生信息
voidcheckno(structinfor*head)
{//按学号查询学生的成绩
structinfor*p;
p=head;
intnum,i=0;
请输入你要查询的学生学号:
if(num==p->
--------------------------------------------------------------------------"
\t学期\t学号\t班别\t姓名\t语文\t数学\t英语\t计算机\t\n"
-------------------------------------------------------------------------\n"
%d\t"
//输出学生的班级
%s\t"
%1f\t"
//输出四门成绩
i=2;
if(i==0)
没找到该学生的信息!
voidcheckclass(structinfor*head)
intbanji,i=0;
=NULL)//按班级查询学生的成绩
请输入你要查询成绩的班级:
banji);
if(banji==p->
clas)
{
请输出%d班所有同学的成绩:
banji);
//输出要查询成绩的班级
//输出查询成绩的学生学号
//输出要查询成绩的学生姓名
i=2;
if(i==0)
没找到学生信息!
//输出错误,找不到信息
voidcheckterm(structinfor*head)//定义按学期查找信息的函数
intxueqi,i=0;
=NULL)//设置循环控制
//按学期查询学生的成绩
请输入你要查询成绩的学期:
xueqi);
if(xueqi==p->
term)
请输出第%d学期所有班级的信息:
//输出姓名
voidnorich(structinfor*head)//定义一个函数,查找不及格的学生
floattoa;
请输入要查询成绩的学生学号:
正在查询该学生的成绩,请稍侯>
>
//查询学生的成绩,输出不及格的科目
while(p!
=NULL)
if(p->
chinese<
60)
该学生的语文不及格!
printf("
i++;
if(p->
math<
60)//输出该学生的不及格科目
该学生的数学不及格!
english<
该学生的英语不及格!
//对各门成绩进行判断
computer<
该学生的计算机不及格!
if(i>
0)
%s同学共有%d门成绩不及格!
\n学号是:
%d\n"
name,i,p->
toa=p->
chinese+p->
math+p->
english+p->
computer;
if(toa<
240)
不及格学生名单为:
%s"
//输出不及格的学生名单
p=p->
voidsearch(structinfor*head)//定义一个查询学生信息的函数,调用各子函数,进行查询
chark,ch;
=NULL)//设置循环控制条件
{//输出查询方式
\t\t\t你要选择何种方式查询成绩!
\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
\t\t\tb、班级:
\t\t\tc、学期:
\t\t\td、不及格的学生:
k);
switch(k)
case'
:
checkno(head);
break;
//调用学号函数
checkclass(head);
checkterm(head);
norich(head);
是否还要继续查询学生的信息(y/n):
if((ch=getchar())=='
//跳出循环,返回主菜单
对学生成绩进行统计,按班级求总分及平均分
voidzong(structinfor*head)//对该班级的学生成绩求总分、平均分
floattoa=0,ave=0;
inti=0;
toa=p->
//输出学生的总分和平均分成绩
ave=toa/N;
第%d个学生的总分为:
%1f!
i+1,toa);
第%d个学生的平均分:
i+1,ave);
已经统计了第%d个学生的成绩!
i+1);
//统计完毕
i++;
//指向下一个结点
voidpaixu(structinfor*head)//对该班级的学生成绩进行排序
inti=0,j;
floata[10],t;
//把结点信息输入到数组,然后排序