嵌入式培训班级成绩管理系统.docx
- 文档编号:4301274
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:15
- 大小:17.58KB
嵌入式培训班级成绩管理系统.docx
《嵌入式培训班级成绩管理系统.docx》由会员分享,可在线阅读,更多相关《嵌入式培训班级成绩管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
嵌入式培训班级成绩管理系统
设计课题一:
班级成绩管理系统
顺序表方式程序:
#include
#include
#include
//定义一个抽象类型datatype,它可以代表不同的具体的类型
structstudent{
intsno[10];
charname[10];
floatscore[4];
};
typedefstructstudentdatatype;
#defineSIZE10
//顺序表结构定义
structseqlist{
datatypedata[SIZE];
intlast;//表示数组中最后一个数据的下标
};
externstructseqlist*seqlist_init(void);
externboolseqlist_insert(datatypetmp,structseqlist*l);
externboolseqlist_del(datatypetmp,structseqlist*l);
externboolseqlist_isempty(structseqlist*l);
externvoidseqlist_show(structseqlist*l);
externintseqlist_search(intkey,structseqlist*l);
externvoidseqlist_sort(structseqlist*l);
//1、顺序表的初始化seqlist*seqlist_init
#include"1_seqlist.h"
structseqlist*seqlist_init(void)
{
structseqlist*p;
//用malloc在堆中申请一块顺序表的空间
p=(structseqlist*)malloc(sizeof(structseqlist));
if(p==NULL){//malloc申请空间失败
printf("mallocfailed!
\n");
exit(-1);//结束程序,在程序的任何位置都可以调用该函数结束程序
}
p->last=-1;
returnp;
}
//2、顺序表的插入seqlist_insert
//#include"1_seqlist.h"
boolseqlist_insert(datatypetmp,structseqlist*l)
{
if(l->last==SIZE-1){//顺序表满了
printf("seqlistisfull!
\n");
returnfalse;
}else{
//l->last=l->last+1;
l->last++;
l->data[l->last]=tmp;
returntrue;
}
}
//3、顺序表的删除seqlist_del
//#include"1_seqlist.h"
boolseqlist_del(datatypetmp,structseqlist*l)
{
inti,j;
if(seqlist_isempty(l))
returnfalse;
i=seqlist_search(tmp.sno,l);
if(i==-1){
printf("您要删除的数据不存在!
\n");
returnfalse;
}else{//删除第i个位置的数据
for(j=i;j
l->data[j]=l->data[j+1];
l->last--;
returntrue;
}
}
//4、判断顺序表是否为空seqlist_isempty
//#include"1_seqlist.h"
boolseqlist_isempty(structseqlist*l)
{
if(-1==l->last)
returntrue;
else
returnfalse;
}
//5、预览顺序表中的每一条数据seqlist_show
//#include"1_seqlist.h"
voidseqlist_show(structseqlist*l)
{
inti;
for(i=0;i<=l->last;i++)
printf("%d%s%f\n",l->data[i].sno,l->data[i].name,l->data[i].score);
}
//在顺序表中查找一条记录,如果存在则返回下标,如果不存在,则返回-1seqlist_search
intseqlist_search(intkey,structseqlist*l)
{
inti,j;
if(seqlist_isempty(l))
return-1;
else{
for(i=0;i<=l->last;i++){//寻找要删除的数据
if(key==l->data[i].sno)
returni;
else
continue;
}
return-1;
}
}
//按照学号排序seqlist_sort
//#include"1_seqlist.h"
voidseqlist_sort(structseqlist*l)
{
inti,j;
structstudenttmp;
for(i=0;i
for(j=0;j
if(l->data[j].score
//if(l->data[j].sno>l->data[j+1].sno){//根据学号排序
tmp=l->data[j];
l->data[j]=l->data[j+1];
l->data[j+1]=tmp;
}
}
//menu1
//#include"1_seqlist.h"
voidmenu1(void)
{
printf("**********************\n");
printf("**班级成绩管理系统**\n");
printf("**a、成绩录入**\n");
printf("**b、成绩显示**\n");
printf("**c、成绩保存**\n");
printf("**d、成绩排序**\n");
printf("**e、成绩修改**\n");
printf("**f、成绩统计**\n");
printf("**g、退出系统**\n");
printf("**********************\n");
}
//menu2
//#include"1_seqlist.h"
voidmenu2(void)
{
printf("*************************\n");
printf("**1.每门课程成绩最高的学生的基本信息**\n");
printf("**2.每门课程的平均成绩**\n");
printf("**3.超过某门课程平均成绩的学生人数**\n");
printf("*************************\n");
}
voidSave(structseqlist*l,intn)//学生基本信息保存
{
FILE*fp;
fp=fopen("~/五邑/student.txt","w+");
if(fp==NULL)
{
printf("文件不存在!
\n");
exit(0);
}
//#include"1_seqlist.h"
intmain(void)
{
structseqlist*l;
datatypedata;
charch;
l=seqlist_init();
while
(1)
{
ccc:
menu1();
printf("请输入你的选择:
\n");
scanf("%c",&bb);
cho=bb;
if((cho=='a')||(cho=='A'))
{
printf("成绩录入:
");
printf("请输入学号姓名数学语文英语政治\n");
scanf("%d%s%f%f%f%f",&data.sno,&data.name,&data.score[0],&data.score[1],&data.score[2],&data.score[3])
seqlist_insert(data,l);//将数据存储在顺序表中
printf("是否继续(Y/N)?
");
while(getchar()!
='\n');
scanf("%c",&ch);
if((ch=='N')||(ch=='n'))
break;
elseif((ch=='Y')||(ch=='y'))
continue;
else{
printf("选择错误!
\n");
exit(-1);
}
}
elseif((cho=='b')||(cho=='B'))
{
printf("成绩显示:
\n");
seqlist_show(l);
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='c')||(cho=='C'))
{
printf("成绩保存:
\n");
Save(l,SIZE);
printf("成绩已保存\n");
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='d')||(cho=='D'))
{
printf("成绩排序:
\n");
seqlist_sort(l);
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='e')||(cho=='E'))
{
printf("成绩修改:
");
scanf("%d%s%f%f%f%f",&data.sno,&data.name,&data.score[0],&data.score[1],&data.score[2],&data.score[3]);
intseqlist_search(data,l);
boolseqlist_insert(data,l);
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='f')||(cho=='F'))
{
intcv;
printf("成绩统计:
\n");
menu2();
printf("请输入你的选择:
\n");
scanf("%d",&cv);
switch(cv)
{
case1:
printf("显示每门课程成绩最高的学生的基本信息:
\n");
seqlist_show(l);break;
case2:
printf("显示每门课程的平均成绩:
\n");
seqlist_show(l);break;
case3:
printf("显示超过某门课程平均成绩的学生人数\n");
seqlist_show(l);break;
default:
printf("选择错误!
请重新选择!
\n");gotoccc;
}
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='g')||(cho=='G'))
{
printf("欢迎使用班级成绩管理系统,Bye-bye!
!
\n");
return0;
}
else{printf("选择错误!
请重新选择!
\n");gotoccc;}
}
return0;
}
单向链表程序:
#include
#include
#include
structstudent{
intsno[10];
charname[10];
floatscore[4];
};
typedefstructstudentdatatype;
structnode{
datatypedata;
structnode*next;
};
structnode*linklist_init(void);
boollinklist_insert(datatypedata,structnode*h);
boollinklist_del(datatypedata,structnode*h);
boollinklist_isempty(structnode*h);
voidlinklist_show(structnode*h);
structnode*linklist_init(void)
{
structnode*p;
p=(structnode*)malloc(sizeof(structnode));
if(p==NULL){
printf("mallocfailed!
\n");
exit(-1);
}
p->next=NULL;
returnp;
}
boollinklist_insert(datatypedata,structnode*h)
{
structnode*new;
new=(structnode*)malloc(sizeof(structnode));
if(new==NULL){
printf("mallocfailed!
\n");
returnfalse;
}
new->data=data;
new->next=h->next;
h->next=new;
returntrue;
}
boollinklist_del(datatypedata,structnode*h)
{
structnode*p,*tmp;
if(linklist_isempty(h))
returnfalse;//链表为空,返回假
for(p=h;p->next!
=NULL;p=p->next){
if(p->next->data.num==data.num){
tmp=p->next;
p->next=tmp->next;
free(tmp);
returntrue;//数据存在,成功删除,返回真
}}
returnfalse;//要删除的数据不存在,则返回假
}
boollinklist_isempty(structnode*h)
{
if(h->next==NULL)
returntrue;
else
returnfalse;
}
voidlinklist_show(structnode*h)
{
structnode*p=h->next;
while(p!
=NULL){
printf(“%d%s%f%f%f%f",p->data.sno,p->data.name,p->data.score[0],p->data.score[1],p->data.score[2],p->data.score[3]");
p=p->next;
}
}
voidmenu1(void)
{
printf("**********************\n");
printf("**班级成绩管理系统**\n");
printf("**a、成绩录入**\n");
printf("**b、成绩显示**\n");
printf("**c、成绩保存**\n");
printf("**d、成绩排序**\n");
printf("**e、成绩修改**\n");
printf("**f、成绩统计**\n");
printf("**g、退出系统**\n");
printf("**********************\n");
}
voidmenu2(void)
{
printf("*************************\n");
printf("**1.每门课程成绩最高的学生的基本信息**\n");
printf("**2.每门课程的平均成绩**\n");
printf("**3.超过某门课程平均成绩的学生人数**\n");
printf("*************************\n");
}
#include"linklist.h"
intmain(void)
{
structnode*h;
datatypedata;
charch;
h=linklist_init();
while
(1)
{
ccc:
menu1();
printf("请输入你的选择:
\n");
scanf("%c",&bb);
cho=bb;
if((cho=='a')||(cho=='A'))
{
printf("成绩录入:
");
printf("请输入学号姓名数学语文英语政治\n");
scanf("%d%s%f%f%f%f",&data.sno,&data.name,&data.score[0],&data.score[1],&data.score[2],&data.score[3])
seqlist_insert(data,l);//将数据存储在顺序表中
printf("是否继续(Y/N)?
");
while(getchar()!
='\n');
scanf("%c",&ch);
if((ch=='N')||(ch=='n'))
break;
elseif((ch=='Y')||(ch=='y'))
continue;
else{
printf("选择错误!
\n");
exit(-1);
}
}
elseif((cho=='b')||(cho=='B'))
{
printf("成绩显示:
\n");
seqlist_show(l);
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='c')||(cho=='C'))
{
printf("成绩保存:
\n");
Save(l,SIZE);
printf("成绩已保存\n");
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='d')||(cho=='D'))
{
printf("成绩排序:
\n");
seqlist_sort(l);
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='e')||(cho=='E'))
{
printf("成绩修改:
");
scanf("%d%s%f%f%f%f",&data.sno,&data.name,&data.score[0],&data.score[1],&data.score[2],&data.score[3]);
intseqlist_search(data,l);
boolseqlist_insert(data,l);
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='f')||(cho=='F'))
{
intcv;
printf("成绩统计:
\n");
menu2();
printf("请输入你的选择:
\n");
scanf("%d",&cv);
switch(cv)
{
case1:
printf("显示每门课程成绩最高的学生的基本信息:
\n");
seqlist_show(l);break;
case2:
printf("显示每门课程的平均成绩:
\n");
seqlist_show(l);break;
case3:
printf("显示超过某门课程平均成绩的学生人数\n");
seqlist_show(l);break;
default:
printf("选择错误!
请重新选择!
\n");gotoccc;
}
while(getchar()!
='\n');
gotoccc;
}
elseif((cho=='g')||(cho=='G'))
{
printf("欢迎使用班级成绩管理系统,Bye-bye!
!
\n");return0;
}
else{printf("选择错误!
\n");gotoccc;}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 培训 班级 成绩管理系统