学生成绩管理系统课程设计报告.docx
《学生成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
![学生成绩管理系统课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-12/30/65513f92-76f2-423d-bf92-10abc306923b/65513f92-76f2-423d-bf92-10abc306923b1.gif)
学生成绩管理系统课程设计报告
软件设计基础
课程设计报告
班级:
网络工程08-X班
姓名:
XXX
学号:
082********
2009年07月03日
目录
1课程设计的目的……………………………………………………1
2课程设计的时间……………………………………………………1
3课程设计的内容……………………………………………………1
3.1基本要求题目…………………………………………………1
3.1.1题目名称及要求……………………………………………1
3.1.2程序…………………………………………………………1
3.1.3执行结果……………………………………………………2
3.2综合训练………………………………………………………2
3.2.1设计题目……………………………………………………2
3.2.2设计要求……………………………………………………2
3.2.3系统各模块(函数)组成…………………………………3
3.2.4流程图………………………………………………………3
3.2.5各变量的定义和作用……………………………………11
4课程设计遇到的问题及解决过程………………………………11
5课程设计心得体会………………………………………………11
6参考文献…………………………………………………………11
7附录………………………………………………………………12
1课程设计的目的
通过C语言课程设计的实际锻炼,进一步深刻学习C语言的精髓,掌握C语言的基本编程方法。
通过对程序的编写,锻炼自己的动手能力和解决问题的能力,能够体会到发现问题、解决问题的过程的幸苦。
通过本次的课程设计,更深一步磨练自己克服困难的意志,体会C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高的特点,从而培养自己程序汇编语言的思想,深刻理解结构化程序设计方法以及模块化设计的思想。
课程设计目的的基本要求:
1通过课程设计,进一步熟悉掌握以下知识:
数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针等。
2通过课程设计,达到系统理解、综合运用课程知识的学习目标。
3通过课程设计,学会用C语言程序解决实际问题的方法。
2课程设计时间
6月22日——7月3日
3课程设计内容
3.1基本要求题目
3.1.1题目名称及要求
请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
(数组维数用宏定义)
3.1.2程序
运行程序环境TurboC++6.0
#include"stdio.h"
#defineM4
#defineN5
voidmain()
{
intfun(inta[M][N]);
intnum[M][N]={{7,8,9,4,5},{4,5,6,3,1},{4,5,6,3,2},{7,9,6,5,2}};
intb;
b=fun(num);
printf("数组的外围元素之和是\n%d\n",b);
}
intfun(inta[M][N])
{
inti,j,sum=0;
for(i=0;ifor(j=0;j{
if(i==0||j==0||i==M-1||j==N-1)
sum=sum+a[i][j];
}
return(sum);
}
3.1.3执行结果
通过宏定义,已经定义数组维数,并在主函数给定数组。
程序在TurboC++6.0环境下运行结果为:
数组的外围元素之和是:
73
3.2综合训练
3.2.1设计题目
学生成绩管理(结构体数组、函数、指针、算法及流程结构等的综合应用)程序说明:
有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统
3.2.2设计要求
学生成绩管理系统
1、成绩录入
2、成绩查询
3、成绩统计
4、退 出
(1)主菜单
(2)各菜单项功能
1.成绩录入:
输入学生的学号、姓名及三门课的成绩;
2.成绩查询:
按学号查询学生成绩。
查询不及格学生的成绩。
3.成绩统计:
计算学生的平均分;
根据学生的平均分高低,对学生的数据进行排序后输出;
对学生单科成绩排序,输出学生姓名与该科成绩;
4.退出系统:
退出整个系统(即主菜单)。
3.2.3系统各模块(函数)组成
系统通过宏定义,定义了全局变量,即学生人数,学科门数,以及定义了数组,以供输入学生学号的取用。
本系统通过主函数main,调用主菜单,通过主菜单的选择语句,继续调用成绩录入函数、成绩查询函数、成绩统计函数,执行完各个函数后,再次返回主菜单函数,通过主菜单,实行退出,以上描述可参见下图,以便观看:
图3-2-3模块关系图
3.2.4流程图
本程序流程图如下:
图3-2-4-1主函数流程图
图3-2-4-2菜单函数流程图
图3-2-4-3成绩录入函数流程图
图3-2-4-4成绩查询函数流程图
图3-2-4-5成绩统计函数流程图
3.2.5各变量的定义和作用
主函数:
定义整型变量,作为以下子函数的使用。
主菜单:
定义了整型变量,用于判断,从而进行选择。
成绩录入函数:
定义整型变量i,j,用于循环,进行多人成绩,姓名的录入。
成绩查询函数:
定义整型变量no和字符变量name,用于对所查学生的姓名以及循环的使用。
成绩统计函数:
定义整型变量i,j,为了能够在对成绩的求平均值以及冒泡法排序实现循环做铺垫;定义了浮点型变量Average,分别表示学生的单科平均成绩和总平均成绩;定义了浮点型temp变量,实现平均值的代替;定义了字符型temp1,temp2,实现对学生名字的代替。
.
4课程设计遇到的问题及解决过程
1.在引用库函数的时候出现警告,通过咨询指导老师以及查阅书籍,通过加入头文件,解决了警告问题。
2.对宏定义知识点认识不足,通过同学讨论、问老师,对宏定义有了进一步了解,掌握了宏定义的应用方法,实现了在程序中正确应用宏定义的方法。
3.起初无法实现对调用子函数后返回主菜单的方法,通过网上学习,用getch()解决了这类问题。
4.运行程序过程中,无法对调用后的清屏工作进行处理,通过查找书籍,运用“cls”解决了此类问题。
5课程设计心得体会
通过本次课程设计,锻炼了自己的意志,在探索中发现问题,在实践中解决问题,并在思考中完善问题。
这次课程设计,让我真正的了解了C语言的思想所在,也让我感受到了程序汇编语言的魅力,知道了它简单的一面和它难的一面。
既看见了探索的重要,也懂得了团队精神的可贵。
通过这次实际的操作,也让我看到了我自身的不足之处,深知自己的水平的浅显,了解了C语言,以及科学的严谨,看见了科学的伟大,并且树立了对科学的探索目标。
这次课程设计也同样让自己有了对自己本专业深层次的认识,并对自己以后的专业课的学习有了新的目标,对自己的以后的学习规划有了更进一步的想法。
6参考文献
[1]谭浩强著.C程序设计(第三版).北京:
清华大学出版社,2005
7附录:
+++++++++++++++++++++++++++++++++++++++++
fun函数源程序详细信息
+++++++++++++++++++++++++++++++++++++++++
#include"stdio.h"
#defineM4
#defineN5
voidmain()
{
intfun(inta[M][N]);
intnum[M][N]={{7,8,9,4,5},{4,5,6,3,1},{4,5,6,3,2},{7,9,6,5,2}};
intb;
b=fun(num);
printf("数组的外围元素之和是\n%d\n",b);
}
intfun(inta[M][N])
{
inti,j,sum=0;
for(i=0;ifor(j=0;j{
if(i==0||j==0||i==M-1||j==N-1)
sum=sum+a[i][j];
}
return(sum);
}
+++++++++++++++++++++++++++++++++++++
综合训练源程序详细信息
+++++++++++++++++++++++++++++++++++++
#include
#include
#include
#defineN3/*学生人数*/
#defineM3/*课程门数*/
voidinput();
voiddisplay();
voidsearch();
voidstatistics();
voidmenu();
charname[50][50];
intsnum[10];
floatcourses[N][M];
voidmain()/*主函数*/
{
inti=0;
intj=0;
while
(1)
{system("cls");/*清屏*/
menu();
}
}
voidmenu()/*菜单*/
{
intnum=0;
intn=0;
printf("++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+学生成绩管理系统+\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+1.成绩录入+\n");
printf("+2.成绩查询+\n");
printf("+3.成绩统计+\n");
printf("+4.退出+\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("请选择(选项数字1-4):
");
scanf("%d",&num);
switch(num)
{
case1:
system("cls");
input();
break;
case2:
system("cls");
printf("请输入要查询的学生号:
");
scanf("%d",&n);
search(n);
break;
case3:
system("cls");
statistics();
break;
case4:
exit
(1);
default:
break;
}
}
voidinput()/*成绩录入*/
{
inti=0;
intj=0;
for(i=0;i{
printf("请输入学生号:
");
scanf("%d",snum);
getch();
printf("请输入学生姓名:
");
getchar();
scanf("%s",&name[i]);
for(j=0;j{
printf("第%d门成绩的分数为:
",j+1);
scanf("%f",&courses[i][j]);
}
printf("\n\n");
}
printf("\n");
printf("**********************************\n");
printf("*已输入完毕,按任意键返回主选单!
*\n");
printf("**********************************\n");
getch();
}
voidsearch(intno)/*成绩查询函数*/
{
inti=0;
printf("您选择了查看学生%d号的成绩:
",no);
printf("姓名是:
");
puts(name[no-1]);
for(i=0;i{
printf("%0.2f",courses[no-1][i]);
}
printf("\n");
printf("**********************************\n");
printf("*按任意键返回主选单!
*\n");
printf("**********************************\n");
getch();
}
voidstatistics()/*成绩统计函数*/
{
floatcAverage[M];/*每门课程平均分*/
floatsAverage[N];/*每个学生平均分*/
floattemp=0;
chartemp1=0;
chartemp2=0;
inti=0;
intj=0;
/*算平均分*/
printf("单科课程平均分为:
");/*单科课程平均分*/
for(i=0;i{
for(j=0;j{
temp=temp+courses[j][i];
}
cAverage[i]=temp/M;
printf("%0.2f\t",cAverage[i]);
temp=0;
temp1=0;
temp2=0;
}
temp=0;
printf("\n学生成绩平均分为:
\n");
for(j=0;j{
for(i=0;i{
temp=temp+courses[j][i];
}
sAverage[j]=temp/N;
printf("%0.2f\t",sAverage[j]);
puts(name[j]);
temp=0;
}
/*排序(冒泡法)*/
for(i=0;ifor(j=0;jif(cAverage[j]{
temp=cAverage[j];
cAverage[j]=cAverage[j+1];
cAverage[j+1]=temp;
strcpy(temp1,name[j]);
strcpy(name[j][j],name[j+1][j+1]);
strcpy(name[j+1][j+1],temp1);
}
printf("\n单科课程的前三名:
");
for(i=0;i<3;i++)
{
printf("\n第%d名:
%0.2f姓名:
",i+1,cAverage[i]);
puts(name[i]);
}
temp=0;
for(j=0;jfor(i=0;iif(sAverage[i]{
temp=sAverage[i];
sAverage[i]=sAverage[i+1];
sAverage[i+1]=temp;
strcpy(temp2,name[i][i]);
strcpy(name[i][i],name[i+1][i+1]);
strcpy(name[i+1][i+1],temp2);
}
printf("\n学生总成绩前三名:
");
for(i=0;i<3;i++)
{
printf("\n第%d名:
%0.2f姓名:
",i+1,sAverage[i]);
puts(name[i]);
}
printf("\n");
printf("**********************************\n");
printf("*按任意键返回主选单!
*\n");
printf("**********************************\n");
getch();
}