问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++。编程题,题目如下。

发布网友 发布时间:2022-05-17 16:33

我来回答

3个回答

热心网友 时间:2023-10-29 19:46

以下是一个学生管理系统:
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"

#define CMD_START printf("\n\n######### Start a command #########\n");
/* 用来标记一个命令执行的开始*/
#define CMD_END printf( "\n######### End a command #########\n\n");
/* 用来标记一个命令执行的结束 ,这两个语句是为了提供更好的用户界面而写的 */
#define DATA_FILE "data.dat"
/* 这是 数据文件名 */
#define TEMP_FILE "temp.dat"
/* 这是一个临时的文件的名字,在删除记录的函数中使用的,
详细内容参考 Delete() 函数 */

typedef struct tagStudent
{
char ID[30]; /* 学号 */
char Name[30]; /* 姓名 */
char Class[255]; /* 班级 */
char Sex; /* 性别 ,值为 F 或 f 或 M 或 m */
int Math; /* 数学成绩 */
int English; /* 英语成绩 */
int Compute; /* 计算机成绩 */
int Philosophy; /* 哲学成绩 */
int PE; /* 体育成绩 */
} Student;
/* 这是学生信息结构体 */

int ShowMenu(); /* 在屏幕上打印 主菜单 的函数,它的返回值为 所选 菜单的 项目编号 */
int ReadData(FILE*,Student* ); /* 从一个 打开的数据文件中读取 记录的函数,错误返回 0 */
int WriteData(FILE* , Student* ); /* 向一个数据文件中 写入 记录的函数,错误返回 0 */
void Output_Rec(Student*); /* 在屏幕上 打印 一条记录 */
void Input_Rec(Student*); /* 让用户输入 记录的 各个项目的 值,在添加记录时用到了 */
void CopyRec(Student* , Student* ); /* 复制一条记录 到 另一个记录中 */

/* 题目中要求的函数 */
void Print(); /* 实现查看数据文件内容的函数 */
void Add(); /* 添加记录的函数 */
void Delete(); /* 删除记录的函数 */
void Statistics(); /* 对数据进行统计分析的函数 */
void Find(int); /* 实现查找功能的函数,参数决定 是按 ID 查找 还是按 Name 查找 */

int quit; /* 一个全局变量,在下面的 main() 函数中,用来决定何时退出主循环 */

void main()
{
int cmd; /* 用户所选的 菜单 项目 的标号 */

quit = 0; /* 初始化 为 不退出 */

/* 这是程序的主循环,每次都将 主菜单打印出来,
供用户选择相应的 序号 来执行相应的功能 */
while( ! quit )
{

cmd = ShowMenu(); /* 显示 主菜单,并返回用户所选择的 菜单项 的 编号 */

CMD_START /* 在屏幕上打印一行分隔符,告诉用户这是一个子功能的开始 */

switch( cmd ) /* 用多项分支 根据 用户的选择 调用 相应的函数 */
{
case 1:
Print(); break; /* 用户选择 1 号菜单,程序执行 查看的数据文件的函数 */
case 2:
Add(); break; /* 用户选择 2 号菜单,程序执行 添加记录的函数 */
case 3:
Delete(); break; /* 用户选择 3 号菜单,程序执行 删除记录的函数 */
case 4:
Statistics(); break; /* 用户选择 4 号菜单,程序执行 统计数据的函数 */
case 5:
Find(5); break; /* Find_ID ,5 号菜单执行 按 ID(学号)查找的功能 */
case 6:
Find(6); break; /* Find_Name,6 号菜单执行 按 Name(姓名)查找的功能 */
case 7:
quit = 1; /* 用户选择了退出菜单 */
printf(" Thank you for your using .\n\n Happy everyday !!\n\n Bye Bye ....\n");

break;

default:
printf(" Please Input a number between\t1\tto\t7.\n");
/* 用户所输入的 序号不在所处理的范围内 */
}

CMD_END /* 打印一行分隔符,告诉用户 他所选择的菜单的功能已经执行完毕 */

if (quit != 1) /* 检查用户是否 要求 退出 */
{
printf(" Press any key to Return Main Menu ....\n");
getch(); /* 用 一个 无回显 的 字符输入函数 来实现暂停执行,按 任意键 继续的功能 */
}

}

}

