#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include <fstream>
using namespace std;
typedef struct student{
string name;
int Chinese,English,Math,Physical,Society,Number,people=20,save;
double average=0;
}STUDENT;
int id,now=0,i,ch,n;
STUDENT s[20];
double fi=s[20].average;
double se=s[20].average;
double th=s[20].average;
string l,lk,lkk;
int sx,ssx,sssx;
void menu(){
cout<<"\t\t學生成績管理系統\t\t"<<endl;
cout<<"==========★ ☆ 1.增加學生成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 2.查詢學生成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 3.修改統計成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 4.排序學生成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 5.儲存學生成績 ☆ ★=========="<<endl;
cout<<"==========★ ☆ 0.安全退出系統 ☆ ★=========="<<endl;
cout<<" 請輸入您的選擇 :";
}
void modify(){
if(now!=0)
{
cout<<"幾號(1~20):";
cin>>id;
cout<<"1(全科更改\t2(姓名更改\t";
cout<<"3(國文更改\t4(英文更改"<<endl<<endl;
cout<<"5(數學更改\t6(理化更改\t";
cout<<"7(社會更改\t8(退出"<<endl<<endl;
cout<<"請輸入您的選擇:";
cin>>ch;
switch (ch){
case 1:
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"請輸入國文:";
cin>>s[i].Chinese;
cout<<"請輸入英文:";
cin>>s[i].English;
cout<<"請輸入數學:";
cin>>s[i].Math;
cout<<"請輸入理化:";
cin>>s[i].Physical;
cout<<"請輸入社會:";
cin>>s[i].Society;
s[i].average=(s[i].Chinese+s[i].English+s[i].Math+s[i].Physical+s[i].Society)/5;
cout<<"=======================";
cout<<"======================="<<endl;
}break;
case 2:
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"請輸入姓名:";
cin>>s[i].name;
}break;
case 3:
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"請輸入國文:";
cin>>s[i].Chinese;
}break;
case 4:
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"請輸入英文:";
cin>>s[i].English;
}break;
case 5:
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"請輸入數學:";
cin>>s[i].Math;
}break;
case 6:
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"請輸入理化:";
cin>>s[i].Physical;
}break;
case 7:
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"請輸入社會:";
cin>>s[i].Society;
}break;
case 8:
break;}
if(i>=now)cout<<"尚未新增學生成績\n";
}
if(now==0)cout<<"\n無資料可修改\n\n";
for(i=0;i<now;i++)
if(id==s[i].Number){
s[i].average=(s[i].Chinese+s[i].English+s[i].Math+s[i].Physical+s[i].Society)/5;
}
}
void cover(){
if(now!=0){
cout<<"已有資料是否重疊 1(是 2(否"<<endl;
cin>>n;
switch (n){
case 1:
cout<<"請輸入國文:";
cin>>s[i].Chinese;
cout<<"請輸入英文:";
cin>>s[i].English;
cout<<"請輸入數學:";
cin>>s[i].Math;
cout<<"請輸入理化:";
cin>>s[i].Physical;
cout<<"請輸入社會:";
cin>>s[i].Society;
s[i].average=(s[i].Chinese+s[i].English+s[i].Math+s[i].Physical+s[i].Society)/5;
cout<<"=======================";
cout<<"======================="<<endl;
break;
case 2:
break;
}
}
}
void add(){
cout<<"=============================================="<<endl;
cout<<"班級人數:20人\n";
cout<<"請輸入學生座號:";
cin>>s[now].Number;
if(s[now].Number>=21||s[now].Number<=0){
cout<<"輸入錯誤請重新輸入\n";
return add();
}
for(i=0;i<now;i++)
if(s[i].save==s[now].Number){
return cover();
}
cout<<"\n請輸入學生姓名:";
cin>>s[now].name;
cout<<"請輸入國文成績:";
cin>>s[now].Chinese;
if(s[now].Chinese>=101||s[now].Chinese<=-1){
cout<<"輸入錯誤\n請重新輸入\n請輸入國文成績:";
cin>>s[now].Chinese;
if(s[now].Chinese>=101||s[now].Chinese<=-1){
cout<<"第二次輸入錯誤\n請重新填寫座號\n";
return add();
}
}
cout<<"請輸入英文成績:";
cin>>s[now].English;
if(s[now].English>=101||s[now].English<=-1){
cout<<"輸入錯誤\n請重新輸入\n請輸入英文成績:";
cin>>s[now].English;
if(s[now].English>=101||s[now].English<=-1){
cout<<"第二次輸入錯誤\n請重新填寫座號\n";
return add();
}
}
cout<<"請輸入數學成績:";
cin>>s[now].Math;
if(s[now].Math>=101||s[now].Math<=-1){
cout<<"輸入錯誤\n請重新輸入\n請輸入數學成績:";
cin>>s[now].Math;
if(s[now].Math>=101||s[now].Math<=-1){
cout<<"第二次輸入錯誤\n請重新填寫座號\n";
return add();
}
}
cout<<"請輸入物理成績:";
cin>>s[now].Physical;
if(s[now].Physical>=101||s[now].Physical<=-1){
cout<<"輸入錯誤\n請重新輸入\n請輸入理化成績:";
cin>>s[now].Physical;
if(s[now].Physical>=101||s[now].Physical<=-1){
cout<<"第二次輸入錯誤\n請重新填寫座號\n";
return add();
}
}
cout<<"請輸入社會成績:";
cin>>s[now].Society;
if(s[now].Society>=101||s[now].Society<=-1){
cout<<"輸入錯誤請\n重新輸入\n請輸入社會成績:";
cin>>s[now].Society;
if(s[now].Society>=101||s[now].Society<=-1){
cout<<"第二次輸入錯誤\n請重新填寫座號\n";
return add();
}
}
cout<<"==============================================\n";
s[now].average=(s[now].Chinese+s[now].English+s[now].Math+s[now].Physical+s[now].Society)/5;
s[now].save=s[now].Number;
now++;
}
void find() {
if(now!=0)
{
cout<<"幾號(1~20):";
cin>>id;
for(i=0;i<now;i++)
if(id==s[i].Number){
cout<<"姓名:"<<s[i].name<<"\t";
cout<<"國文:"<<s[i].Chinese<<"分\t";
cout<<"英文:"<<s[i].English<<"分\t";
cout<<"數學:"<<s[i].Math<<"分\t";
cout<<"理化:"<<s[i].Physical<<"分\t";
cout<<"社會:"<<s[i].Society<<"分\t";
cout<<"平均:"<<s[i].average<<"分\t";
cout<<endl<<"=============================================="<<endl;
break;
}
if(i>=now)
cout<<"尚未新增學生成績"<<endl;
}
if(now==0)cout<<"\n查無資料\n\n";
}
void save() {
char data[20];
fstream file;
file.open("成績.txt",ios::out);
if(file.fail())
cout<<"檔案無法開啟\n";
else
{
file<<"姓名\t座號\t國文\t英文\t數學\t理化\t社會\t平均\n";
for(i=0;i<now;i++){
file<<s[i].name<<"\t";
file<<s[i].Number<<"\t";
file<<s[i].Chinese<<"\t";
file<<s[i].English<<"\t";
file<<s[i].Math<<"\t";
file<<s[i].Physical<<"\t";
file<<s[i].Society<<"\t";
file<<s[i].average<<"\t"<<endl;
}
file<<endl<<endl<<"第一名是:"<<l<<endl<<"座號:"<<sx<<endl<<"平均:"<<fi<<"分"<<endl;
file<<"第二名是:"<<lk<<endl<<"座號:"<<ssx<<endl<<"平均:"<<se<<"分"<<endl;
file<<"第三名是:"<<lkk<<endl<<"座號:"<<sssx<<endl<<"平均:"<<th<<"分"<<endl;
cout<<"建立檔案,file寫入完成\t";
}
system("pause");
}
void sort(){
for(i=0;i<20;i++){
if(s[i].average>fi){
fi=s[i].average;
l=s[i].name;
sx=s[i].Number;
}
}
for(i=0;i<20;i++){
if(s[i].average<fi&&s[i].average>se){
se=s[i].average;
lk=s[i].name;
ssx=s[i].Number;
}
}
for(i=0;i<20;i++){
if(s[i].average<se&&s[i].average>th){
th=s[i].average;
lkk=s[i].name;
sssx=s[i].Number;
}
}
cout<<"第一名是:"<<l<<endl<<"座號:"<<sx<<endl<<"平均:"<<fi<<endl;
cout<<"第二名是:"<<lk<<endl<<"座號:"<<ssx<<endl<<"平均:"<<se<<endl;
cout<<"第三名是:"<<lkk<<endl<<"座號:"<<sssx<<endl<<"平均:"<<th<<endl;
}
int main(void){
while(1){
menu();
cin>>ch;
switch(ch){
case 1:
add();
break;
case 2:
find();
break;
case 3:
modify();
break;
case 4:
sort();
break;
case 5:
save();
break;
case 0:
return -1;
}
}return 0;
}