学生成绩管理系统C语言课程设计.docx

上传人:b****4 文档编号:5963343 上传时间:2023-05-09 格式:DOCX 页数:24 大小:42.76KB
下载 相关 举报
学生成绩管理系统C语言课程设计.docx_第1页
第1页 / 共24页
学生成绩管理系统C语言课程设计.docx_第2页
第2页 / 共24页
学生成绩管理系统C语言课程设计.docx_第3页
第3页 / 共24页
学生成绩管理系统C语言课程设计.docx_第4页
第4页 / 共24页
学生成绩管理系统C语言课程设计.docx_第5页
第5页 / 共24页
学生成绩管理系统C语言课程设计.docx_第6页
第6页 / 共24页
学生成绩管理系统C语言课程设计.docx_第7页
第7页 / 共24页
学生成绩管理系统C语言课程设计.docx_第8页
第8页 / 共24页
学生成绩管理系统C语言课程设计.docx_第9页
第9页 / 共24页
学生成绩管理系统C语言课程设计.docx_第10页
第10页 / 共24页
学生成绩管理系统C语言课程设计.docx_第11页
第11页 / 共24页
学生成绩管理系统C语言课程设计.docx_第12页
第12页 / 共24页
学生成绩管理系统C语言课程设计.docx_第13页
第13页 / 共24页
学生成绩管理系统C语言课程设计.docx_第14页
第14页 / 共24页
学生成绩管理系统C语言课程设计.docx_第15页
第15页 / 共24页
学生成绩管理系统C语言课程设计.docx_第16页
第16页 / 共24页
学生成绩管理系统C语言课程设计.docx_第17页
第17页 / 共24页
学生成绩管理系统C语言课程设计.docx_第18页
第18页 / 共24页
学生成绩管理系统C语言课程设计.docx_第19页
第19页 / 共24页
学生成绩管理系统C语言课程设计.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生成绩管理系统C语言课程设计.docx

《学生成绩管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言课程设计.docx(24页珍藏版)》请在冰点文库上搜索。

学生成绩管理系统C语言课程设计.docx

学生成绩管理系统C语言课程设计

学生成绩管理系统

 

1.程设计的目的

通过本程序可以训练学生程序设计的基本技能,让学生掌握C程序各种函数的应用。

同时也大大增加了学生的学习兴趣,提高了学生的编程能力。

进一步掌握和利用C语言进行程设计的能力;进一步理解和运用结构化程设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;掌握书写课程设计开发文档的能力.

2.设计方案论证

2.1设计思路

(1)输入学生初始信息模块:

其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu*p1)来实现此操作。

当正确输入存在的学生学号,系统进行判断时,提示存在此学生。

 

(2)查询模块:

可用stu*lookdata(stu*p1) 来实现。

找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。

当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。

(3)插入模块:

可用insert( )函数来实现。

其中通过学号的大小来比较的,并且以此来排序。

当我们输入插入信息时,系统却提示插入不进数据。

(4)学生的信息以及成绩:

通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage()和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

(5)退出系统:

可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

 

3.程序源代码

#include

#include

#include

#include

#include

#include

#include

#include

#definePRINT1textcolor(12);cprintf("\r请按任意键返回主菜单\n\r");textcolor(10);getch();clrscr();break;

intshoudsave=0;

structstudent/*学生信息结构体定义*/

{

charnum[10],name[20],sex[4];

intscore1,score2,score3,totle,ave;

};

typedefstructnode

{

structstudentdata;

structnode*next;

}Node,*L;

voidprint1()

{

cprintf("\r================================================================================");

}

voidprint2()