int ShowMenu()
{

int cmd = 0; /* 保存用户的选择 */

/* 定义 程序所支持的菜单项目 */
char Menu_SeeData[] = "\t1 .\tView the Records in the data file\n"; /* 查看数据文件 */
char Menu_Add[] = "\t2 .\tAdd New Record\n"; /* 添加记录 */
char Menu_Delete[] = "\t3 .\tDelete an old Record\n"; /* 删除记录 */
char Menu_Statistics[] = "\t4 .\tMake a Statistics\n"; /* 统计分析 */
char Menu_Find_ID[] = "\t5 .\tFind a Record from the ID\n"; /* 按 学号(ID) 查找 */
char Menu_Find_Name[] = "\t6 .\tFind a Record from the Name\n"; /* 按 姓名(Name) 查找 */
char Menu_Quit[] = "\t7 .\tQuit\n"; /* 退出 */

/* 在屏幕上打印 主菜单 */
printf("\n\n############ Main Menu ###############\n");
printf( "##############################################\n\n");

printf(Menu_SeeData);
printf(Menu_Add);
printf(Menu_Delete);
printf(Menu_Statistics);
printf(Menu_Find_ID);
printf(Menu_Find_Name);
printf(Menu_Quit);

printf("\n##############################################");

printf("\n\n Input the index of your choice : ");

scanf("%d" , &cmd); /* 接受用户 选择 */

printf("\n");

return cmd; /* 返回用户的输入,交给主循环处理 */

}

void Print() /* 打印 数据文件的 记录内容 */
{

FILE* fp = NULL; /* 文件指针 */
Student rec; /* 存放从文件中读取的记录 */
int i = 0; /* 实现 计数 和 分屏打印的功能 */

fp = fopen(DATA_FILE , "rb"); /* 以 二进制读 方式 打开数据文件 */
if(fp == NULL) /* 打开文件出错 */
{
printf(" Can not open the data file : %s\n" , DATA_FILE);
return ;
}

while(ReadData(fp , &rec)) /* ReadData() 函数出错或到文件末尾时返回 0,可以做循环条件 */
{
Output_Rec(&rec); /* 正确读取,将记录输出 */
printf(" ------------------------------------------");
/* 打印一行分隔符,营造好的用户界面 */

i++; /* 计数器 加一 */
if( i % 4 == 0) /* 显示 4 个暂停一下 */
{
printf("\n Press any key to continue ... \n");
getch();
}
}

printf("\n The current data file have\t%d\trecord .\n" , i );

fclose(fp); /* 关闭文件 */

}

void Add() /* 添加记录 */
{

Student rec;
FILE* fp = NULL;

Input_Rec( &rec ); /* 让用户输入新记录的各项内容 */

fp = fopen(DATA_FILE ,"ab"); /* 以 添加 方式打开数据文件 */
if( fp == NULL)
{
printf(" Can not open the data file to write into ... \n");
return ;
}

if( WriteData(fp, &rec) == 1) /* 将 新记录 写入文件,并检查 是否正确写入*/
printf("\n\n Add New Record Success \n\n");
else
printf("\n\n Failed to Write New Record into the data file \n");

fclose(fp);

}

void Delete() /* 删除记录 */
{

Student rec;
FILE* fpr,*fpw; /* 两个文件指针,分别用于 读 和 写 */
char buf[30]; /* 接受 用户输入的 ID 缓冲区 */
char cmd[255]; /* 执行的系统命令 */

int del_count; /* 实际 删除的 记录数目 */

del_count = 0;

printf("\n Please type the ID of the record you want me to delete .");
printf("\n The ID : "); /* 提示用户 输入 */
scanf("%s" , buf);

fpr = fopen(DATA_FILE ,"rb"); /* 从 原来的记录文件中读取数据,跳过将要删除的记录 */
if( fpr == NULL)
{
printf(" Can not open the data file to read record ... \n");
return ;
}

fpw = fopen(TEMP_FILE,"wb"); /* 打开一个 临时文件 保存不删除的记录 */
if( fpw == NULL)
{
printf(" Can not open the data file to write into ... \n");
return ;
}

while(ReadData(fpr , &rec)) /* 读取 要保留的记录 */
{
if(strcmp(rec.ID , buf) != 0)
{
WriteData(fpw, &rec); /* 写入临时文件 ,然后删除 原数据文件,
再将临时文件该名为原数据文件的名字*/
}
else
{
del_count++; /* 跳过的记录数目,即删除的数目 */
}
}

fclose(fpr);
fclose(fpw);

strcpy(cmd , "del "); /* 构造命令串,用 system() 函数执行 */
strcat(cmd ,DATA_FILE);

system(cmd);

rename(TEMP_FILE,DATA_FILE); /* 直接调用 C 语言的改名函数将临时文件改名为数据文件的名字*/

printf("\n I have delete\t%d\trecord .\n" ,del_count);

}

