基于数组的学生信息管理系统实验报告
更新时间:2024-01-14 10:51:01 阅读量: 教育文库 文档下载
《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; fclose(fp); } //---------------------------------------------------某课程插入排序-------------------------------------------- void sort_insert() { int count=0;//实际元素个数 int i,j,k,c; STU student[N],stu[N]; FILE *fp; printf(\输入要读取的文件夹名:\\n\gets(filename); { char se_major[15];//专业 STU stu_class_subject[N];//按某门课程成绩排序后的某个专业的学生信息 char filename[20]; if((fp=fopen(filename,\ printf(\ return; } for(i=0;i if((fread(&student[i],sizeof(STU),1,fp))!=1) return; printf(\请输入您要查找的专业(computer,software,network):\ gets(se_major); printf(\请输入您要查找的课程(0-2):\ scanf(\ for(i=0;i { if(strcmp(student[i].major,se_major)==0)//计数 } { for(j=i-1;j>=0;j--) { if(stu_class_subject[j].score[c] stu_class_subject[count]=student[i]; { count++; for(i=1;i } break; } if(j!=i-1) { stu[0]=stu_class_subject[i]; for(k=i;k>=j+1;k--) } {stu_class_subject[k]=stu_class_subject[k-1];} stu_class_subject[j+1]=stu[0];//插入位置 printf(\排序后的信息为:\\n\ printf(\学号 姓名 专业 班级 成绩0 成绩1 成绩2\\n\ for(i=0;i {output(&stu_class_subject[i]);}//由低到高输出 fclose(fp); } //-----------------------------------------------------------查找--------------------------------------------------- void search() { int i,k,count=0; int sum[N],fscore; FILE *fp; STU student[N],stu[N]; printf(\输入要读取的文件夹名:\\n\gets(filename); { char filename[20]; if((fp=fopen(filename,\ printf(\ exit(0); } for(i=0;i if((fread(&student[i],sizeof(STU),1,fp))!=1) exit(0); for(i=0;i {sum[i]=student[i].score[0]+student[i].score[1]+student[i].score[2];}//计算总分 printf(\请输入要查找的班级、分数下限:\ scanf(\ for(i=0;i } printf(\学号 姓名 专业 班级 成绩0 成绩1 成绩 for(i=0;i if(student[i].classNo==k&&fscore<=sum[i])//计数 {stu[count]=student[i]; count++;} 2\\n\ fclose(fp); 五、程序测试(输入、输出的截图及文件的内容) 六、实验总结(实验过程中遇到的具体问题,如何解决,不要说空话、套话,雷同扣分)
正在阅读:
基于数组的学生信息管理系统实验报告01-14
试分析临沂市文化产业发展的优势和不足,并提出相应的发展策略05-16
幼儿园小班安全教案08-01
计量经济学-李子奈-计算题整理集合01-18
婴幼儿补铁补血如何食疗07-02
仓库管理规章制度06-09
实验1 UTM web基本配置实验06-05
Oracle期末考试试题及答案11-27
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数组
- 管理系统
- 基于
- 实验
- 报告
- 学生
- 信息
- sql练习题+答案
- 国家职业资格考试-中级汽车维修工考题(三)
- 排队论习题及答案
- 分析化学作业01参考答案(第三章)
- 四年级下册英语 连词成句
- 北京市某大型医院保安服务投标书 doc - 图文
- 中国名句精华
- 逻辑讲义-联言、选言,假言命题
- 部分学校课堂教学改革工作的调研报告
- 电气统一做法.doc新
- 《经济学基础》各章习题及参考答案
- 外国民族音乐概论试题 自编
- 合肥工业大学系统工程导论第8章 网络计划法
- 后厨工作流程
- 基于马尔科夫模型词序因子的文本相似度研究 - 硕士学位论文 - 图文
- U5-9优错题
- 一维导热方程 有限差分法 matlab实现
- 山东省威海市2018届高三下学期第二次模拟考试文综地理试题 含答案 - 图文
- 北师大版八年级上物理第四章声现象知识总结与检测
- XTRACT使用说明整理 - 图文