C语言课程设计报告格式2.docx
《C语言课程设计报告格式2.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告格式2.docx(15页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告格式2
《C语言课程设计》报告
题目:
学生成绩管理系统
班级:
动力1341
学号:
1303411122
姓名:
于伟强
指导老师:
黄亮
成绩:
1、课程设计目的和意义
二、总体设计思路(功能模块图)
三、详细设计
四、课程设计总结体会
五、教师评语
一、课程设计目的和意义
一.
课程设计的目的和意义
目的:
1.根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解内容2.通过调试典型例题或习题积累调试程序的经验。
3.通过完成辅导教材中的编程题,逐渐培养学生的编程能力,用计算机解决实际问题的能力。
意义:
1.有助于加深我们对操作系统这门课程的理解,我们的
都是基础理论知识,对于如何用程序语言来描述所学知识还是有一定难度。
通过课程设计,我们可以真正理解其内涵。
2.
有利于我们逻辑思维的锻炼,程序设计能直接有效练的
创新思维、培养分析问题、解决问题能力。
即使是一个简单的程序,依然需要学生有条不理的构思。
3.
有利于培养严谨认真的学习态度,在程序设计过程里,当我们输入程序代码的时候,如果不够认真或细心,法
错误,从而无法得出运行结果。
那么,这个我们反复调试,反复修改的过程,其实也是对我们认真严谨治学的一个锻炼.
二、总体设计思路(功能模块图)
学生信息包括学号,姓名,性别,年龄,学历,工资,住址,电话等。
是设计一学生成绩管理系统,使之能提供以下功能:
系统以菜单方式工作
学生信息录入功能(职工信息用文件保存)——输入
学生信息浏览功能——输出
查询和排序功能——算法
按学号查询
按姓名查询等
学生信息删除,修改功能。
补充要求:
1)整个系统均用c语言实现;
2)可以利用数组,指针,链表来实现数据结构设计;
3)系统具有输入,显示,查询,删除,排序,插入,保存,读取等基本功能;
4)系统的各个功能模块都用函数的形式来实现;
5)可以将信息保存在文件中读取出来。
1.程序采用模块化设计,主函数为程序的入口,各模块独立,可分块调试,各模块由主函数控制调用。
主函数的控制功能通过循环执行一个开关语句来实现。
该开关语句的条件值为调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数。
2.应用高级语言程序设计中的基本控制结构,如选择和循环等,并且包含对文件的读、写等基本操作,在软件开发过程中应用了软件工程的基本理论。
因此,系统的设计方法是结构化设计方法,开发手段是C语言。
3.源程序运用多个函数,开头先进行函数声明,然后分别定义、调用各函数。
系统功能模块图
三、详细设计
1、模块功能介绍
1)主菜单
学生成绩管理系统
1.成绩录入
2.成绩查询
3.成绩统计
4.成绩排名
5退出
2)各菜单项功能①成绩录入:
输入学生的学号、姓名及三门课的成绩,查询不及格学生的记录。
③成绩统计:
l计算学生的平均分;2根据学生的平均分高数统2、
利用结构体数组实现学生成绩统计管理的数据结构设计;3、
系统具有增加,查询,排序等基本功能;
4、系统的各个功能模块要求用函数的形式实现
2、程序清单
#include
#include
#include
structstudent
{charnum[10];
charname[20];
charsex[5];
intgrade[5];
floatv;
intsum;
}stu[50];
intk=0;
voidinput();
voiddisplay();
voidlook();
voidchange();
voiddelete();
voidsumandave();
voidpaixu();
voidmain()
{
inta;
do
{
printf("\n\n
***********************************************************
*******\n");
printf("
*");
printf("\t\twelcome
enter
the
student
management
system");printf("\t*");
printf("\n
***********************************************************
*******\n");
printf("*");printf("\t1.Accessstudentinformation");
printf("\t\t\t\t*\n");
printf("*");printf("\t2.lookstudentinformation");
printf("\t\t\t\t*\n");
printf("*");printf("\t3.Changestudentinformation");
printf("\t\t\t\t*\n");
printf("*");printf("\t4.deletestudent
information");printf("\t\t\t\t*\n");
printf("
*");
printf("\t
5.By
sum
Sort
student
information
and
output");printf("\t\t*\n");
printf("*");printf("\t6.exit");
printf("\t\t\t\t\t\t*\n");
printf("
***********************************************************
*******\n");
printf("Enteryouchoice:
");
scanf("%d",&a);
switch(a)
{
case1:
printf("\n");input();break;
case2:
printf("\n");look();break;
case3:
printf("\n");change();break;
case4:
printf("\n");delete();break;
case5:
printf("\n");paixu();break;
case6:
printf("\n");exit(0);break;
default:
printf("\nThechoiceisbetween1to6.\n");
}
}while(a!
=0);
}
voidinput()
{intj;
charch[20];
printf("\nenterstudentinformation:
\n");
do
{printf("\nnum:
");
scanf("%s",stu[k].num);
printf("\nname:
");
scanf("%s",stu[k].name);
printf("\nsex:
");
scanf("%s",stu[k].sex);
for(j=0;j<5;j++)
{printf("\ngrade%d:
",j+1);
scanf("%d",&stu[k].grade[j]);}
k++;
printf("\nif
want
continue
input
student
information(y/n):
");
scanf("%s",ch);
}while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0);
sumandave();
display();
}
voiddisplay()
{inti;
printf("thestudentinformationis:
\n");
for(i=0;i{printf("%-10s%-10s%-5s%2d%2d%2d%2d%2d%5d%5f\n",s
tu[i].num,stu[i].name,stu[i].sex,stu[i].grade[0],stu[i].gra
de[1],stu[i].grade[2],stu[i].grade[3],stu[i].grade[4],stu[i
].sum,stu[i].v);
printf("\n");}
}
voidsumandave()
{inti,j;
for(i=0;i{stu[i].sum=0;
for(j=0;j<5;j++)
stu[i].sum=stu[i].sum+stu[i].grade[j]
stu[i].v=stu[i].sum/5.0;}
}
voidlook()
{{inti;
chara[20];
printf("\nenteryouwantlookstudentnum:
");
scanf("%s",a);
for(i=0;iif(strcmp(stu[i].num,a)==0)
printf("%-10s%-10s%-5s%2d%2d%2d%2d%2d%5d%5f\n",stu
[i].num,stu[i].name,stu[i].sex,stu[i].grade[0],stu[i].grade
[1],stu[i].grade[2],stu[i].grade[3],stu[i].grade[4],stu[i].
sum,stu[i].v);
printf("\nenteryouwantlookstudentname:
");
scanf("%s",a);
for(i=0;iif(strcmp(stu[i].name,a)==0)
printf("%-10s%-10s%-5s%2d%2d%2d%2d%2d%5d%5f\n",stu
[i].num,stu[i].name,stu[i].sex,stu[i].grade[0],stu[i].grade
[1],stu[i].grade[2],stu[i].grade[3],stu[i].grade[4],stu[i].
sum,stu[i].v);}
display();
}
voidchange()
{inti,j;
chara[20],ch[10];
printf("\nenteryouwantchangestudentnum:
");
scanf("%s",a);
for(i=0;i{
if(strcmp(stu[i].num,a)==0)
{printf("\nyousurewantchangestudentnum(y/n):
");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
{
printf("\nnum:
");
scanf("%s",stu[i].num);}
printf("\nyousurewantchangestudentname(y/n):
");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
{
printf("\nname:
");
scanf("%s",stu[i].name);}
printf("\nyousurewantchangestudentsex(y/n):
");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
{
printf("\nsex:
");
scanf("%s",stu[i].sex);}
printf("\nyousurewantchangestudentgrade(y/n):
");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
{for(j=0;j<5;j++)
{printf("\ngrade%d:
",j+1);scanf("%d",&stu[i].grade[j]);}
stu[i].sum=0;
for(j=0;j<5;j++)
stu[i].sum=stu[i].sum+stu[i].grade[j]
stu[i].v=stu[i].sum/5.0;}}
display();
}}
voiddelete()
{inti,j;
charch[10],c[20];
printf("\nyou
sure
want
delete
student
information(y/n):
");
scanf("%s",ch);
if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
{printf("\nenteryouwantdeletenum:
\n");
printf("num:
");
scanf("%s",&c);
for(i=0;iif(strcmp(c,stu[i].num)==0)break;
for(j=i;j<=2;j++)
stu[j]=stu[j+1];
printf("\t\t\tyouhaddelete%s\n",c);
k--;}
display();
}
voidpaixu()
{structstudentT;
inti,j;
for(i=0;i{
for(j=i+1;j{
if(stu[i].sum{
T=stu[i];
stu[i]=stu[j];
stu[j]=T;
}
}}
display();}
3、系统运行结果
四、课程设计总结体会
本程序在刚开始调试时有许多错误,
但在我的努力及同学的帮助下都被一一
克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。
在
刚开始的几次调试中曾经出现过不能运行、不能进行循环输入、不能进行数
据储存、不能输出有效的数据等等问题。
经过我的努力及同学的帮助,这些
问题得到克服,并且使程序的功能也得到了一定的完善。
现在它能进行了数
据输入储存、数据打印等等。
在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学
学到了课本上没有的知识。
从而启发我,要想写好程序,在写好课本知识的
同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学
的知识综合起来应用,力争写出完美的程序。
除此之外,我还得到了一些有
用的教训:
写程序时必须要细心,不能输错一个字符标点,就连花括号的输
入也得注意。
在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能
心急浮躁,否则修改之后还会有新的错误。
五、教师评语
评阅教师:
评阅日期:
2014年6月