void Statistics() /* 统计分析函数 */
{
int i50,i60,i70,i80,i90; /*平均分小于60 ,60-69,70-79,80-89,>=90 的分数段的学生数目*/
float avg; /*平均分*/

int sum ,sum_high,sum_low; /* 总分,总分最高分,总分最低分 */
Student stu_high,stu_low; /* 总分最高和最低 学生的信息 */

Student stu_math_high,stu_english_high; /* 各科 最高分的学生记录副本 */
Student stu_compute_high,stu_philosophy_high,stu_PE_high;

Student stu_math_low,stu_english_low; /* 各科最低的学生记录副本 */
Student stu_compute_low, stu_philosophy_low ,stu_PE_low;

FILE* fp;
Student rec;

int count; /* 一个计数器,用于判断是否第一次读取数据 */

count = sum = sum_high = sum_low = i50 = i60 = i60 = i70 =i80 = i90 = 0;
fp = NULL; /* 对 数据初始化 */
fp = fopen(DATA_FILE ,"rb");
if(fp == NULL)
{
printf("\nCan not open the data file to read ...\n");
return;
}

while(ReadData(fp , &rec)) /* 读取数据 */
{
count++; /* 计数器 加一 */

sum = rec.Math + rec.English + rec.Compute + rec.PE+ rec.Philosophy; /* 求和 */

/* average */
avg = ((float)sum) / 5; /* 平均分 */
/* 下面对各个分数段进行统计 */
if(avg < 60)
i50++;
else if(avg <70)
i60++;
else if(avg < 80)
i70++;
else if(avg < 90)
i80++;
else
i90++;

/*highest and loeest*/
if(count <= 1) /* 第一次读取,执行初始化,不进行比较 */
{
sum_high = sum_low = sum;
CopyRec(&stu_high , &rec);
CopyRec(&stu_low ,&rec);
}
else
{
if(sum > sum_high)
{
sum_high = sum; /* 得到最高总分 */
CopyRec(&stu_high , &rec); /* 保存总分最高的学生的信息 */
}

if(sum < sum_low)
{
sum_low = sum; /* 得到最低分 */
CopyRec(&stu_low , &rec); /* 保存总分最低的学生的信息 */
}
}

/* subject highest and low */
if(count == 1) /* 同上面一样,执行初始化 */
{
CopyRec(&stu_math_high,&rec);
CopyRec(&stu_english_high , &rec);
CopyRec(&stu_compute_high, &rec);
CopyRec(&stu_philosophy_high,&rec);
CopyRec(&stu_PE_high , &rec);

CopyRec(&stu_math_low,&rec);
CopyRec(&stu_english_low , &rec);
CopyRec(&stu_compute_low, &rec);
CopyRec(&stu_philosophy_low,&rec);
CopyRec(&stu_PE_low , &rec);

}
else
{
/* High */
/* 保存各科的最高分的学生的信息 */
if(rec.Math > stu_math_high.Math)
CopyRec(&stu_math_high ,&rec);

if(rec.English > stu_english_high.English)
CopyRec(&stu_english_high ,&rec);

if(rec.Compute > stu_compute_high.Compute)
CopyRec(&stu_compute_high , &rec);

if(rec.Philosophy > stu_philosophy_high.Philosophy)
CopyRec(&stu_philosophy_high , &rec);

if(rec.PE > stu_PE_high.PE)
CopyRec(&stu_PE_high , &rec);

/* low */
/* 保存各科的最低分的学生的信息 */
if(rec.Math < stu_math_low.Math)
CopyRec(&stu_math_low ,&rec);

if(rec.English < stu_english_low.English)
CopyRec(&stu_english_low ,&rec);

if(rec.Compute < stu_compute_low.Compute)
CopyRec(&stu_compute_low , &rec);

if(rec.Philosophy < stu_philosophy_low.Philosophy)
CopyRec(&stu_philosophy_low , &rec);

if(rec.PE < stu_PE_low.PE)
CopyRec(&stu_PE_low , &rec);

}

}/* While End */

if(count < 1)
{
printf("\n There is no record in the data file .\n");
}
else
{
/* average */
/* 输出平均分的分段统计信息 */
printf("\n The count in each segment :\n");
printf("\t < 60\t:\t%d\n",i50);
printf("\t60 - 69\t:\t%d\n",i60);
printf("\t70 - 79\t:\t%d\n",i70);
printf("\t80 - 90\t:\t%d\n",i80);
printf("\t >= 90\t:\t%d\n",i90);
printf(" ------------------------------------------");

getch();

/*highest and loeest*/
/* 输出总分最高的学生的信息 */
printf("\n The Highest Mark Student:\n");
printf(" The Mark is : %d\n" , sum_high);
printf(" The student is :\n");
Output_Rec(&stu_high);

/* 输出总分最高的学生的信息 */
printf("\n The Lowest Mark Student:\n");
printf(" The Mark is : %d\n" , sum_low);
printf(" The student is :\n");
Output_Rec(&stu_low);
printf(" ------------------------------------------\n");

getch();

/* subject highest and low */
/* 输出各科最高和最低分的统计信息 */
printf(" The Highest\tMath :\n");
Output_Rec(&stu_math_high);
printf(" The Lowest Math :\n");
Output_Rec(&stu_math_low);
printf(" ------------------------------------------\n");

getch(); /* 暂停 ,按任意键继续 */

printf(" The Highest English :\n");
Output_Rec(&stu_english_high);
printf(" The Lowest English :\n");
Output_Rec(&stu_english_low);
printf(" ------------------------------------------\n");

getch();

printf(" The Highest Compute :\n");
Output_Rec(&stu_compute_high);
printf(" The Lowest Compute :\n");
Output_Rec(&stu_compute_low);
printf(" ------------------------------------------\n");

getch();

printf(" The Highest Philosophy :\n");
Output_Rec(&stu_philosophy_high);
printf(" The Lowest Philosophy :\n");
Output_Rec(&stu_philosophy_low);
printf(" ------------------------------------------\n");

getch();

printf(" The Highest PE :\n");
Output_Rec(&stu_PE_high);
printf(" The Lowest PE :\n");
Output_Rec(&stu_PE_low);
printf(" ------------------------------------------\n");

}
fclose(fp);

}