{

cprintf("\n\r1.输入学生信息在这里你可以按照提示输入学生的学号,姓名,性别及各科成绩.\n");

cprintf("\n\r2.注销学生信息在这里你可以按照学号或姓名将某一名学生的信息从本系统中删除.\n");

cprintf("\n\r3.查询学生信息在这里你可以按照学号或姓名查询某一名学生的信息.\n");

cprintf("\n\r4.修改学生信息在这里你可以按照提示修改某一名学生的学号,姓名,性别及各科成绩.");

cprintf("\n\r5.学生信息排序在这里你可以看到所有学生的成绩成绩.\n");

cprintf("\n\r6.学生信息统计在这里本系统将为你显示所有科目的最高分及最低分所得学生.\n");

cprintf("\n\r7.显示学生信息在这里你可以看到系统中所有学生的信息.\n");

cprintf("\n\r8.保存学生信息在这里你可以将学生你信息保存到内存中.\n");

cprintf("\n\r9.帮助信息在这里你可以获得帮助信息.\n");

cprintf("\n\r0.退出系统在这里选择是否保存后,你可以安全的退出本系统.\n\n\r");

}

voidmenu()

{

cprintf("\n\r\xc9\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcb\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbb");

cprintf("\r\xba学生信息导入\xba学生信息处理\xba");

cprintf("\r\xba____________________________________\xba_________________________________________\xba");

cprintf("\r\xba1-->输入学生信息\xba6-->学生信息统计\xba");

cprintf("\r\xba2-->注销学生信息\xba7-->显示学生信息\xba");

cprintf("\r\xba3-->查询学生信息\xba8-->保存学生信息\xba");

cprintf("\r\xba4-->修改学生信息\xba9-->帮助信息\xba");

cprintf("\r\xba5-->学生信息排序\xba0-->退出系统\xba");

cprintf("\r\xc8\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xca\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbc");

}

voidwrong()

