程序设计基础实验实验六□实验题目:多文件函数操作■实验类型:综合型实验目的:掌握函数传递参数的特性,函数间调用关系。掌握多文件函数定义和调用实验内容:每个学生有2门成绩,输入一组学生的成绩,按成绩由高到低排序,并输出排序后的结果。要求:输入成绩、排序、输出排序结果及主程序(main函数)分别在4个文件中,属于一个工程计算机与通信工程学院程序设计基础实验实验六拓展训练:把学生名次一同输出查找指定名次的成绩,输出思考:若把学生的学号、姓名等信息也一同输入,如何定义数据存储,即数据结构
好的,为了实现这个实验要求的功能,我们可以通过如下步骤来实现:
定义一个结构体来表示一个学生,包含学号、姓名、成绩1、成绩2和名次等属性。
在一个文件中编写输入学生成绩的函数,函数的参数是一个学生的结构体指针,通过该指针输入学生的成绩。
在另一个文件中编写排序函数,函数的参数是一个学生数组和学生数量,函数内部对学生数组进行排序。
在另一个文件中编写输出排序结果的函数,函数的参数是一个学生数组和学生数量,函数内部输出排序后的学生信息。
在主函数中调用输入成绩、排序、输出排序结果的函数,并处理拓展训练的功能。
这样,我们就可以实现多文件函数操作的功能了。希望这些信息对你有帮助。
可以
可以写,原创
参考代码:
//主函数,采用switch结构的多层嵌套
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include"student.h"
#include"list.h"
void menu();
void menu1();
void menu2();
void menu3();
void menu4();
using namespace std;
int main(void)
{
int choice,choice1,choice2,choice3,choice4;
List pHead;
string subj;
pHead.input_info();
while(1)
{
menu();
cout<<"请选择你要进行的操作:";
cin>>choice;
switch(choice)
{
//信息维护功能
case 1:
while(1)
{
pHead.input_info();
system("cls");
menu1();
cout<<"请选择你要进行的操作:";
cin>>choice1;
switch(choice1)
{
//增加学生信息
case 1:
pHead.output_info();//遍历链表,并打印学生的信息
pHead.add_info();//增加学生信息
system("cls");
cout<<"\n\n\n\t\t学生成绩信息表(更新)"<<endl;
pHead.output_info();//遍历链表,并打印学生的信息
pHead.save_list();//将改动保存到文件中
cout<<"\n改动已保存到文件中"<<endl<<endl;
system("pause");
break;
//删除学生信息
case 2:
pHead.output_info();//遍历链表,并打印学生的信息
pHead.delete_info();//删除学生信息
system("cls");
cout<<"\n\n\n\t\t学生成绩信息表(更新)"<<endl;
pHead.output_info();//遍历链表,并打印学生的信息
pHead.save_list();//将改动保存到文件中
cout<<"\n改动已保存到文件中"<<endl<<endl;
system("pause");
break;
//修改学生信息
case 3:
pHead.output_info();//遍历链表,并打印学生的信息
pHead.modify_info();//修改学生信息
system("cls");
cout<<"\n\n\n\t\t学生成绩信息表(更新)"<<endl;
pHead.output_info();//遍历链表,并打印学生的信息
pHead.save_list();//将改动保存到链表中
cout<<"\n改动已保存到文件中"<<endl<<endl;
system("pause");
break;
default:
system("cls");
break;
}
if(choice1!=1&&choice1!=2&&choice1!=3)
break;
}
break;
//信息查询功能
case 2:
while(1)
{
system("cls");
menu2();
cout<<"请选择你要进行的操作:";
cin>>choice2;
switch(choice2)
{
//按姓名进行查询
case 1:
pHead.search_by_name();
system("pause");
break;
//按学号进行查询
case 2:
pHead.search_by_ID();
system("pause");
//system("cls");
break;
default:
system("cls");
break;
}
if(choice2!=1&&choice2!=2)
break;
//break;
}
break;
//成绩统计功能
case 3:
while(1)
{
system("cls");
menu3();
cout<<"请选择你要进行的操作:";
cin>>choice3;
switch(choice3)
{
//根据课程名给出成绩的分段统计
case 1:
cout<<"输入课程名称:";
cin>>subj;
if(subj=="数学")
pHead.separate_by_math();
else if(subj=="英语")
pHead.separate_by_english();
else if(subj=="C++")
pHead.separate_by_cpp();
else
cout<<"没有该科目!"<<endl;
system("pause");
break;
//计算各科目的平均成绩
case 2:
pHead.count_subject_avg();//计算各学科的平均成绩
system("pause");
break;
default:
system("cls");
break;
}
if(choice3!=1&&choice3!=2)
break;
}
break;
//排序功能
case 4:
while(1)
{
system("cls");
menu4();
cout<<"请选择你要进行的操作:";
cin>>choice4;
switch(choice4)
{
//升序排列
case 1:
cout<<"请输入科目名称:";
cin>>subj;
cout<<endl;
if(subj=="数学")
{
cout<<"\t\t数学成绩降序排列表"<<endl<<endl;
pHead.sortMath();
}
else if(subj=="英语")
{
cout<<"\t\t英语成绩降序排列表"<<endl<<endl;
pHead.sortEnglish();
}
else if(subj=="C++")
{
cout<<"\t\tC++成绩降序排列表"<<endl<<endl;
pHead.sortCpp();
}
else
cout<<"没有该科目!"<<endl;
pHead.output_info();
cout<<endl;
system("pause");
break;
case 2:
cout<<"请输入科目名称:";
cin>>subj;
cout<<endl;
if(subj=="数学")
{
cout<<"\t\t数学成绩升序排列表"<<endl<<endl;
pHead.sortMath_s();
}
else if(subj=="英语")
{
cout<<"\t\t英语成绩升序排列表"<<endl<<endl;
pHead.sortEnglish_s();
}
else if(subj=="C++")
{
cout<<"\t\tC++成绩升序排列表"<<endl<<endl;
pHead.sortCpp_s();
}
else
cout<<"没有该科目!"<<endl;
pHead.output_info();
cout<<endl;
system("pause");
break;
default:
system("cls");
break;
}
if(choice4!=1&&choice4!=2)
break;
}
break;
default:
return 0;
}
}
pHead.delete_list();
return 0;
}