void Find(int isFind_From_ID) /* 查找函数 */
{

char buf[30]; /* 接受用户输入的条件的缓冲区 */
Student rec;
int find_count; /* 查找到的记录数目 */
FILE* fp;

find_count = 0;

fp = fopen(DATA_FILE ,"rb");
if( fp == NULL)
{
printf("\n Can not open the data file to search ...\n");
return;
}

switch(isFind_From_ID)
{
case 5: /*ID,按 学号查找*/

printf("\n Please Input the ID : ");
scanf("%s",buf); /* 提示用户输入 */

while(ReadData(fp , &rec)) /* 读取数据 */
{
if(strcmp(rec.ID , buf) == 0) /* 比较 */
{
find_count++;
Output_Rec(&rec); /* 输出符合条件的记录 */
printf(" ------------------------------------------\n");
}
}
break;

case 6: /*Name ,按 姓名 查找*/

printf("\n Please Input the Name : ");
scanf("%s",buf);

while(ReadData(fp , &rec))
{
if(strcmp(rec.Name , buf) == 0)
{
find_count++;
Output_Rec(&rec);
printf(" ------------------------------------------\n");
}
}

break;

default:
printf(" \nPlease type right index ...\n"); /*处理isFind_From_ID既不是5也不是6的情况*/

}

if(find_count >0) /* 输出找到的记录数目 */
{
printf("\n Have find out\t%d\trecord\n" ,find_count);
}
else
{
printf("\n I'm very sorry .\n I failed to find out the one you want .\n");
printf("\n I suggest that you change some other key words .\n");
}

fclose(fp);

}

int ReadData(FILE* fp, Student* Dest_Rec) /* 读取数据记录 */
{
int r;
if(( fp == NULL ) || ( Dest_Rec == NULL))
return 0; /* ERROR */

r = fread(Dest_Rec ,sizeof(Student) ,1 ,fp);
if(r != 1)
return 0;

return 1;

}

