学生成绩管理系统含源码教案资料.docx
《学生成绩管理系统含源码教案资料.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统含源码教案资料.docx(16页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统含源码教案资料
学生成绩管理系统
该系统是用C实现的控制台程序,用文件保存数据。
程序遵循模块化的设计思想,尽量做到高类聚,低耦合的特性,已实现一些基本功能,读者可根据自己的需要进行功能添加或删除,只需另写有关函数即可。
由于笔者水平有限,读者可自行优化。
本程序紧供大家学习参考。
复制代码用vc6.0或devc即可直接编译运行,该程序主要函数:
voidmenu();//主菜单函数用于输出主菜单界面
voidintroduce();//系统使用介绍函数
voidinput(Link);//输入函数用于输入一条记录
voiddel(Link);//删除记录函数
voidsearch(Link);//查询函数
voidmodify(Link);//修改函数
voidinsert(Link);//插入函数
voidtongji(Link);//统计函数
voidsort(Link);//排序函数
voiddisplay(Link);//显示记录函数
voidsave(Link);//保存函数
运行结果:
主界面
选择显示记录功能后
选择排序后
删除记录后
//文件stuscore.h
#include
#include
#include
#defineNULL0
shortsaveflag=0;
structstudent
{
charnum[11];//学号
charname[15];//姓名
shortchgrade;//语文成绩
shortmgrade;//数学成绩
shortegrade;//英语成绩
shorttotal;//总分
floataverage;//平均分
intmingci;//名次
};
typedefstructnode
{
structstudentdata;//数据域
structnode*next;//指针域
}Node,*Link;
//main文件
#include"stuscore.h"
voidmenu();//主菜单函数用于输出主菜单界面
voidintroduce();
voidinput(Link);
voiddel(Link);
voidsearch(Link);
voidmodify(Link);
voidinsert(Link);
voidtongji(Link);
voidsort(Link);
voiddisplay(Link);
voidsave(Link);//保存函数
voidmain()
{
shortchoice=30;
charch;
Linkl;
FILE*fp;
Node*p,*r;
fp=fopen("E:
\\C_count\\studentscore\\stuscore","ab+");
if(!
fp){printf("allocatememoryfilure1!
");exit
(1);}
l=(Node*)malloc(sizeof(Node));
if(l==NULL){printf("allocatememoryfilure2!
");exit
(1);}
l->next=NULL;
r=l;
while(!
feof(fp))
{
p=(Link)malloc(sizeof(Node));
if(!
p){printf("allocatememoryfilure3!
");exit
(1);}
if(fread(p,sizeof(Node),1,fp)==1)
{
r->next=p;
p->next=NULL;
r=p;
}
}
fclose(fp);
do{
menu();
printf("Pleaseenteryourchoice(0-9):
");
scanf("%d",&choice);
if(choice==9)
{
if(saveflag==1)
{
printf("whethersavethemodifiedrecordtofile?
(y/n):
");getchar();
scanf("%c",&ch);
if(ch=='Y'||ch=='y')save(l);
}
printf("thankyouforuseness!
\n");
break;
}
switch(choice)
{
case0:
introduce();break;//调用系统使用说明函数
case1:
input(l);break;//调用输入函数
case2:
del(l);break;//调用删除函数
case3:
search(l);break;//调用查询函数
case4:
modify(l);break;//调用修改函数
case5:
insert(l);break;//调用插入函数
case6:
tongji(l);break;//调用统计函数
case7:
sort(l);break;//调用排序函数
case8:
display(l);break;//调用输出函数
default:
printf("error!
\n\n\n");
}
}while
(1);
}
voidmenu()
{
printf("===========================欢迎使用学生成绩管理系统============================\n");
printf("0systemintroduce1inputrecord\n");
printf("2deleterecord3searchrecord\n");
printf("4modiryrecord5insertrecord\n");
printf("6countrecord7sortrecord\n");
printf("8displayrecord9quitsystem\n");
}
voidintroduce()
{
system("cls");
printf("欢迎使用学生成绩管理系统,在功能选择界面您可以输入数字0至9其中任一一个数字进行功能选择。
\n\n\n");
}
voidinput(Linkl)//每次添加一条记录
{
Linkp,r,s;
charnum[11],name[15];
shortchgrade,mgrade,egrade;
p=l;s=l;
while(p->next){p=p->next;}
r=(Node*)malloc(sizeof(Node));
if(!
r){printf("allocatememoryfilure!
");return;}
system("cls");
printf("请输入学号:
");
scanf("%s",num);
if(l->next!
=NULL)
{
while(s->next)
{
s=s->next;
if(!
strcmp((s->data).num,num))
{
printf("输入的学号已经存在,请重新输入:
");
scanf("%s",num);
s=l;
}
}
}
strcpy((r->data).num,num);
printf("请输入姓名:
");scanf("%s",name);strcpy((r->data).name,name);
printf("请输入语文成绩:
");scanf("%d",&chgrade);(r->data).chgrade=chgrade;
printf("请输入数学成绩:
");scanf("%d",&mgrade);(r->data).mgrade=mgrade;
printf("请输入英语成绩:
");scanf("%d",&egrade);(r->data).egrade=egrade;
(r->data).total=chgrade+mgrade+egrade;
(r->data).average=(float)(chgrade+mgrade+egrade)/3;
p->next=r;r->next=NULL;
saveflag=1;
printf("一个学生信息记录已经添加完成\n\n\n");
}
voiddel(Linkl)
{
Linkp,r;
charnum[11];
system("cls");
p=r=l;
printf("请输入要删除记录的学号:
");
scanf("%s",num);
while(p->next)
{
p=p->next;
if(strcmp((p->data).num,num)==0){break;}
r=r->next;
}
if(p!
=r)
{
if((l->next)->next==NULL)l->next=NULL;
if((p->next)==NULL)r->next=NULL;
r->next=p->next;
printf("记录%s%s%d%d%d%d%.2f已删除\n\n\n",(p->data).num,(p->data).name,(p->data).chgrade,(p->data).mgrade,(p->data).egrade,(p->data).total,(p->data).average);
saveflag=1;
}
elseprintf("无此学号的记录\n\n\n");
}
voidsearch(Linkl)
{
Linkp;
charnum[11];
shorttemp=0;
p=l;
system("cls");
printf("请输入要查询记录的学号:
");
scanf("%s",num);
system("cls");
if(p->next==NULL){printf("系统无记录\n\n\n");return;}
while(p->next)
{
p=p->next;
if(!
strcmp((p->data).num,num))
{
printf("学号姓名语文数学英语总分平均分\n");
printf("%s%s%d%d%d%d%.2f\n\n\n",(p->data).num,(p->data).name,(p->data).chgrade,(p->data).mgrade,(p->data).egrade,(p->data).total,(p->data).average);
temp=1;
break;
}
}
if(temp==0)printf("不存在学号为%s的记录\n\n\n",num);
}
voidmodify(Linkl)
{
Linkp,r;
charnum[11],tem[11];
charname[15];
shortchgrade=0;
shortmgrade=0;
shortegrade=0;
shorttemp=0;
p=l;r=l;
system("cls");
printf("请输入要修改记录的学号:
");
scanf("%s",num);strcpy(tem,num);
system("cls");
while(p->next)
{
p=p->next;
if(!
strcmp((p->data).num,num))
{
temp=1;
printf("学号姓名语文数学英语总分平均分\n");
printf("%s%s%d%d%d%d%.2f\n\n\n",(p->data).num,(p->data).name,(p->data).chgrade,(p->data).mgrade,(p->data).egrade,(p->data).total,(p->data).average);
break;
}
}
if(temp==1)
{
printf("请重新输入该记录的学号、姓名、语文、数学、英语成绩\n");
printf("请输入修改后的学号:
");
scanf("%s",num);
while(r->next)
{
r=r->next;
if(!
strcmp((r->data).num,num)){if(strcmp(num,tem)==0)break;r=l;printf("该学号已存在,请重新输入:
");scanf("%s",num);}
}
strcpy((p->data).num,num);
printf("请输入修改后的姓名:
");scanf("%s",name);strcpy((p->data).name,name);
printf("请输入修改后的语文成绩:
");scanf("%d",&chgrade);(p->data).chgrade=chgrade;
printf("请输入修改后的数学成绩:
");scanf("%d",&mgrade);(p->data).mgrade=mgrade;
printf("请输入修改后的英语成绩:
");scanf("%d",&egrade);(p->data).egrade=egrade;
(p->data).total=chgrade+mgrade+egrade;
(p->data).average=(float)(chgrade+mgrade+egrade)/3;
system("cls");
printf("学号为%s的记录已修改为:
\n",tem);
printf("%s%s%d%d%d%d%.2f\n\n\n",(p->data).num,(p->data).name,(p->data).chgrade,(p->data).mgrade,(p->data).egrade,(p->data).total,(p->data).average);
saveflag=1;
}
if(temp==0)printf("不存在学号为%s的记录\n\n\n",num);
}
voidinsert(Linkl)
{
input(l);
}
voidtongji(Linkl)
{
Linkp;
inttcount=0;
intchcount=0;
intmcount=0;
intecount=0;
p=l;
while(p->next)
{
p=p->next;
if((p->data).chgrade<60)chcount++;
if((p->data).mgrade<60)mcount++;
if((p->data).egrade<60)ecount++;
tcount++;
}
system("cls");
printf("系统共有%d条学生成绩记录,其中语文不及格人数为%d人,数学不及格人数为%d人,英语不及格人数为%d人\n\n\n\n",tcount,chcount,mcount,ecount);
}
voidsort(Linkl)
{
Linkr,t1,p,s;
chart[11];
chark[15];
shorttemp;
floatfemp;
p=l;t1=l;
if((p->next)==NULL){printf("系统无记录\n\n\n\n");return;}
p=p->next;
if((p->next)==NULL){display(l);return;}
p=l;
while(p->next)
{
p=p->next;
r=p;s=p;
while(r->next)
{
r=r->next;
if((s->data).total<(r->data).total)
{
temp=(r->data).chgrade;(r->data).chgrade=(s->data).chgrade;(s->data).chgrade=temp;
temp=(r->data).mgrade;(r->data).mgrade=(s->data).mgrade;(s->data).mgrade=temp;
temp=(r->data).egrade;(r->data).egrade=(s->data).egrade;(s->data).egrade=temp;
temp=(r->data).total;(r->data).total=(s->data).total;(s->data).total=temp;
femp=(r->data).average;(r->data).average=(s->data).average;(s->data).average=femp;
strcpy(t,(r->data).num);strcpy((r->data).num,(s->data).num);strcpy((s->data).num,t);
strcpy(k,(r->data).name);strcpy((r->data).name,(s->data).name);strcpy((s->data).name,k);
}
}
t1->next=s;
t1=t1->next;
}
t1->next=NULL;
display(l);
}
voiddisplay(Linkl)
{
Linkp;
2.www。
cer。
net/artide/2003082213089728。
shtml。
三、主要竞争者分析system("cls");
300元以下918%p=l;
if((p->next)==NULL){printf("无记录\n\n\n");return;}
printf("学号姓名语文数学英语总分平均分\n");
新材料手工艺品。
目前,国际上传统的金银、仿金银制成饰品的销售在逐步下降,与此形成鲜明对比的是,数年以前兴起的崇尚然风格、追求个性的自制饰品--即根据自己的创意将各种材质的饰珠,用皮、布、金属等线材串出的品,正在各国的女性中大行其道。
while((p->next)!
=NULL){p=p->next;printf("%s%s%d%d%d%d%.2f\n",(p->data).num,(p->data).name,(p->data).chgrade,(p->data).mgrade,(p->data).egrade,(p->data).total,(p->data).average);}
printf("\n\n\n");
}
voidsave(Linkl)
2、价格“适中化”{
Linkp;
FILE*fp;
大学生对手工艺制作兴趣的调研
300元以下□300~400元□400~500□500元以上□fp=fopen("E:
\\C_count\\studentscore\\stuscore","wb");
if(!
fp){printf("cannotopenfile!
\n");return;}
据调查统计在对大学生进行店铺经营风格所考虑的因素问题调查中,发现有50%人选择了价格便宜些,有28%人选择服务热情些,有30%人选择店面装潢有个性,只有14%人选择新颖多样。
如图(1-5)所示system("cls");
§8-4情境因素与消费者行为2004年3月20日p=l;
现在是个飞速发展的时代,与时俱进的大学生当然也不会闲着,在装扮上也不俱一格,那么对作为必备道具的饰品多样性的要求也就可想而知了。
while(p->next)
{
p=p->next;
if(fwrite(p,sizeof(Node),1,fp)!
=1){printf("filewirteerror!
\n");return;}
}
}