功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3门课程成绩。系统
要求实现以下功能:
1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);
2、信息查询:输入学号,查询学生各门课程的成绩,并显示。
3、排序:按各门课程的成绩平均分进行排序,并显示。
4、信息删除与修改——输入学号,删除该学生的成绩信息。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。
2、建立一个文件,将每位学生的信息写入文件中并能显示于屏幕上。
3、完成上述信息查询(学生学号、姓名等)、排序、信息删除与修改功能。
jkl_1.h 头文件#ifndef JKL_1_H_INCLUDED
#define JKL_1_H_INCLUDED
#include
#include
#include
#include
#include
#include
using namespace std;
struct student
{
int number;
char name[40];
char sex[4];
int score[3];
int avg;
};
bool GreaterSort(student a,student b);
ostream &operator<<(ostream &os,student a);
void Input(const char*fileDat);
void Inquire(const char*fileDat);
int Change(const char*fileDat);
void Modify(const char*fileDat);
void Search(const char*fileDat);
void Delete(const char*fileDat);
void Add(const char*fileDat);
void Modify(const char*fileDat);
void Stusort(const char*fileDat);
bool Search(const char*fileDat,int num);
int endMark(student stu);
#endif // JKL_1_H_INCLUDED
main.cpp
#include
#include "jkl_1.h"
#include
using namespace std;
const char*fileDat="c:/StudentDates";
int main()
{
char choice;
while(1)
{
system("cls");
cout<<"**********************************************"<>choice;
switch(choice)
{
case'1':Input(fileDat); break;
case'2':Inquire(fileDat);break;
case'3':Change(fileDat);break;
case'4':Modify(fileDat);break;
// case'5':Add(fileDat);break;
case'6':Delete(fileDat);break;
case'7':Stusort(fileDat);break;
case'q':
case'Q':cout<<"退出系统\n";return 0;
// default:cout<<"输入错误,请再输入";
}
}
}
Change.cpp 查询功能
#include "jkl_1.h"
#include
int Change(const char*fileDat){
ifstream fin;
fin.open(fileDat);
if(!fin.is_open()){cout<<"文件打开失败";}
else {
cout<<"1:按学号查询\n2:按姓名查询\n";
int n;
cin>>n;
if(n==1){
int num;
cout<<"输入要查询的学号:";
cin>>num;
student stu;
while(fin.read((char*)&stu,sizeof stu)) {
if(stu.number==num)
{ num=0;
cout<>name;
int num =1;
student stu;
while(fin.read((char*)&stu,sizeof stu)) {
if(!strcmp(name,stu.name))
{ num=0;
cout<
Delete.cpp 删除功能
#include "jkl_1.h"
#include
ostream &operator<<(ostream &os,student a){os< vec;
ifstream fin;
fin.open(fileDat);
if(!fin.is_open()){cout<<"文件打开失败";}
else {
student stu;
while(fin.read((char *)&stu,sizeof stu))
{
stu.avg=(stu.score[0]+stu.score[1]+stu.score[2])/3;
vec.push_back(stu); }
fin.close();
int num;
cout<<"输入要删除的学号:";
cin>>num;
if(Search(fileDat,num)) {
vector::iterator it =vec.begin();
for(;it!=vec.end();it++)
{
if(it->number==num)
{
vec.erase(it);
cout<<"删除成功!";
break;
}
}
ofstream fout;
fout.open(fileDat,ios_base::binary);
if(!fout.is_open()){cout<<"文件打开失败!";}
else {
for(auto it=vec.begin();it!=vec.end();it++)
{
fout.write((char *)&*it,sizeof stu);
}
fout.close();
}
}
else {cout<<"学号不存在!\n";}
}
system("pause");
}
Input.cpp 插入记录功能
#include"jkl_1.h"
void Input(const char*fileDat)
{
ofstream fout;
student stu;
cout<<"输入学生学号,学号为0表示结束输入:";
cin>>stu.number;
while(stu.number!=0){
if(Search(fileDat,stu.number)) cout<<"此学号已经存在重新输入!\n";
else {
cout<<"输入学生姓名:";
cin>>stu.name;
cout<<"输入学生性别:";
cin>>stu.sex;
cout<<"输入学生三科成绩:";
cin>>stu.score[0]>>stu.score[1]>>stu.score[2];
fout.open(fileDat,ios_base::out|ios_base::app|ios_base::binary);
if(!fout.is_open()){cout<<"打开文件失败!!";fout.close();break;}
else
fout.write((char *)&stu,sizeof(stu));
fout.close();
}
cout<<"输入学生学号,学号为0表示结束输入:";
cin>>stu.number;
}
system("pause");
}
Inquire.cpp 查询学生信息
#include "jkl_1.h"
#include
using namespace std;
void Inquire(const char*fileDat){
ifstream fin;
fin.open(fileDat);
if(!fin.is_open()){cout<<"文件打开失败!";}
else {
student stu;
while( fin.read((char *)&stu,sizeof(stu))){
cout<
Modify.cpp 修改数据功能
#include "jkl_1.h"
void Modify(const char*fileDat){
int gps;
ifstream fin;
fin.open(fileDat,ios_base::in|ios_base::binary);
if(!fin.is_open()){cout<<"文件打开失败";}
else{
int num;
cout<<"输入要修改的学号:";
cin>>num;
student stu;
while(!fin.eof())
{
gps=fin.tellg();
cout<<"编号"<>stu.score[0]>>stu.score[1]>>stu.score[2];
fstream fout;
fout.open(fileDat,ios_base::in|ios_base::out|ios_base::binary);
if(!fout.is_open()){cout<<"文件打开失败!";}
else {
if(gps!=0)fout.seekp(gps);
fout.write((char *)&stu,sizeof stu);
cout<<"修改成功!";
fout.close();
}
}
}
system("pause");
}
Search.cpp 搜索功能
#include "jkl_1.h"
bool Search(const char*fileDat,int num){
ifstream fin(fileDat,ios_base::in|ios_base::binary);
if(!fin.is_open()) cout<<"ËÑË÷Îļþ´ò¿ª´íÎó£¡";
else
{ student stu;
while(fin.read((char *)&stu,sizeof stu))
if(stu.number==num) {fin.close();return true;}
}
fin.close();
return false;
}
Stusort.cpp 排序功能
#include "jkl_1.h"
bool GreaterSort(student a,student b){return a.avg>b.avg;}
void Stusort(const char*fileDat){
vector vec;
ifstream fin;
fin.open(fileDat);
if(!fin.is_open()){cout<<"文件打开失败"; fin.close();}
else {
student stu;
while(fin.read((char *)&stu,sizeof stu))
{ stu.avg=(stu.score[0]+stu.score[1]+stu.score[2])/3;
vec.push_back(stu);
}
fin.close();
sort(vec.begin(),vec.end(),GreaterSort);
ofstream fout;
fout.open(fileDat);
if(!fout.is_open()){cout<<"文件打开失败!"; fout.close();}
else {
for(auto it=vec.begin();it!=vec.end();it++)
{
fout.write((char *)&*it,sizeof stu);
}
fout.close();
}
}
cout<<"排序完成!\n";
system("pause");
}