int WriteData(FILE* fp, Student* Src_Rec) /* 写入数据记录 */
{
int r;
if((fp == NULL) || (Src_Rec == NULL))
return 0; /* ERROR */

r = fwrite(Src_Rec , sizeof(Student) , 1, fp);
if(r != 1)
return 0;

return 1;

}

void Output_Rec( Student* stu) /* 在屏幕上输出 一个学生的信息 */
{
printf("\n");

printf(" Name : %s", stu->Name);
printf("\t\tSex : ");
if( stu->Sex == 'M' || stu->Sex == 'm' )
printf("Male");
else
printf("Female");

printf("\n ID : %s\t\tClass : %s\n",stu->ID ,stu->Class);

printf("Math = %d\tEnglish = %d\tCompute = %d\n" ,stu->Math ,stu->English, stu->Compute);
printf("Philosophy = %d\t\tPE = %d\n", stu->Philosophy ,stu->PE);

printf("\n");
}

void Input_Rec( Student* stu) /* 让用户输入 一个学生的各项信息 */
{

if(stu == NULL)
return;

printf("\n Name = ");
scanf("%s",stu->Name);

/* 下面这段代码实现只能输入 F ,f ,M ,m 的功能 */
printf("\tSex = (F|M) ");
while(1)
{
stu->Sex = getch(); /* 无回显输入 */

if(stu->Sex == 'F' || stu->Sex == 'f' || stu->Sex == 'M' || stu->Sex == 'm')
{
printf("%c",stu->Sex); /* 将用户输入的字符输出,模拟正常输入数据时的回显 */
break;
}
}

/* 下面 给出提示,让用户输入结构体的各项内容 */
printf("\n ID = ");
scanf("%s" , stu->ID);

printf("\n Class = ");
scanf("%s" , stu->Class);

printf("\n Math = ");
scanf("%d", &(stu->Math));

printf("\n English = ");
scanf("%d" ,&(stu->English));

printf("\n Compute = ");
scanf("%d" , &(stu->Compute));

printf("\n Philosophy = ");
scanf("%d" , &(stu->Philosophy));

printf("\n PE = ");
scanf("%d" , &(stu->PE));

printf("\n");

}

/* 因为结构体不能直接用 等号(=)赋值,写一个赋值函数 */
void CopyRec(Student* dest_stu, Student* src_stu)
{
/* 复制 源记录 的各项到 目标记录*/
strcpy(dest_stu->Name ,src_stu->Name);
strcpy(dest_stu->ID ,src_stu->ID);
strcpy(dest_stu->Class ,src_stu->Class);
dest_stu->Sex = src_stu->Sex;
dest_stu->Math = src_stu->Math;
dest_stu->English = src_stu->English;
dest_stu->Compute = src_stu->Compute;
dest_stu->Philosophy = src_stu->Philosophy;
dest_stu->PE = src_stu->PE;
}
虽然程序和你的要求不太一样,但很类似吧,他山之石,可以攻玉。。。。看了希望有所感悟有所帮助。

热心网友 时间:2023-10-29 19:46

按照LZ的要求写了一个版本的,主要是锻炼跟复习一下C++的内容。
在VC6.0下测试通过,所有文件信息如下,如果需要可以加QQ:564777005大家一起学习.
#ifndef H_STUINFO
#define H_STUINFO

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class CStuInfo
{
private:

public:
string sID;
string sName;
float score1;
float score2;
float score3;
float avg;

void print_to_console(int type);
void caculate_avg();
};
#endif

#include "stdafx.h"
#include "stdio.h"
#include "CStuInfo.h"

void CStuInfo::print_to_console(int type)
{
char str[100];
memset(str,'\0',100);
switch(type)
{
case 1:
sprintf(str,"%10s %10s %5.2f %5.2f %5.2f %5.2f\n",this->sID.c_str(),this->sName.c_str(),this->score1,this->score2,this->score3,this->avg);
cout<<str;
break;
case 2:
sprintf(str,"%10s %5.2f\n",this->sName,this->avg);
break;
default:
cout<<"\n没有定义该参数对应的输出格式\n"<<endl;
break;
}
}

void CStuInfo::caculate_avg()
{
this->avg = (this->score1 + this->score2 + this->score3) / 3.0;
}

#ifndef H_CSTUMANAGE
#define H_CSTUMANAGE

#include "CStuManage.h"
#include "CStuInfo.h"
#include <fstream>
#include <vector>

using namespace std;

