《C语言程序设计实训1》报告 设 计学 院专 班 姓 提 交
题 目: 基于数组的学生信息管理系统 称: 信息科学技术学院 业: 软件工程 级: x班 名: xxx 学 号 xxx
日 期: 2014年6月
名
一、实验内容
编写并调试程序,实现学校各专业班级学生信息的管理。定义学生信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩。N定义为符号常量(学生数)。全局类型的定义如下:
#define N 10 struct Student{ char num[15];//学号 char name[15];//姓名 char major[10];//专业(computer,software,network) int classNo;//班级(1-2) int score[3];//3门课的成绩(0-2) }; typedef struct Student STU;
二、实验要求
(1) main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。
STU student[N]; //保存输入的N名学生信息 (2) 定义函数Input:从键盘输入N个学生的信息。 (3) 定义函数Save:将学生信息存入文件。
(4) 定义函数Output:将某个学生信息表格化屏幕输出。
(5) 定义函数Fetch:从文件中随机读取第n个(0<=n<=N-1)学生的信息。 (6) 定义函数Max:求所有学生某门课程的最高分和分数最高的学生的姓名。 (7) 定义函数Sort_select:对所有学生,按平均成绩由低到高进行简单选择排序。 (8) 定义函数Sort_buble:对某个班级的学生,按平均成绩由高到低进行起泡排序。并调
用Output输出。 定义局部变量:
STU stu_class_ave[N]; //按平均成绩排序后的某个班级的学生信息; int count; //实际元素个数
(9) 定义函数Sort_insert:对某个专业的学生,按某门课程成绩由低到高进行直接插入排
序。并调用Output输出。 定义局部变量:
STU stu_class_ subject [N]; //按某门课程成绩排序后的某个专业的学生信息; int count; //实际元素个数
(10) 定义函数Search:实现班级和成绩的综合查找(如1班,总分240分以上同学)。
三、算法流程图
函数Sort_select的算法流程图
四、程序清单(关键语句和变量加注释)
#include
//------------------------------------------类型定义-------------------------------------------------------------- struct Student
{ char num[15];//学号 char name[15];//姓名
char major[10];//专业(computer,software,network) int classNo;//班级(1-2) int score[3];//3门课的成绩(0-2) };
typedef struct Student STU;
//---------------------------------------------函数声明----------------------------------------------------------- void input(STU *p);//从键盘输入N个学生的信息
void save(STU *p,int n);//将学生信息存入文件
void output(STU *p);//将某个学生信息表格化屏幕输出
void fetch();//从文件中随机读取第n个(0<=n<=N-1)学生的信息
void Max();//求所有学生某门课程的最高分和分数最高的学生的姓名
void sort_buble();//对某个班级的学生,按平均成绩由高到低进行起泡排序。并调用Output输出
void sort_insert();//对某个专业的学生,按某门课程成绩由低到高进行直接插入排序。并调用Output输出
void sort_select();//对所有学生,按平均成绩由低到高进行简单选择排序
void search();//实现班级和成绩的综合查找(如1班,总分240分以上同学)
//----------------------------------------主函数开始--------------------------------------------------------------
#define N 10//数组长度定义为10
void main()//以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数 { {
printf(\请输入功能编号,运行系统相应功能\\n\
printf(\输入学生信息\\n2-信息存盘\\n3-从文件中随机读取某个学生的信息\\n\int j,id;
STU student[N];//用于保存输入的N名学生信息 while(1)
printf(\输出所有学生某门课程的最高分和分数最高的学生的姓名\\n5-对所有学生
printf(\对某个班级学生按总平均成绩由高到低排序\\n7-对某个专业的学生按某门printf(\实现班级和成绩的综合查找\\n\getchar();//吸收回车键 switch(id) { case 1: { } case 2: { } case 3: { } case 4:
fetch();//随机读取 break;
save(student,N);//存储信息 break;
for(j=0;j break; printf(\第%d个\\n\input(student+j); 按总平均成绩由低到高排序\\n\课程成绩由低到高排序\\n\ scanf(\输入功能编号,运行系统相应功能 } } { } case 5: { } case 6: { } case 7: { } case 8: { } default://不符合8个常量 } { break; search();//综合查找 break; sort_insert();//某专业课程排序 break; sort_buble();//某班级总平均成绩排序 break; sort_select();//所有总平均成绩排序 break; Max();//最高分 break; if((id)<1||(id)>8) } break;//break while //--------------------------------------------------输入函数--------------------------------------------------- void input(STU *p) { int i;