#include<iostream>
#include<fstream>
#include<string>
#include <cstring>
#include<iomanip>
using namespace std;
#define M 200 //可以存資訊總量
const char Name[16]="administrator";//定義內部用戶名
const char P[16]="123456789";//定義內部密碼
int N=0; //學生總量
class student
{
public:
student();
void set(); //初始化資訊,第一次對資訊的錄入
void add(); //添加學生資訊
void del(); //洗掉某學生資訊
void change(); //修改某學生資訊
void search(); //查詢某學生資訊
void display(); //顯示全部學生資訊
void scoreturn(); //按照成績對學生進行重新排序
private:
static int num;
string name,sex,politic,address;
int Cscore;
};
int student::num=130500;
student::student() {}
///初始化檔案
student stu;
void StuSystem()
{
char ch;
void menu();
menu();
cin>>ch;
while(ch!='0')
{
system("cls");
switch(ch)
{
case '1':stu.set();break;
case '2':stu.add();break;
case '3':stu.del();break;
case '4':stu.change();break;
case '5':stu.search();break;
case '6':stu.display();break;
case '7':stu.scoreturn();break;
case '0':cout<<"退出系統!";break;
default:cout<<"沒有此選項!"<<endl;break;
}
menu();
cin>>ch;
}
}//將主程式代碼封裝,然后利用該封裝包,進行用戶登錄功能的撰寫
void student::set()
{
int i;
string setname,setsex,setpolitic,setaddress;
int setCscore;
//int studentscore;
ofstream outfile;
outfile.open("學生管理系統.txt",ios::out); //----打開檔案----
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1);
}
//----依次錄入相應個數的學生資訊----
for(i=0;i<M;i++)
{
cout<<"當姓名輸入為“0”時,停止輸入!!!"<<endl;
cout<<"請輸入姓名:"<<endl;
cin>>setname;
name=setname;
if(setname=="0") break;
if(setname!="0")
{
N++;
num++;
outfile<<num<<" ";
outfile<<setname<<" ";
cout<<"請輸入C++的成績:"<<endl;
cin>>setCscore;
Cscore=setCscore;
outfile<<setCscore<<" ";
cout<<"請輸入性別:"<<endl;
cin>>setsex;
sex=setsex;
outfile<<setsex<<" ";
cout<<"請輸入政治面貌:"<<endl;
cin>>setpolitic;
politic=setpolitic;
outfile<<setpolitic<<" ";
cout<<"請輸入家庭住址:"<<endl;
cin>>setaddress;
address=setaddress;
outfile<<setaddress<<endl;
}
}
outfile.close(); //----關閉檔案----
}
///添加檔案
void student::add()
{
string addname,addsex,addpolitic,addaddress;
int addCscore;
//----以追加的方式錄入資訊,直接將資訊追加到以前檔案的末尾----
ofstream outfile("學生管理系統.txt",ios::app);
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1);
}
N=N+1;
//----依次輸入相應的資料,并且追加到之前的檔案中去----
cout<<"請輸入您要添加的資料"<<endl;
num++;
outfile<<num<<" ";
cout<<"請輸入姓名:"<<endl;
cin>>addname;
outfile<<addname<<" ";
cout<<"請輸入C++的成績:"<<endl;
cin>>addCscore;
outfile<<addCscore<<" ";
cout<<"請輸入性別:"<<endl;
cin>>addsex;
outfile<<addsex<<" ";
cout<<"請輸入政治面貌:"<<endl;
cin>>addpolitic;
outfile<<addpolitic<<" ";
cout<<"請輸入家庭住址:"<<endl;
cin>>addaddress;
outfile<<addaddress<<endl;
outfile.close();
cout<<"已添加成功!"<<endl;
}
///洗掉檔案
void student::del()
{
int k,i;
int num[M];
string name[M],sex[M],politic[M],address[M];
int Cscore;
ifstream infile("學生管理系統.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
for(i=0;i<N;i++)
{
cout<<" ";
infile>>num[i];
cout<<setw(9)<<num[i];
infile>>name[i];
cout<<setw(9)<<name[i];
infile>>Cscore;
cout<<setw(9)<<Cscore;
infile>>sex[i];
cout<<setw(9)<<sex[i];
infile>>politic[i];
cout<<setw(9)<<politic[i];
infile>>address[i];
cout<<setw(9)<<address[i]<<endl;
}
cout<<"你想洗掉第幾個?"<<endl;
cin>>k;
k=k-1;
infile.close();
ofstream outfile("學生管理系統.txt",ios::out);
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1); //退出程式
}
//----將陣列存取的資訊輸出到檔案中去----
for(i=0;i<N;i++)
{
if(i!=k)
{
outfile<<num[i]<<" ";
outfile<<name[i]<<" ";
outfile<<Cscore<<" ";
outfile<<sex[i]<<" ";
outfile<<politic[i]<<" ";
outfile<<address[i]<<" "<<endl;
}
}
outfile.close();
N=N-1;
cout<<"已洗掉成功!"<<endl;
}
///修改檔案
void student::change()
{
int i,k;
int num[M];
string name[M],sex[M],politic[M],address[M];
int Cscore[M];
ifstream infile("學生管理系統.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
for(i=0;i<N;i++)
{
cout<<" ";
infile>>num[i];
cout<<setw(9)<<num[i];
infile>>name[i];
cout<<setw(9)<<name[i];
infile>>Cscore[i];
cout<<setw(9)<<Cscore;
infile>>sex[i];
cout<<setw(9)<<sex[i];
infile>>politic[i];
cout<<setw(9)<<politic[i];
infile>>address[i];
cout<<setw(9)<<address[i]<<endl;
}
infile.close();
ofstream outfile("學生管理系統.txt",ios::out);
if(!outfile)
{
cerr<<" open error"<<endl;
exit(1);
}
cout<<"你想修改第幾個資料?"<<endl;
cin>>k;
k=k-1;
cout<<"請輸入新的資料:"<<endl;
cout<<"請輸入姓名:"<<endl;
cin>>name[k];
cout<<"請輸入C++成績:"<<endl;
cin>>Cscore[k];
cout<<"請輸入性別:"<<endl;
cin>>sex[k];
cout<<"請輸入政治面貌:"<<endl;
cin>>politic[k];
cout<<"請輸入家庭住址:"<<endl;
cin>>address[k];
for(i=0;i<N;i++)
{
outfile<<num[i]<<" ";
outfile<<name[i]<<" ";
outfile<<student::Cscore<<" ";
outfile<<sex[i]<<" ";
outfile<<politic[i]<<" ";
outfile<<address[i]<<" "<<endl;
}
outfile.close();
cout<<"已修改成功!"<<endl;
}
///查詢檔案
void student::search()
{
int i,n,w=0,num[M],a[M];char ch;
string searchname,name[M],sex[M],politic[M],address[M],b[M][4];
int Cscore;
cout<<"a.按學號查找 b.按姓名查找"<<endl;
ifstream infile("學生管理系統.txt",ios::in);
if(!infile)
{
cerr<<" open error"<<endl;
exit(1);
}
for(i=0;i<N;i++)
{
infile>>num[i];a[i]=num[i];
infile>>name[i];b[i][0]=name[i];
infile>>Cscore;b[i][1]=Cscore;
infile>>sex[i];b[i][2]=sex[i];
infile>>politic[i];b[i][3]=politic[i];
infile>>address[i];b[i][4]=address[i];
}
cout<<"請輸入a或者b!"<<endl;
cin>>ch;
if(ch=='a')
{
cout<<"請輸入學號!"<<endl;
cin>>n;
for(i=0;i<N;i++)
if(a[i]==n)
{
w=1;
cout<<" 學號 姓名 C++成績 性別 政治面貌 家庭住址"<<endl;
cout<<" ";
cout<<setw(9)<<a[i];
cout<<setw(9)<<b[i][0];
cout<<setw(9)<<b[i][1];
cout<<setw(9)<<b[i][2];
cout<<setw(9)<<b[i][3];
cout<<setw(9)<<b[i][4]<<endl;
}
if(w==0)
cout<<"無此人資訊!"<<endl;
}
else if(ch=='b')
{
cout<<"請輸入姓名!"<<endl;
cin>>searchname;
for(i=0;i<N;i++)
if(name[i]==searchname)
{
w=1;
cout<<" 學號 姓名 C++成績 性別 政治面貌 家庭住址"<<endl;
cout<<" ";
cout<<setw(9)<<a[i];
cout<<setw(9)<<b[i][0];
cout<<setw(9)<<b[i][1];
cout<<setw(9)<<b[i][2];
cout<<setw(9)<<b[i][3];
cout<<setw(9)<<b[i][4]<<endl;
}
if(w==0)
cout<<"無此人資訊!"<<endl;
}
else cout<<"沒有此選項!"<<endl;
}
///顯示檔案
void student::display()
{
int k,num;
string name,sex,politic,address;
int Cscore;
ifstream infile("學生管理系統.txt",ios::in);
if(!infile)
{
cerr<<" 0open error"<<endl;
exit(1);
}
cout<<" 學號 姓名 C++成績 性別 政治面貌 家庭住址"<<endl;
for(k=0;k<N;k++)
{
cout<<" ";
infile>>num;
cout<<setw(9)<<num;
infile>>name;
cout<<setw(9)<<name;
infile>>Cscore;
cout<<setw(9)<<Cscore;
infile>>sex;
cout<<setw(9)<<sex;
infile>>politic;
cout<<setw(9)<<" "<<politic;
infile>>address;
cout<<setw(9)<<" "<<address<<endl;
}
infile.close();
}
//根據分數進行排序
void student::scoreturn()
{
int Cscore[M];
ofstream outfile("學生管理系統.txt",ios::app);
<<Cscore[M]<<endl;
}
void main()
{
char Username[16],password[16];
cout<<" 歡迎進入學生管理系統 !"<<endl;
cout<<"請輸入管理員的用戶名:"<<endl;
cin>>Username;
if(!strcmp(Username ,Name)) //Username==Name
{
cout<<"請輸入管理員密碼:" <<endl;
cin>>password;
if(!strcmp(password,P)) //strcmp () ;
{
cout<<"恭喜你成功登錄選課系統!"<<endl;
StuSystem();
}else
cout<<"您輸入的密碼不正確!不能進入管理系統!"<<endl;
}else
cout<<"您輸入的用戶名不正確!不能進入系統查看學生資訊。"<<endl;
}
void menu()
{
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;
}
uj5u.com熱心網友回復:
,先把資料讀入到一個student陣列中,然后根據分數用插入排序或選擇排序進行排序,需要交換資料時可以直接交換兩個學生的資料,更高效的方法是建立一個索引陣列,然后對索引陣列進行排序,最后按照索引陣列輸出就行轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/118617.html
標籤:基礎類