class CStuManage
{
private:
vector<CStuInfo *> vecs;
public:
void add_stu_infor();
void print_info_all();
void caculate_avg_all();
void write_file();
void read_file();
void sort_infor(int type);
void print_good();
bool lessmark(const CStuInfo *s1,const CStuInfo* s2) ;
bool greatermark(const CStuInfo& s1,const CStuInfo& s2);

};

#endif

#include "stdafx.h"
#include "CStuInfo.h"
#include "CStuManage.h"
#include <algorithm>
#include <functional>

class sortInforDesc
{
public:
bool operator () (const CStuInfo *a,const CStuInfo *b) const
{
return (*a).avg < (*b).avg;
};
};

class sorInforInsc
{
public:
bool operator () (const CStuInfo *a,const CStuInfo *b) const
{
return (*a).avg > (*b).avg;
};
};

void CStuManage::add_stu_infor()
{
cout << "***********开始录入学生信息**********"<<endl;
int num;
while(true)
{
CStuInfo *info = new CStuInfo;

cout<< "\n学号:";
cin>>info->sID;

cout<<"姓名:";
cin>>info->sName;

cout<<"成绩1:";
cin>>info->score1;

cout<<"成绩2:";
cin>>info->score2;

cout<<"成绩3:";
cin>>info->score3;

vecs.push_back(info);

cout<<"\n输入完成 1->继续输入"<<endl;
cout<<"请选择:";

cin>>num;

if(num != 1)
{
break;
}
}

cout << "***********学生信息录入成功**********"<<endl;
}

void CStuManage::print_info_all()
{
for(vector<CStuInfo*>::iterator it = vecs.begin(); it!= vecs.end(); ++it)
{
(*it)->print_to_console(1);
}
}

void CStuManage::caculate_avg_all()
{
for(vector<CStuInfo*>::iterator it = vecs.begin(); it!= vecs.end(); ++it)
{
(*it)->caculate_avg();
}
}

void CStuManage::write_file()
{
string file_name;
cout<<"请输入保存文件路径(.txt):";

cin>>file_name;

ofstream out_file(file_name.c_str());

if(!out_file)
{
cout<<"系统错误:系统找不到指定路径。"<<endl;
return;
}

for(vector<CStuInfo*>::iterator it = vecs.begin(); it!= vecs.end(); ++it)
{
char str[100];
memset(str,'\0',100);
if(it == vecs.begin())
{
sprintf(str,"%10s %10s %5.2f %5.2f %5.2f %5.2f",(*it)->sID.c_str(),(*it)->sName.c_str(),(*it)->score1,(*it)->score2,(*it)->score3,(*it)->avg);
}
else
{

sprintf(str,"\n%10s %10s %5.2f %5.2f %5.2f %5.2f",(*it)->sID.c_str(),(*it)->sName.c_str(),(*it)->score1,(*it)->score2,(*it)->score3,(*it)->avg);
}
out_file<<str;
}

out_file.close();

cout << "\n***成功写入学生信息文件***"<<endl;
}

void CStuManage::read_file()
{
string file_name;
cout<<"请输入读取文件路径(.txt):";

cin>>file_name;

ifstream in_file(file_name.c_str());

if(!in_file)
{
cout<<"系统错误:系统找不到指定路径。"<<endl;
return;
}

for(vector<CStuInfo*>::iterator it = vecs.begin(); it!= vecs.end(); ++it)
{
delete (*it);
}
vecs.clear();
while(!in_file.eof() && in_file != NULL)
{
CStuInfo *info = new CStuInfo;

in_file>>info->sID>>info->sName>>info->score1>>info->score2>>info->score3>>info->avg;

vecs.push_back(info);
}

in_file.close();

cout << "\n***成功读取学生信息文件***"<<endl;

}

void CStuManage::sort_infor(int type)
{
if(type == 1)
{
sort(vecs.begin(),vecs.end(),sortInforDesc());
}
else if(type == 2 )
{
sort(vecs.begin(),vecs.end(),sorInforInsc());
}
else
{
cout<<"函数参数传递不正确!"<<endl;
}

cout << "\n***学生信息排序成功***"<<endl;
}

void CStuManage::print_good()
{
sort(vecs.begin(),vecs.end(),sortInforDesc());

int i = 1;
for(vector<CStuInfo*>::iterator it = vecs.begin(); it!= vecs.end(); ++it)
{
if(i > 3)
{
break;
}
(*it)->print_to_console(2);
i++;
}

cout << "\n***前三名学生信息输出完成***"<<endl;

}

