资源描述
C++学生学籍管理系统
1、 基础要求:为方便管理一个班同学学籍,编写一个学籍管理系统软件。系统统计必需包含学生姓名、学号、数学、物理、化学、英语、网络等课程成绩。
2、 基础管理功效:
(1) 添加:增加一个同学统计到管理系统中。
(2) 查询:能够依据姓名或学号查找某人相关信息,若找到则显示其信息。
(3) 修改:在管理系统中修改一个同学统计。
(4) 保留:将全部学生学籍信息保留在一个文件中(数据库文件或一般文本文件)。
(5) 读取:从文件中读取已保留了数据。
(6) 删除:从管理系统中删除一条统计。
(7) 恢复:能恢复被删除统计。
(8) 统计:(A)计算各门课程全班平均成绩及总成绩;(B) 统计其课程全班得:100分、 90~99分、80~89分、70~79分、60~69分、59分以下学生人数及全班总人数百分比;(C)以表格形式打印全部学生平均成绩(包含各课总平均成绩)。
(9) 其它:能够依据自己思绪设计其它功效。
PS:我们汇报是手写,所以汇报没有弄上来,不过源程序大家能够看一下,下面是运行界面
剩下功效大家自己试吧,这里就不截图了。
源程序:(头文件#include "stdafx.h"和主函数int main(int argc, char* argv[]) 是建工程时自带,把之前清掉后直接复制即可)
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<cmath>
#include<string>
#include<stdlib.h>
#include<conio.h>
#include<iomanip>
using namespace std;
int n=0,u=0;
int number[5][6]={{0},{0},{0},{0},{0}}; //各门学科分段成绩人数
double point[5][6]={{0},{0},{0},{0},{0}};
double eva[5]={0,0,0,0,0};
string find_name;
string find_num;
int p;
void search(string);
void search(int);
void cunqu_data(); /*存取文件*/
void save_data(); /*保留文件*/
void read_data(); /*读取文件*/
void renew_data(); /*删除恢复*/
void delete_data(int m); /*删除统计*/
void recover_data(); /*恢复统计*/
void set_eva2(); /*课程平均成绩*/
void put_result1();
void put_result2();
void put_result3();
class Student /*定义一个Student类*/
{public:
Student(); /*结构函数*/
void set_eva();
friend void set_massage(int m,Student j[]);/*友元函数*/
friend void add_massage(int m,Student j[]);/*友元函数*/
friend void put_massage(int m,Student j[]);
friend void change_data(int m,Student j[]);/*修改学生信息*/
friend void search_data(); /*查找学生信息*/
friend void search_name(string name);
friend void search_num(string num);
friend void set_number();
friend void set_point();
friend void save_data(); /*保留文件*/
friend void read_data(); /*读取文件*/
friend void delete_data(int m); /*删除统计*/
friend void recover_data(); /*恢复统计*/
friend void set_eva2(); /*课程平均成绩*/
friend void put_result1();
private:
string name; /*姓名*/
string num; /*学号*/
string sex; /*性别*/
double eva; /*学习水平*/
double shuxue; /*数学成绩*/
double wuli; /*物理成绩*/
double huaxue; /*化学成绩*/
double yingyu; /*英语成绩*/
double wangluo; /*网络成绩*/
}stud[200],studl[200];
Student::Student() /*定义结构函数*/
{name="wu";
num="wu";
sex="wu";
shuxue=0;
wuli=0;
huaxue=0;
yingyu=0;
wangluo=0;
}
void Student::set_eva() //计算平均成绩
{eva=(shuxue+wuli+huaxue+yingyu+wangluo)/5;
}
void set_massage(int m,Student j[])
{int i;
for(i=0;i<m;i++)
{cout<<"输入第"<<i+1<<"个学生信息"<<endl;
cout<<"姓名 学号 性别 数学成绩 物理成绩 化学成绩 英语成绩 网络成绩"<<endl;
cin>>j[i].name>>j[i].num>>j[i].sex>>j[i].shuxue>>j[i].wuli>>j[i].huaxue>>j[i].yingyu>>j[i].wangluo;
cout<<'\n';
system("cls");
}}
void add_massage(int m,Student j[])//增加学生信息
{int i;
for(i=n;i<n+m;i++)
{cout<<"输入第"<<i+1<<"个学生信息"<<endl;
cout<<"姓名 学号 性别 数学成绩 物理成绩 化学成绩 英语成绩 网络成绩"<<endl;
cin>>j[i].name>>j[i].num>>j[i].sex>>j[i].shuxue>>j[i].wuli>>j[i].huaxue>>j[i].yingyu>>j[i].wangluo;
system("cls");
}
n=n+m;}
void change_data(int m,Student j[])//修改学生信息
{if(m==0||m>n)
{cout<<"输入错误!"<<endl;getch();}
else
{
cout<<endl;
cout<<" 输入该同学新学籍信息"<<endl;
cout<<" ______________________________ "<<endl;
cout<<"姓名 学号 性别 数学成绩 物理成绩 化学成绩 英语成绩 网络成绩"<<endl;
cin>>j[m-1].name>>j[m-1].num>>j[m-1].sex>>j[m-1].shuxue>>j[m-1].wuli>>j[m-1].huaxue>>j[m-1].yingyu>>j[m-1].wangluo;
system("cls");
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<" 修改成功^_^,按任意键返回主菜单。"<<endl;getch();}
}
void put_massage(int m,Student j[])
{int i;
cout<<" ________________________________________________________________ "<<endl;
cout<<" |序号| 姓 名 | 学 号 |性别|数学|物理|化学|英语|网络|"<<endl;
cout<<" |----|--------|----------|----|----|----|----|----|----|"<<endl;
for(i=0;i<m;i++)
{
cout<<" |";cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<i+1;cout<<"|";
cout<<" "<<setfill('\0')<<setw(7)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].name;cout<<"|";
cout<<setfill('\0')<<setw(10)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].num;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].sex;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].shuxue;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].wuli;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].huaxue;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].yingyu;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(0)<<j[i].wangluo;cout<<"|";
cout<<'\n';}
cout<<" |____|________|__________|____|____|____|____|____|____| "<<endl;
}
void search_data()//查找功效
{char a;
for(a='0';a=='0'||a!='4';)
{system("cls");
cout<<"1.按姓名查找"<<endl<<"2.按学号查找"<<endl<<"3.输出全部学生信息"<<endl<<"4.返回主菜单"<<endl;
cin>>a;
system("cls");
switch(a)
{ case '1':cout<<"输入您需要查找学生姓名: ";cin>>find_name;search_name(find_name);break;
case '2':cout<<"输入您需要查找学号: ";cin>>find_num;search_num(find_num);break;
case '3':cout<<endl;
cout<<" 学生学籍信息"<<endl;
put_massage(n,stud);getch();break;
case '4':break;
default:cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<" 错误指令!按任意键返回。"<<endl;getch();break;
}}
}
void search_name(string name)//按姓名查找
{int i;
bool flag=false;
for(i=0;i<n;i++)
if(stud[i].name==name)
{cout<<" ________________________________________________________________"<<endl;
cout<<" |序号| 姓 名 | 学 号 |性别|数学|物理|化学|英语|网络|"<<endl;
cout<<" |----|--------|----------|----|----|----|----|----|----|"<<endl;
cout<<" |";cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<i+1;cout<<"|";
cout<<" "<<setfill('\0')<<setw(7)<<setiosflags(ios::left)<<stud[i].name;cout<<"|";
cout<<setfill('\0')<<setw(10)<<setiosflags(ios::left)<<stud[i].num;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].sex;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].shuxue;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].wuli;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].huaxue;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].yingyu;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].wangluo;cout<<"|";
cout<<'\n';
cout<<" |____|________|__________|____|____|____|____|____|____| "<<endl;
flag=true;
break;
}
if(flag==false)
cout<<"对不起,暂无此学生信息";
getch();}
void search_num(string num)//按学号查找
{int i;
bool flag=false;
for(i=0;i<n;i++)
if(stud[i].num==num)
{ cout<<" ________________________________________________________________"<<endl;
cout<<" |序号| 姓 名 | 学 号 |性别|数学|物理|化学|英语|网络|"<<endl;
cout<<" |----|--------|----------|----|----|----|----|----|----|"<<endl;
cout<<" |";cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<i+1;cout<<"|";
cout<<" "<<setfill('\0')<<setw(7)<<setiosflags(ios::left)<<stud[i].name;cout<<"|";
cout<<setfill('\0')<<setw(10)<<setiosflags(ios::left)<<stud[i].num;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].sex;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].shuxue;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].wuli;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].huaxue;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].yingyu;cout<<"|";
cout<<" "<<setfill('\0')<<setw(3)<<setiosflags(ios::left)<<stud[i].wangluo;cout<<"|";
cout<<'\n';
cout<<" |____|________|__________|____|____|____|____|____|____| "<<endl;
flag=true;
break;
}
if(flag==false)
cout<<"对不起,暂无此学生信息";
getch();}
void set_number()//number[][] 开始
{int e,f,i,t;
for(e=0,f=0,t=0,i=0;i<n;i++) //100
{if(stud[i].shuxue==100)
t++;
}
number[e][f]=t;
for(e=1,f=0,t=0,i=0;i<n;i++)
{if(stud[i].wuli==100)
t++;
}
number[e][f]=t;
for(e=2,f=0,t=0,i=0;i<n;i++)
{if(stud[i].huaxue==100)
t++;
}
number[e][f]=t;
for(e=3,f=0,t=0,i=0;i<n;i++)
{if(stud[i].yingyu==100)
t++;
}
number[e][f]=t;
for(e=4,f=0,t=0,i=0;i<n;i++)
{if(stud[i].wangluo==100)
t++;
}
number[e][f]=t;
for(e=0,f=1,t=0,i=0;i<n;i++) //90~99
{if(stud[i].shuxue>=90&&stud[i].shuxue<=99)
t++;
}
number[e][f]=t;
for(e=1,f=1,t=0,i=0;i<n;i++) //90~99
{if(stud[i].wuli>=90&&stud[i].wuli<=99)
t++;
}
number[e][f]=t;
for(e=2,f=1,t=0,i=0;i<n;i++) //90~99
{if(stud[i].huaxue>=90&&stud[i].huaxue<=99)
t++;
}
number[e][f]=t;
for(e=3,f=1,t=0,i=0;i<n;i++) //90~99
{if(stud[i].yingyu>=90&&stud[i].yingyu<=99)
t++;
}
number[e][f]=t;
for(e=4,f=1,t=0,i=0;i<n;i++) //90~99
{if(stud[i].wangluo>=90&&stud[i].wangluo<=99)
t++;
}
number[e][f]=t;
for(e=0,f=2,t=0,i=0;i<n;i++) //80~89
{if(stud[i].shuxue>=80&&stud[i].shuxue<=89)
t++;
}
number[e][f]=t;
for(e=1,f=2,t=0,i=0;i<n;i++) //80~89
{if(stud[i].wuli>=80&&stud[i].wuli<=89)
t++;
}
number[e][f]=t;
for(e=2,f=2,t=0,i=0;i<n;i++) //80~89
{if(stud[i].huaxue>=80&&stud[i].huaxue<=89)
t++;
}
number[e][f]=t;
for(e=3,f=2,t=0,i=0;i<n;i++) //80~89
{if(stud[i].yingyu>=80&&stud[i].yingyu<=89)
t++;
}
number[e][f]=t;
for(e=4,f=2,t=0,i=0;i<n;i++) //80~89
{if(stud[i].wangluo>=80&&stud[i].wangluo<=89)
t++;
}
number[e][f]=t;
for(e=0,f=3,t=0,i=0;i<n;i++) //70~79
{if(stud[i].shuxue>=90&&stud[i].shuxue<=99)
t++;
}
number[e][f]=t;
for(e=1,f=3,t=0,i=0;i<n;i++) //70~79
{if(stud[i].wuli>=70&&stud[i].wuli<=79)
t++;
}
number[e][f]=t;
for(e=2,f=3,t=0,i=0;i<n;i++) //70~79
{if(stud[i].huaxue>=70&&stud[i].huaxue<=79)
t++;
}
number[e][f]=t;
for(e=3,f=3,t=0,i=0;i<n;i++) //70~79
{if(stud[i].yingyu>=70&&stud[i].yingyu<=79)
t++;
}
number[e][f]=t;
for(e=4,f=3,t=0,i=0;i<n;i++) //70~79
{if(stud[i].wangluo>=70&&stud[i].wangluo<=79)
t++;
}
number[e][f]=t;
for(e=0,f=4,t=0,i=0;i<n;i++) //60~69
{if(stud[i].shuxue>=60&&stud[i].shuxue<=69)
t++;
}
number[e][f]=t;
for(e=1,f=4,t=0,i=0;i<n;i++) //60~69
{if(stud[i].wuli>=60&&stud[i].wuli<=69)
t++;
}
number[e][f]=t;
for(e=2,f=4,t=0,i=0;i<n;i++) //60~69
{if(stud[i].huaxue>=60&&stud[i].huaxue<=69)
t++;
}
number[e][f]=t;
for(e=3,f=4,t=0,i=0;i<n;i++) //60~69
{if(stud[i].yingyu>=60&&stud[i].yingyu<=69)
t++;
}
number[e][f]=t;
for(e=4,f=4,t=0,i=0;i<n;i++) //60~69
{if(stud[i].wangluo>=60&&stud[i].wangluo<=69)
t++;
}
number[e][f]=t;
for(e=0,f=5,t=0,i=0;i<n;i++) //59以下
{if(stud[i].shuxue>=0&&stud[i].shuxue<=59)
t++;
}
number[e][f]=t;
for(e=1,f=5,t=0,i=0;i<n;i++) //59以下
{if(stud[i].wuli>=0&&stud[i].wuli<=59)
t++;
}
number[e][f]=t;
for(e=2,f=5,t=0,i=0;i<n;i++) //59以下
{if(stud[i].huaxue>=0&&stud[i].huaxue<=59)
t++;
}
number[e][f]=t;
for(e=3,f=5,t=0,i=0;i<n;i++) //59以下
{if(stud[i].yingyu>=0&&stud[i].yingyu<=59)
t++;
}
number[e][f]=t;
for(e=4,f=5,t=0,i=0;i<n;i++) //59以下
{if(stud[i].wangluo>=0&&stud[i].wangluo<=59)
t++;
}
number[e][f]=t;
}
void set_point() //point[][]
{int e,f;
for(e=0;e<5;e++)
{for(f=0;f<6;f++)
point[e][f]=number[e][f]/(n*1.0)*100;}
}
void set_eva2() /*课程平均成绩*/
{double s;int i;
for(i=0,s=0;i<n;i++)
{s=s+stud[i].shuxue;}
eva[0]=s/(n*1.0);
for(i=0,s=0;i<n;i++)
{s=s+stud[i].wuli;}
eva[1]=s/(n*1.0);
for(i=0,s=0;i<n;i++)
{s=s+stud[i].huaxue;}
eva[2]=s/(n*1.0);
for(i=0,s=0;i<n;i++)
{s=s+stud[i].yingyu;}
eva[3]=s/(n*1.0);
for(i=0,s=0;i<n;i++)
{s=s+stud[i].wangluo;}
eva[4]=s/(n*1.0);
}
void put_result() //输出统计结果
{char g;
for(g='0';g=='0'||g!='4';)
{
system("cls");
cout<<"1.查询每位学生总平均分"<<endl<<"2.查询各课成绩分布及平均成绩"<<endl<<"3.查询各段成绩所占百分比"<<endl<<"4.返回主菜单"<<endl;
cin>>g;
system("cls");
switch(g)
{case '1':put_result1();getch();break;
case '2':put_result2();getch();break;
case '3':put_result3();getch();break;
case '4':break;
default:cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<" 错误指令!按任意键返回。"<<endl;getch();break;
}
}}
void put_result1()//每位学生总平均分
{int e;
cout<<" 学生总平均分 "<<endl;
cout<<" ___________________"<<endl;
cout<<" |姓 名|平均成绩|"<<endl;
cout<<" |-------|--------|"<<endl;
for(e=0;e<n;e++)
{cout<<" |";cout<<setfill('\0')<<setw(6)<<setiosflags(ios::right)<<stud[e].name<<" "<<"|";cout<<setfill('\0')<<setw(6)<<setiosflags(ios::right)<<stud[e].eva<<" "<<"|"<<endl;
}
cout<<" |_______|________|"<<endl;
}
void put_result2() //输出统计结果2
{int e,f;
cout<<" 各课成绩分布及平均成绩 "<<endl;
cout<<" _______________________________________________________________"<<endl;
cout<<" |课 程| 100 |90~99|80~89|70~79|60~69|60以下|平均分|"<<endl;
cout<<" |-----|------|------|------|------|------|------|------|"<<endl;
cout<<" |";cout<<"数 学|";for(e=0,f=0;f<6;f++){cout<<setfill('\0')<<setw(4)<<setiosflags(ios::right)<<number[e][f]<<" "<<"|";}cout<<" "<<setfill('\0')<<setw(5)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(1)<<eva[0]<<"|"<<endl;
cout<<" |";cout<<"物 理|";for(e=1,f=0;f<6;f++){cout<<setfill('\0')<<setw(4)<<setiosflags(ios::right)<<number[e][f]<<" "<<"|";}cout<<" "<<setfill('\0')<<setw(5)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(1)<<eva[1]<<"|"<<endl;
cout<<" |";cout<<"化 学|";for(e=2,f=0;f<6;f++){cout<<setfill('\0')<<setw(4)<<setiosflags(ios::right)<<number[e][f]<<" "<<"|";}cout<<" "<<setfill('\0')<<setw(5)<<setiosflags(ios::left)<<setiosflags(ios::fixed)<<setprecision(1)<<eva[2]<<"|"<<endl;
cout<<" |";cout<<"英 语|";for(e=3,f=0;f<6;f++){cout<<setfill('\0')<<setw(4)<<s
展开阅读全文