C语言课程设计学生成绩统计设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计2013年11月3 日
设计题目:学生成绩统计
设计条件:掌握C语言的基本知识,能够熟练地应用顺序结构、选择结构、循环结构,能够善于应用结构体数组和对文件的输入输出。
设计容:
【问题描述】
学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人。输入、输出格式自定。
【实现提示】
假设某班有:30人(自定)
考试课程有:高等数学、物理、外语、C语言、德育5门课程。
将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的容,程序的功能主要包括3方面:
①输入成绩到文件中
②输出成绩
③输出不及格学生
④成绩排序
⑤修改记录
⑥删除记录
⑦插入记录等
主函数中对3个功能选择(菜单),调用对应的函数完成。
下达日期:2013年10月
完成日期:2013年11月
目录
一、前言 (4)
二、设计思想 (4)
三、设计过程 (4)
四、程序流程图 (7)
五、程序清单 (8)
六、总结 (8)
附录1.用户文档 (10)
附录2.技术文档 (13)
参考文献 (13)
一、前言
本课程设计提供了一个既动手又动脑,自学,查资料,独立实践的机会。将课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。
本课程设计——学生成绩统计,在日常的教学过程中具有较高的应用价值。
当老师批改完一大批试卷后,需要统计成绩得出相应结果时,“学生成绩统计”就能够发挥其重要作用。设计这个程序,主要用到结构体数组和文件两个知识点,再结合顺序、循环、选择、函数······来实现功能。
二、设计思想
首先编译预处理,输入头文件;再之全局声明;对函数进行定义。再建立一个student结构体,把结构体里面的容写入一个文件中。然后先把主函数main()写好,再把子函数完善好,最后测试、修改,直到达到最终功能和界面美观为止。
三、设计过程
1、根据设计要求做好分析,把主要框架设计罗列出来。考虑到此程序主要有3大方面的容,所以主函数里分为3大模块,模块里面再根据要求执行相应的容。
2、根据主要的框架,确定没有问题后,编写主函数如下:
#include
#include
#include
#define N 3000
int system(const char*string);
struct student //声明结构体类型struct student
{ //以下4行为结构体的成员
char name[20];
float score[5];
float aver;
int cla;
};
void input(struct student stu[]);
void print(struct student stu[]);
void prinot(struct student stu[]);
void list(struct student stu[]);
void changes(struct student stu[]);
void del(struct student stu[]);
void ser(struct student stu[]);
void bian();
void prin();
int M;
FILE*fp; //定义一个指向文件的指针变量fp
struct student stu[4],*p=stu;
void main()
{
char choice,zlq='y';
int over=0;
while(!over) //循环语句
{
if(zlq=='Y'||zlq=='y')
{
printf("***************功能选择****************\n");
printf("1.输入成绩到文件中\n");
printf("2.输出成绩\n");
printf("3.编辑\n");
printf("***************************************\n");
printf("你的选择(1-3):");
do{
scanf("%c",&choice);
}while(choice=='\n');
printf("\n");
switch(choice) //用switch来进行选择
{
case'1':
input(p);break;
case'2':
prin();break;
case'3':
bian();break;
default:
printf("输入错误!\n");
continue;
}
if(!over) //在每次运行完选项后,选择退出还是继续
{
printf("\n\n\n返回主菜单吗?\n(请输入Y或者N,Y代表是,N代表不是.)\n");
scanf("%s",&zlq);