学生成绩管理系统课程设计.docx
《学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统课程设计
学生成绩管理系统
课程设计报告
编写人:
组员:
完成日期:
2011-12-22
辅导教师:
批阅日期:
分数:
一、功能描述
此成绩管理系统主要利用指针实现,由如下几个功能模块实现
1.输入模块:
主要完成将学生信息记录存入指针域的工作。
2.查看模块:
浏览已存入的学生信息。
3.排列模块:
主要是将学生信息按学号排序。
4.插入模块:
主要完成插入学生信息的工作。
5.删除模块:
删除部分学生信息。
6.查找模块:
主要完成查找学生信息。
7.输出统计模块:
主要是输出学生的统计信息。
二、功能模块设计
1.主函数执行流程:
通过主函数来调用菜单函数,以此对学生信息进行操作。
voidmain()
{
…
…
}
2.输入模块:
对学生信息进行输入。
voidinput()
{
…
}
3.查看模块:
浏览已存入的学生信息。
voiddisplay()
{
…
}
4.排列模块:
主要是将学生信息按学号排序。
voidSort_by_num()
{
…
}
5.插入模块:
主要完成插入学生信息的工作。
intInsert_a_record()
{
…}
6.删除模块:
删除部分学生信息。
intDelete_a_record()
{
...
}
7.查找模块:
主要完成查找学生信息。
voidQuery_a_record()
{...
}
8.输出统计模块:
主要是输出学生的统计信息。
voidQuery_a_record()
{
...
}
三数据结构设计
1.学生信息结构体
typedefstruct
{
charnum[10];
charname[20];
charsex[2];
intgaoshu;
intyingyu;
intwuli;
intjisuanji;
}Student;
Studentstu[80];
intmenu_select()
{
charc;
do{
system("cls");
system("color2b");
printf("\t\t|---------------------------------------|\n\n");
printf("\t\t|青海大学土木工程学院房建
(1)班|\n\n");
printf("\t\t|组长:
华丽|\n\n");
printf("\t\t|组员:
田丹|\n\n");
printf("\t\t|韩印海马英才|\n\n");
printf("\t\t|---------------------------------------|\n\n");
printf("\t\t************学生成绩管理系统*************\n\n");
printf("\t\t*1.输入记录:
2.查看记录:
*\n\n");
printf("\t\t*3.排列顺序:
4.插入记录:
*\n\n");
printf("\t\t*5.删除记录:
6.查找记录:
*\n\n");
printf("\t\t*7.输出统计:
0.退出系统:
*\n\n");
printf("\t\t*****************************************\n\n");
printf("\t\t请做出选择(0-7):
");
c=getchar();
}
while(c<'0'||c>'7');
return(c-'0');
}
四函数功能描述
1.输入函数input()
intInput(Studentstud[],intn)
{
inti=0;
charsign,x[10];
while(sign!
='n'&&sign!
='N')
{
printf("\t\t\tstudent'snum:
");
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent'sname:
");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent'ssex:
");
scanf("\t\t\t%s",stud[n+i].sex);
printf("\t\t\tstudent'sgaoshu:
");
scanf("\t\t\t%d",&stud[n+i].gaoshu);
printf("\t\t\tstudent'syingyu:
");
scanf("\t\t\t%d",&stud[n+i].yingyu);
printf("\t\t\tstudent'swuli:
");
scanf("\t\t\t%d",&stud[n+i].wuli);
printf("\t\t\tstudent'sjisuanji:
");
scanf("\t\t\t%d",&stud[n+i].jisuanji);
gets(x);
printf("\t\t\tanymorerecords?
(Y/N)");
scanf("\t\t\t%c",&sign);
i++;
}
return(n+i);
}}
2.查看函数:
Display()
voidDisplay(Studentstud[],intn)
{
inti;
printf("\t\t----------------------------------------------------------------\n")printf("\t\t学号姓名性别高数英语物理计算机\n");
printf("\t\t----------------------------------------------------------------\n");
for(i=1;iprintf("\t\t%-10s%-10s%s\t%4d\t%4d\t%4d\t%4d\n",stud[i-1].num,stud[i-1].name,stud[i-1].sex,stud[i-1].gaoshu,stud[i-1].yingyu,stud[i-1].wuli,stud[i-1].jisuanji);
if(i>1&&i%10==0){
printf("\t\t----------------------------------------------------\n");
printf("\t\t");
system("pause");
printf("\t\t----------------------------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
3.排列函数:
Sort_by_num“()
voidSort_by_num(Studentstud[],intn)
{
inti,j,*p,*q,s;
chart[10];
for(i=0;ifor(j=0;jif(strcmp(stud[j].num,stud[j+1].num)>0)
{
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
strcpy(t,stud[j+1].sex);
strcpy(stud[j+1].sex,stud[j].sex);
strcpy(stud[j].sex,t);
p=&stud[j+1].gaoshu;
q=&stud[j].gaoshu;
s=*p;
*p=*q;
*q=s;
p=&stud[j+1].yingyu;
q=&stud[j].yingyu;
s=*p;
*p=*q;
*q=s;
p=&stud[j+1].wuli;
q=&stud[j].wuli;
s=*p;
*p=*q;
*q=s;
p=&stud[j+1].jisuanji;
q=&stud[j].jisuanji;
s=*p;
*p=*q;
*q=s;
}
}
5.插入函数:
Insert_a_record()
intInsert_a_record(Studentstud[],intn)
{
charx[10];
printf("\t\t\tstudent'snum:
");
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent'sname:
");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent'ssex:
");
gets("\t\t\t%s",stud[n].sex);
printf("\t\t\tstudent'sgaoshu:
");
scanf("\t\t\t%d",&stud[n].gaoshu);
printf("\t\t\tstudent'syingyu:
");
scanf("\t\t\t%d",&stud[n].yingyu);
printf("\t\t\tstudent'swuli:
");
scanf("\t\t\t%d",&stud[n].wuli);
printf("\t\t\tstudent'sjisuanji:
");
scanf("\t\t\t%d",&stud[n].jisuanji);
gets(x);
n++;
Sort_by_num(stud,n);
printf("\t\t\tInsertSuccessed!
\n");
return(n);
}
6删除函数:
Delete_a_record()
intDelete_a_record(Studentstud[],intn)
{
chars[20];
inti=0,j;
printf("\t\t\ttellmehis(her)name:
");
scanf("%s",s);
while(strcmp(stud[i].name,s)!
=0&&iif(i==n)
{
printf("\t\t\tnotfind!
\n");
return(n);
}
for(j=i;j{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j].sex,stud[j+1].sex);
stud[j].gaoshu=stud[j+1].gaoshu;
stud[j].yingyu=stud[j+1].yingyu;
stud[j].wuli=stud[j+1].wuli;
stud[j].jisuanji=stud[j+1].jisuanji;
}
printf("\t\t\tDeleteSuccessed!
\n");
return(n-1);
}
7查找函数:
Query_a_record()
voidQuery_a_record(Studentstud[],intn)
{
chars[20];
inti=0;
printf("\t\t\tinputhis(her)name:
");
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!
=0&&iif(i==n)
{
printf("\t\t\tnotfind!
\n");
return;
}
printf("\t\t\this(her)number:
%s\n",stud[i].num);
printf("\t\t\this(her)number:
%s\n",stud[i].sex);
printf("\t\t\this(her)shuxue:
%d\n",stud[i].gaoshu);
printf("\t\t\this(her)yingyu:
%d\n",stud[i].yingyu);
printf("\t\t\this(her)yuwen:
%d\n",stud[i].wuli);
printf("\t\t\this(her)yuwen:
%d\n",stud[i].jisuanji);
}
8输出统计函数Statistic()
voidStatistic(Studentstud[],intn)
{
inti,j=0,k=0;
floataver,sum=0.0;
for(i=0;i{
sum+=stud[i].gaoshu;
if(stud[j].gaoshu>stud[i].gaoshu)j=i;
if(stud[k].gaoshu}
aver=1*sum/n;
printf("\t\t\tthereare%drecords.\n",n);
printf("\t\t\tthelowest高数score:
\n");
printf("\t\t\tnumber:
%sname:
%ssex:
%sscore:
%d\n",stud[j].num,stud[j].name,stud[j].sex,stud[j].gaoshu);
printf("\t\t\tthehignest高数score:
\n");
printf("\t\t\tnumber:
%sname:
%ssex:
%sscore:
%d\n",stud[k].num,stud[k].name,stud[k].sex,stud[k].gaoshu);
printf("\t\t\tthe高数averagescoreis%5.2f\n",aver);
}
五程序实现
1.源代码分析
⑴程序预处理
#include
#include
#include
#include
⑵主函数main()
voidmain()
{
…
}
⑶主菜单界面
printf("\t\t|---------------------------------------|\n\n");
printf("\t\t|青海大学土木工程学院房建
(1)班|\n\n");
printf("\t\t|组长:
华丽|\n\n");
printf("\t\t|组员:
田丹冶成虎|\n\n");
printf("\t\t|韩应海马英才|\n\n");
printf("\t\t|---------------------------------------|\n\n");
printf("\t\t************学生成绩管理系统*************\n\n");
printf("\t\t*1.输入记录:
2.查看记录:
*\n\n");
printf("\t\t*3.排列顺序:
4.插入记录:
*\n\n");
printf("\t\t*5.删除记录:
6.查找记录:
*\n\n");
printf("\t\t*7.输出统计:
0.退出系统:
*\n\n");
printf("\t\t*****************************************\n\n");
printf("\t\t请做出选择(0-7):
");
c=getchar();
}while(c<'0'||c>'7');
return(c-'0');}
二、运行结果
1.主界面
2.浏览界面
(1)输入并查看界面
(2)、插入并查看界面
(3)、删除并查看界面
(4)、删除界面
(5)、输出统计界面
(6)、退出程序界面
七设计小结
本次课程设计我们五人同心协力,最终写出了这个程序,现将这个程序的优缺点总结如下。
优点:
能够实现输入,查看,排序,插入,统计,删除等功能。
还有就是改变运行屏幕的一贯黑白色,采用绿背景蓝字的模式,显示清晰、环保、美观的特点。
界面布局整齐、干净,让人一目了然,方便查找。
缺点:
浏览界面对不齐,只能实现简单的一些功能,排序只能按学号进行排序,统计只能按单一科目进行,还有就是录入的信息不是很多,这个程序要录入信息时,必须输入要求输入的条数才会终止,半途不可以终止,比较不好,浏览界面的性别后总会有一个英文字母显示。
经过这次课程设计我们学到了很多,我们组成员之间合作很愉快,同时也体验到了这门课确实很难,在修改的时候有时候没改对,反而多了很多错误,让大家不知道如何是好。
以后需要再接再厉。
八任务分配
华丽:
主要负责编写主函数和菜单函数,
田丹:
主要负责删除及查找函数,
冶成虎:
主要负责输出统计函数,
韩应海:
主要负责输入排列函数,
马英才:
主要负责查看及插入函数。