// StuDemo.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "CStuInfo.h"
#include "CStuManage.h"

int main(int argc, char* argv[])
{
int choice;
CStuManage *manage = new CStuManage;

cout<<"*************学生信息管理菜单*************"<<endl;
cout<<"* 1.录入学生信息 *"<<endl;
cout<<"* 2.文件读取学生信息 *"<<endl;
cout<<"* 3.输出学生成绩 *"<<endl;
cout<<"* 4.保存学生成绩 *"<<endl;
cout<<"* 5.输出前三名学生信息 *"<<endl;
cout<<"* 6.学生成绩排序 *"<<endl;
cout<<"* 0.退出 *"<<endl;
cout<<"*************学生信息管理菜单*************"<<endl;

while(true)
{
cout<<"请选择操作:";
cin>>choice;

switch(choice)
{
case 1:
manage->add_stu_infor();
break;
case 2:
manage->read_file();
break;
case 3:
manage->print_info_all();
break;
case 4:
manage->write_file();
break;
case 5:
manage->print_good();
break;

case 6:
cout<< "1->平均分从低到高排序 2->平均分从高到低排序 other->quite";
int a;
cin>>a;

if(a == 1)
{
manage->sort_infor(1);
}
else if(a == 2)
{
manage->sort_infor(2);
}
else
{
}
break;

case 0:
return 0;

default:
break;
}

}

return 0;
}

/*
stdafx.h文件没有列出来,在VC6.0下新建一个工程就有该内容
*/

新建一个VC6.0 控制台应用程序->将代码复制到对应的文件上->编译->运行即可追问运行后怎么出现错误?????c:\program files\microsoft visual studio\vc98\include\eh.h(32) : fatal error C1189: #error : "eh.h is only for C++!"

追答如果有需要可以加QQ:564777005 给你发完整源代码

热心网友 时间:2023-10-29 19:47

给我打个包票,我就给你写?
C语言编程题

根据题意:题目1:函数参数是除数(这里传值8),返回满足条件的数字和。题目2:函数参数是要找的项目数(这里传值10),返回对应项的值。include&lt;stdio.h&gt; define MIN 50 define MAX 1000 int fa(int a);//对应题目1的函数,参数:要除的数,返回可以被整除的数之和 int getByIndex(int n)...

问一道C语言编程的问题,看下图

按你的提问,每天都吃一半多两个,第6天剩一个。程序按图片中的程序照猫画虎即可。计算结果,第一天摘了156个桃子,而不是100个。include &lt;stdio.h&gt;int main(){int day,x1,x2;day=5;x2=1;while(day&gt;0){x1=(x2+2)*2;x2=x1;day--;}printf("total=%d\n",x1);return 0;} 用数...

急求c语言编程题目

所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数,使用 rand() 生成随机数之前需要用随机发生器的初始化函数 srand(unsigned seed)(也位于 stdlib.h 中) 进行伪随机数序列初始化,seed 又叫随机种子,通俗讲就是,如果每次提供的 seed 是一样的话,最后每一轮生成的几个随机值也都是一样的,因此叫...

C语言编程题目三道

:an=n1/n2;break; case '%':an=n1%n2;break; } printf("%d%c%d=%d\n",n1,f,n2,an);}include&lt;stdio.h&gt;#include&lt;string.h&gt;void count(char *str1,char *str2);int main(){ char str1[100]={0},str2[8]={0}; gets(str1); scanf("%s",str2); coun...

c语言编程题目求解

