《C语言程序设计实训1》报告
设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院
专业:计算机科学与技术
班级:
姓名:学号
指导教师:
提交日期: 2014年12月22日
一、实验内容
编写并调试程序,实现学校各专业班级学生信息的管理。
10个学生的信息存储在文件中。
在头文件中定义学生信息的结构体类型,包括:
学号、姓名、专业、班级、3门成绩;和符号常量N(学生数)。
(同一班
级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)
二、实验要求
(1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择,
调用相应的函数。
STU student[N]; 函数
#include ""
void main()
{
int i,n,id,num,m,sub,corse;将从文件中读取10个人的信\n");
printf("\n2.您将从文件中随机读取第n(0<=n<=9)个学生的信息\n")
printf("\n3.您将根据某一班级某一专业总分超过多少进行查找\n");
printf("\n4.您将求某一课程分数最高的学生序号的下标\n");
printf("\n5.您将对平均成绩由低到高进行简单选择排序法\n ");
printf("\n6.您将对某一个班的平均成绩由低到高进行起泡排序法\n");
printf("\n7.您将对某门专业的学生的某门课程成绩由低到高进行直接插入排序法\n");
printf("\n8.您将把学生信息存入文件\n");
scanf("%d",&id);
getchar();
switch(id){
case 1:
{
printf("\n从文件中读取信息\n");
Input(students,sizeof(students)/sizeof(STU));Sort_select 函数
#include ""
void Sort_select(STU * p)
{
int i,j,k;
float sum,ave[N],t;
STU tem;
for(i=0;i<N;i++){
sum=;
sum=sum+(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2];
ave[i]=sum/3;
}
for(i=0;i<N-1;i++){
k=i;
for(j=k+1;j<N;j++){
if(ave[j]<ave[k])
k=j;
}
t=ave[k];
ave[k]=ave[i];
ave[i]=t;
tem=*(p+k);
*(p+k)=*(p+i);
*(p+i)=tem;
}
printf("\n学号姓名专业班级课程1 课程2 课程3\n");
for(i=0;i<N;i++)
Output(p+i);
}
9. Sort_buble函数
#include ""
void Sort_buble(STU * p,int n)
{
STU stu_class_ave[N],tem;
int i,j=0,count=0;
float sum,ave[N],t;
for(i=0;i<N;i++)
if((p+i)->classNo==n){
count++;
stu_class_ave[j]=*(p+i);
j++;
sum=;
sum=sum+(p+i)->score[0]+(p+i)->score[1]+ (p+i)->score[2];
ave[i]=sum/3;
}
for(i=0;i<count-1;i++)
for(j=0;j<count-i-1;j++)
if(ave[j]>ave[j+1]){
t=ave[j];
ave[j]=ave[j+1];
ave[j+1]=t;
tem=stu_class_ave[j];
stu_class_ave[j]=stu_class_ave[j+1];
stu_class_ave[j+1]=tem;
}
printf("\n学号姓名专业班级课程1 课程2 课程3\n");
for(j=0;j<count;j++)
Output(stu_class_ave+j);
}
10. Sort_insert函数
#include ""
void Sort_insert(STU * p,int n,char * major)
{
STU stu_class_subject[N];
int i=0,j=1,count=0;
for(i=0;i<N;i++)
if(* major==(p+i)->major[0]){
count++;
stu_class_subject[j]=* (p+i);
j++;
}
for(i=2;i<=count;i++){
stu_class_subject[0]=stu_class_subject[i];
for(j=i-1;stu_class_subject[0].score[n]<stu_class_subject [j].score[n];j--)
stu_class_subject[j+1]=stu_class_subject[j];
stu_class_subject[j+1]=stu_class_subject[0];
}
printf("\n学号姓名专业班级课程1 课程2 课程3\n");
for(j=1;j<=count;j++)
Output(stu_class_subject+j);
}
11. Save函数
#include ""
void Save(STU * p,int n)
{
FILE * fp;
char filename[15];
int i;
printf("\n请输入保存的文件名:\n");
gets(filename);
if((fp=fopen(filename,"wb"))==NULL){
printf("cannot open file\n");
return;
}
for(i=0;i<n;i++){
if(fwrite(p++,sizeof(STU),1,fp)!=1)
printf("file write error\n");
}
五、程序测试(Input、Search、Max、Sort_buble、Sort_insert函数的调用及执行结果的截图)
函数
函数
函数
函数
函数。