当前位置:文档之家› C课程设计报告-正文

C课程设计报告-正文

目录1 前言 (1)2 需求分析 (1)2.1课程设计目的 (1)2.2 课程设计任务 (1)2.3 设计环境 (1)2.4 开发语言 (1)3 分析和设计 (1)3.1 模块设计 (1)3.2 系统流程图 (3)3.3 主要模块的流程图 (5)4 具体代码实现 (7)5 课程设计总结 (11)5.1 程序运行结果 / 预期运行结果 (11)5.2 课程设计体会 (12)参考文献 (12)致谢 (13)1 前言编写一个程序来处理学生成绩管理。

通过一个结构体数组来存放输入的每一位学生的信息(包括姓名、学号、性别、年龄、五门课成绩及总分)。

可以键入学生信息,保存学生信息到文件,计算学生总分,将其总分排名,显示及保存排名后的结果。

2 需求分析2.1课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。

通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础2.2 课程设计任务1.编写一个菜单驱动的学生成绩管理程序。

实现如下管理功能:(1).计算每个学生的总分。

(2).按总分从高到低排序。

2.课程设计交流(每天写课程设计日记,通过邮件、电话等方式向老师汇报课程设计情况);按要求写好课程设计论文。

2.3 设计环境(1)WINDOWS XP系统(2)Visual C++2.4 开发语言C语言3 分析和设计3.1 模块设计定义结构体类型struct 表示学生信息(包括:姓名、学号、年龄、性别及五门课成绩),定义一个结构体数组STU student[M],用来存放M个学生的信息,假设M为10。

如下所示:#define M 10typedef struct{char name[9],number[11];int age;char sex;int score[S+1];}STU;STU student[M];定义一个void sum()函数,本函数的功能是将计算每个学生的总分。

定义一个void sort()函数,本函数的功能是按总分从高到低排序。

3.2 系统流程图图3.1 系统流程图3.3 主要模块的流程图图3.2 sort流程图图3.3 sum流程图4 具体代码实现#include"stdio.h"#include"string.h"#define M 10#define S 5/*用结构体存放一个学生信息(姓名、学号、年龄、性别及5门课的成绩)*/ typedef struct{char name[9],number[11];int age;char sex;int score[S+1];}STU;STU student[M];void input(),sum(),sort(),outputs(),outputf(),save();void main(){char choice;while(1){printf("\t\t\t~~~学生成绩管理系统~~~\n");printf("\t\t\t1. 输入十个学生信息\n");printf("\t\t\t2. 保存十个学生信息到文件data1.txt\n");printf("\t\t\t3. 计算学生总分\n");printf("\t\t\t4. 对学生总分排序\n");printf("\t\t\t5. 显示结果\n");printf("\t\t\t6. 保存结果到data2.txt\n");printf("\t\t\t7. 退出程序\n");printf("请输入1~7选择:\n");scanf(" %c",&choice);switch(choice){case '1': input();break;case '2': save();break;case '3': sum();break;case '4': sort();break;case '5': outputs();break;case '6': outputf();break;case '7': exit(0);break;default:printf("错误!请重新选择\n");}}}void input()/*是从键盘输入10名学生的信息:姓名、学号、年龄、性别及5门课的成绩*/{int i,j;for(i=0;i<M;i++){do {printf("请输入第%d个学生的姓名: ",i+1);gets(student[i].name);gets(student[i].name);}while(strlen(student[i].name)<=0||strlen(student[i].name)>=8);do {printf("请输入第%d个学生的学号: ",i+1);gets(student[i].number);}while(strlen(student[i].number)!=10);do {printf("请输入第%d个学生的年龄[0,200]: ",i+1);scanf("%d",&student[i].age);}while(student[i].age<0||student[i].age>200);do {printf("请输入第%d个学生的性别(f,F,m,M): ",i+1);scanf(" %c",&student[i].sex);}while(student[i].sex!='m'&&student[i].sex!='M'&&student[i].sex!='f'&&student[i].sex!='F' );printf("请输入第%d个学生的五门课成绩:\n",i+1);for(j=0;j<S;j++){ do {printf("\t\t\t第%d门成绩[0,100]: ",j+1);scanf("%d",&student[i].score[j]);}while(student[i].score[j]<0||student[i].score[j]>100);}printf("\n\n");}printf("数据输入完成\n\n");}void save()/*本函数的功能是将这10名学生的信息输出到data.txt文件中*/{int i,j;FILE *fp;if((fp=fopen("d:\\data1.txt","w"))==NULL){ printf("不能打开文件");exit(0);}for(i=0;i<M;i++){fprintf(fp,"%10s %11s %2d %c ",student[i].name,student[i].number,student[i].age,student[i].sex);for(j=0;j<S;j++)fprintf(fp,"%3d ",student[i].score[j]);fprintf(fp,"\n");}fclose(fp);printf("\n 数据已经写入文件data1.txt.\n\n"); }void sum()/*本函数的功能是将计算每个学生的总分*/{int i,j,s;for(i=0;i<M;i++){s=0;for(j=0;j<S;j++)s+=student[i].score[j];student[i].score[j]=s; }printf("\n 该学生成绩总分已完成计算\n\n");}void sort()/*本函数的功能是按总分从高到低排序*/{int i,j;STU t;for(i=0;i<M-1;i++)for(j=i+1;j<M;j++)if(student[i].score[S]<student[j].score[S])t=student[i],student[i]=student[j],student[j]=t;printf("\n学生成绩已排序。

\n\n");}void outputs()/*本函数的功能是把最后结果输出到屏幕上*/{int i,j;printf("\t\t学生管理基本界面\n");printf(" ---------------------------------------------------------------------------\n");printf(" 姓名学号年龄性别语文数学英语物理化学总分\n");for(i=0;i<M;i++){ printf("%9s%11s%5d%5c",student[i].name,student[i].number,student[i].age,student[i] .sex);for(j=0;j<S+1;j++)printf("%7d",student[i].score[j]);printf("\n\n");}}void outputf()/*本函数的功能是把最后结果输出到data2.txt文件中*/{int i,j;FILE *fp;if((fp=fopen("d:\\data2.txt","w"))==NULL){ printf("不能打开文件\n");exit(0);}fprintf(fp,"\t\ 学生管理基本界面\n");fprintf(fp," ---------------------------------------------------------------------------\n");fprintf(fp," 姓名学号年龄性别语文数学英语物理化学总分\n");for(i=0;i<M;i++){ fprintf(fp,"%10s%11s%5d%5c",student[i].name,student[i].number,student[i].age, student[i].sex);for(j=0;j<S+1;j++)fprintf(fp,"%7d",student[i].score[j]);fprintf(fp,"\n");}fclose(fp);printf("\n学生管理基本界面已经写入文件data2.txt\n\n"); }5 课程设计总结5.1 程序运行结果 / 预期运行结果菜单界面总分计算完成成绩排序完成5.2 课程设计体会在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。

相关主题