题目1:使用if多分支结构:c include&lt;stdio.h&gt; int main(){ int score;printf("请输入学生的成绩:\n");scanf("%d", &amp;score);if(score&gt;=90 &amp;&amp; score&lt;=99){ printf("学生的成绩等级为A\n");}else if(score&gt;=80 &amp;&amp; score&lt;=89){ printf("学生的成绩等级为B\n");}else if(score&gt;=...

C语言编程:如下要求的题目咋写代码?

代码文本:include "stdio.h"int max(int a[],int n,int *p){ for(n--,*p=0;n&gt;=0;n--)if(a[*p]=0;n--)if(a[*p]&gt;a[n])p=n;return a[*p];} int main(int argc,char *argv[]){ int a[20]={13,19,12,9,10,3,7,18,1,11,20,8,2,14,15,16,4,5,6,17},ma...

c语言编程100题,有没有大神帮帮忙

您好,c语言经典100题:【程序1】题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数 都是多少 1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去 掉不满足条件的排列.2.程序源代码:main(){ int i,j,k;printf("\n");for(i1;i&lt;5;i++)/*...

c语言编程题?

C语言编程题 1.(*)求分数序列:1/2,2/3,3/5,5/8,8/13,13/21... 前20项的和。main(){float i=1,j=2,t=0,s,n,m;for(n=1;n&lt;=20;n++)s=i/j,m=i,i=j,j=m+j,t=t+s;printf("t=%f",t);} 2.(*)从键盘输入一个字符串,再将其逆序输出。(如:输入abcde...

[急求助]C语言程序编程题,请高手帮忙解答下!

按照题目要求编写的程序如下(见图)

C语言编程问题:求 1!+2!+3!+...+n!

把sum=sum+x;移到}后、x=1;前。int main(void){ int sum,n,x,t;scanf("%d",&amp;n);for(sum=0,x=t=1;t&lt;=n;sum+=x*=t++);printf("%d\n",sum);return 0;}

C语言编程题 2018年美赛题目C答题思路 linux C编程视频 编程C 编程软件C C语言能实现gui编程吗 C专家编程 C语言窗口编程 C编程的游戏
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
出门遇见送葬的队伍? DNF怎么从新填身份证信息 银行汽车贷款怎么贷 一促销装饮料外包装上印有 600正负30ml,请问正负30ml是什么含义_百度知 ... ...600,各自的配置哪些好哪些不好,或者另推荐辆3000下的好车 社工考试培训机构市场人员怎样在短时间里招到7000个学生? 澳大利亚电影《征服》安娜是谁演的 用征服怎么造句 70级召唤满街觉醒!77级征服者HP竟然没有深渊排队之召唤试图不卡召唤的... 在夜市摆地摊卖铁板鱿鱼如何?投资小风险小,味道不错的话应该比打工强... (2012?南昌一模)热敏电阻PTC元件的主要成分为钡钛矿,其晶体结构如图所示,该结构是具有代表性的最小重 AB的PLC,怎样把程序写到存储卡里 掌上披萨怎么加盟?加盟条件是什么? 求稀缺资源股票中的龙头股三只 为什么热敏电阻对温度有高度灵敏的特性 问题大大啊,请电脑高手进! 请教各位的意见,在北京加盟一家猫眼披萨店 可以赚钱吗? 【求助】低临界相转变温度LCST是什么?? 热敏电阻主要由什么构成? 《仙剑奇侠传5》灵符怎么用 商务车 10万左右 什么牌子的最好? 别只看五菱神车,预算10万,这几款MPV足够商务大气家用体面 电视盒子看直播为什么会卡 怎么解决直播卡 win10 固态硬盘装了win10 机械硬盘里的win10怎么搞? 20以内的加法口诀是怎样的? 用豆浆机打出来的土豆浆为什么颜色是红色的? 幂制红豆浆怎么做 我用九阳豆浆机打红豆浆,发热管糊掉了,是否影响使用,如何去糊味? 九阳豆浆机做红豆和黄豆豆浆怎么做?用哪个模式? 谁知道仙剑奇侠传五怎么贴符,请告诉我详细的操作方法。 下图所示为pic元件(热敏电阻)的主要成分 在大陆如何买港股,怎么开户 披萨加盟店面需要多大面积?披萨加盟有区域保护吗? 比较热电阻 热电偶 热敏电阻的异同点 IPO市场化还需做大量工作吗? 100米用VGA信号怎样实现 进程svchost.exe共有多少个?各占内存多少。。? 怎么找回删掉的微信好友 中了svchost病毒 exe全部感染 膨胀空间 站点披萨加盟店费用多少 微信好友被删了,自己又不知道他的了。怎么找回? 删掉了微信好友,但是又不知道和手机号,怎么加回? 删除微信好友,在不知道对方的情况下怎样才能找回? 我的爸爸作者是谁??? 《我爸爸》这本书里的爸爸为什么总穿着睡衣 我爱我爸爸是美国的哪位作家写的? 我爸爸——启发系列绘本的作者简介 微信好友被删了,自己又不知道他的了。怎么找回? 怎么关暖气阀门 现在掉草鱼在大型水库用什么打窝最好?怎么我老是钓不到大鱼呢》?