{

cprintf("\n\r输入错误!

请验证后重新输入.\n");

}

voidnotfind()

{

cprintf("\n\r该学生信息不存在!

请验证后重新输入.\n");

}

voidprintc()/*此函数用于输出中文格式*/

{

cprintf("\r学号姓名性别英语成绩数学成绩C语言成绩总分平均分\n");

}

voidprinte(Node*p)/*此函数用于输出英文格式*/

{

cprintf("%-8s%-10s%5s%12d%13d%13d%8d%9d\n\r",p->data.num,p->data.name,p->data.sex,p->data.score3,p->data.score2,p->data.score1,p->data.totle,p->data.ave);

}

Node*Locate(Ll,charfindinfo[],charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/

{

Node*r;

if(strcmp(nameornum,"num")==0)/*按学号查询*/

{

r=l->next;

while(r!

=NULL)

{

if(strcmp(r->data.num,findinfo)==0)

returnr;

r=r->next;

}

}

elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/

{

r=l->next;

while(r!

=NULL)

{

if(strcmp(r->data.name,findinfo)==0)

returnr;

r=r->next;

}

}

return0;

}

voidinput(Ll)/*增加学生*/

{

Node*p,*r,*s;

charnum[10];

r=l;

s=l->next;

while(r->next!

=NULL)

r=r->next;/*将指针置于最末尾*/

while

(1)

{cprintf("\r如果输入完毕,请按任意键返回主菜单\n");

cprintf("\r如果你还想输入,请按y(yes)继续\n\r");

scanf("%s",num);

if(strcmp(num,"y")==0)

{cprintf("请你输入学号:

");

scanf("%s",num);}elsebreak;

while(s)

{

if(strcmp(s->data.num,num)==0)

{

printf("\t学号为'%s'的学生已经存在,若要修改请你选择'4修改'!

\n",num);

print1();

printc();

printe(s);

print1();

printf("\n");

getch();

return;

}

s=s->next;

}

p=(Node*)malloc(sizeof(Node));

strcpy(p->data.num,num);

cprintf("\r请你输入姓名:

");

scanf("%s",p->data.name);

getchar();

cprintf("\r请你输入性别(MORF):

");

scanf("%s",p->data.sex);

getchar();

cprintf("\r请你输入c语言成绩(0-100):

");

scanf("%d",&p->data.score1);

getchar();

cprintf("\r请你输入数学成绩(0-100):

");

scanf("%d",&p->data.score2);

getchar();

cprintf("\r请你输入英语成绩(0-100):

");

scanf("%d",&p->data.score3);

getchar();

p->data.totle=p->data.score3+p->data.score1+p->data.score2;

p->data.ave=p->data.totle/3;/*信息输入已经完成*/

p->next=NULL;

r->next=p;

r=p;shoudsave=1;

}

}

voidquery(Ll)/*查询学生信息*/

{

intselect;

charfindinfo[20];

Node*p;

if(!

l->next)

{

cprintf("\n没有信息可以查询!

\n");

return;

}

cprintf("\n1==>按学号查找\n\r2==>按姓名查找\n\r");

scanf("%d",&select);

if(select==1)/*学号*/

{

cprintf("\r请你输入要查找的学号:

");

scanf("%s",findinfo);

p=Locate(l,findinfo,"num");

if(p)

{

cprintf("查找结果\n\r");

print1();

printc();

printe(p);

print1();

}

else

notfind();

}

elseif(select==2)/*姓名*/

{

cprintf("\r请你输入要查找的姓名:

");

scanf("%s",findinfo);

p=Locate(l,findinfo,"name");

if(p)

{

cprintf("查找结果\n\r");

print1();

printc();

printe(p);

print1();

}

else

notfind();

}

else

wrong();

}

voidDelete(Ll)/*删除学生信息*/

{

intselect;

Node*p,*r;

charfindinfo[20];

if(!

l->next)

{

cprintf("\n没有信息可以删除!

\n");

return;

}

cprintf("\n1==>按学号删除\n\r2==>按姓名删除\n\r");

scanf("%d",&select);

if(select==1)

{

cprintf("\r请你输入要删除的学号:

");

scanf("%s",findinfo);

p=Locate(l,findinfo,"num");

if(p)

{

r=l;

while(r->next!

=p)

r=r->next;

r->next=p->next;

free(p);

cprintf("\n\r该学生已经成功删除!

\n");

shoudsave=1;

}

else

notfind();

}

elseif(select==2)

{

cprintf("\r请你输入要删除的姓名:

");

scanf("%s",findinfo);

p=Locate(l,findinfo,"name");

if(p)

{

r=l;

while(r->next!

=p)

r=r->next;

r->next=p->next;

free(p);

cprintf("\n\r该学生已经成功删除!

\n");

shoudsave=1;

}

else

notfind();

}

elsewrong();

}

 

voidmodify(Ll)/*修改学生信息*/

{

Node*p;

charfindinfo[20];

if(!

l->next)

{

cprintf("\n\r没有信息可以修改!

\n");

return;

}

cprintf("\r请你输入要修改的学生学号:

");

scanf("%s",findinfo);

p=Locate(l,findinfo,"num");

if(p)

{

cprintf("\r请你输入新学号(原来是%s):

",p->data.num);

scanf("%s",p->data.num);

cprintf("\r请你输入新姓名(原来是%s):

",p->data.name);

scanf("%s",p->data.name);

getchar();

cprintf("\r请你输入新性别(原来是%s):

",p->data.sex);

scanf("%s",p->data.sex);

cprintf("\r请你输入新的c语言成绩(原来是%d分):

",p->data.score1);

scanf("%d",&p->data.score1);

getchar();

cprintf("\r请你输入新的数学成绩(原来是%d分):

",p->data.score2);

scanf("%d",&p->data.score2);

getchar();

cprintf("\r请你输入新的英语成绩(原来是%d分):

",p->data.score3);

scanf("%d",&p->data.score3);

p->data.totle=p->data.score3+p->data.score1+p->data.score2;

p->data.ave=p->data.totle/3;

cprintf("\n\r信息修改成功!

\n");

shoudsave=1;

}

else

notfind();

}

voiddisplay(Ll)

{/*显示全部学生信息*/

intcount=0;

Node*p;

p=l->next;

if(!

p)

{

cprintf("\n\r没有信息可以显示!

\n");

return;

}

cprintf("显示结果");

print1();

printc();

while(p)

{if(count%5==0)getch();

printe(p);

p=p->next;

count++;

}

print1();

cprintf("\n");

}

 

voidStatistic(Ll)/*统计学生信息*/

{

Node*pm_max,*pe_max,*pc_max,*pt_max,*pa_max;/*用于指向分数最高的接点*/

Node*pm_min,*pe_min,*pc_min,*pt_min,*pa_min;

Node*r=l->next;

if(!

r)

{

cprintf("\n\r没有信息可以统计!

\n");

return;

}

pm_max=pe_max=pc_max=pt_max=pa_max=pm_min=pe_min=pc_min=pt_min=pa_min=r;

while(r!

=NULL)

{

if(r->data.score1>=pc_max->data.score1)

pc_max=r;

if(r->data.score1<=pc_min->data.score1)

pc_min=r;

if(r->data.score2>=pm_max->data.score2)

pm_max=r;

if(r->data.score2<=pm_min->data.score2)

pm_min=r;

if(r->data.score3>=pe_max->data.score3)

pe_max=r;

if(r->data.score3<=pe_min->data.score3)

pe_min=r;

if(r->data.totle>=pt_max->data.totle)

pt_max=r;

if(r->data.totle<=pt_min->data.totle)

pt_min=r;

if(r->data.ave>=pa_max->data.ave)

pa_max=r;

if(r->data.ave<=pa_min->data.ave)

pa_min=r;

r=r->next;

}

cprintf("====================================统计结果====================================\n");

cprintf("\r总分最高者:

%-16s%d分\n",pt_max->data.name,pt_max->data.totle);

cprintf("\r平均分最高者:

%-16s%d分\n",pa_max->data.name,pa_max->data.ave);

cprintf("\r英语最高者:

%-16s%d分\n",pe_max->data.name,pe_max->data.score3);

cprintf("\r数学最高者:

%-16s%d分\n",pm_max->data.name,pm_max->data.score2);

cprintf("\rc语言最高者:

%-16s%d分\n\r",pc_max->data.name,pc_max->data.score1);

cprintf("\r总分最低者:

%-16s%d分\n",pt_min->data.name,pt_min->data.totle);

cprintf("\r平均分最低者:

%-16s%d分\n",pa_min->data.name,pa_min->data.ave);

cprintf("\r英语最低者:

%-16s%d分\n",pe_min->data.name,pe_min->data.score3);

cprintf("\r数学最低者:

%-16s%d分\n",pm_min->data.name,pm_min->data.score2);

cprintf("\rc语言最低者:

%-16s%d分\n\r",pc_min->data.name,pc_min->data.score1);

print1();

}

 

voidSort(Ll)

{

Lll;

Node*p,*rr,*s;

ll=(L)malloc(sizeof(Node));/*用于做新的连表*/

ll->next=NULL;

if(l->next==NULL)

{

cprintf("\n\r没有信息可以排序!

\n");

return;

}

p=l->next;

while(p)

{

s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!

=NULL&&rr->next->data.totle>=p->data.totle)

rr=rr->next;

if(rr->next==NULL)

rr->next=s;

else

{

s->next=rr->next;

rr->next=s;

}

p=p->next;

}

free(l);

l->next=ll->next;

cprintf("\n\r排序已经完成!

\n");

}

 

voidSave(Ll)/**/

{

FILE*fp;

Node*p;

intflag=1,count=0;

fp=fopen("c:

\\student","wb");

if(fp==NULL)

{

cprintf("\n\r重新打开文件时发生错误!

\n");

exit

(1);

}

p=l->next;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)

{

p=p->next;

count++;

}

else

{

flag=0;

break;

}

}

if(flag)

{

cprintf("\n\r文件保存成功.(有%d条信息已经保存.)\n\r",count);

shoudsave=0;

}

fclose(fp);

}

voidmain()/**/

{

Ll;/*链表*/

FILE*fp;/*文件指针*/

int

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2