?? student.cpp
字號:
#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip>
#define Max_Size 100
using namespace std;
class Student{
public:
char Stu_Number[13];
char Stu_Name[9];
int R_Math;
int R_Chinese;
int R_English;
int Current_Size;
Student();
void enter();
};
Student::Student(){
Current_Size=0;
}
void Student::enter(){
cout<<"Stu_Number:";cin>>Stu_Number;
cout<<endl<<"Stu_Name:"; cin>>Stu_Name;
cout<<endl<<"R_Math:";cin>>R_Math;
cout<<endl<<"R_Chinese:";cin>>R_Chinese;
cout<<endl<<"R_English:";cin>>R_English;
cout<<endl;
}
/////////////////////////////////////////////////////////////////////////////
class File{
protected:
char *File_Name;
Student student;
public:
File(){
File_Name="data.txt";
student.Current_Size=0;
ifstream infile(File_Name);
for(string s;getline(infile,s);)
++student.Current_Size;
infile.close();
}
void Stu_Serch(string num="whole",string stu_num="",string stu_name="");
void Stu_Add();
void Stu_Del(string stu_num,string stu_name);
void Stu_Edit(string stu_num1,string stu_num2,int num);
};
void File::Stu_Serch(string num,string stu_num,string stu_name){
ifstream infile(File_Name);
int total_records=0;
bool flag=false;
if(!infile){
cout<<"open file failure!";return;
}
for(string s;getline(infile,s);){
string ss=s,number1,number2;
istringstream sin(s);sin>>number1;sin>>number2;
if(stu_num==string(number1) || stu_name==string(number2) || num==string("whole")){
if(!flag){
cout<< "//////////////////////////RECORDS///////////////////////////////"<<endl;
cout<<"學(xué)號 姓名 語文 數(shù)學(xué) 英語"<<endl;
}
cout<<ss<<endl;++total_records;
flag=true;
}
}
student.Current_Size=(num=="whole" ? total_records:student.Current_Size);
infile.close();
cout<<(!flag ? "FIND NO RECORD!\n":"");
if(flag){
cout<<"\nTOTAL_RECORD:"<<total_records<<endl;
cout<< "//////////////////////////////////////////////////////////////"<<endl;
}
}
void File::Stu_Add(){
ofstream outfile(File_Name,ios::app);char c;
if(!outfile){
cout<<"open file failure!";return;
}
while(1){
outfile.close();
system("cls");
if(student.Current_Size!=0)
Stu_Serch("whole");
ofstream outfile(File_Name,ios::app);
student.enter();
outfile<<left<<setw(15)<<student.Stu_Number;
outfile<<left<<setw(11)<<student.Stu_Name;
outfile<<left<<setw(10)<<student.R_Chinese;
outfile<<left<<setw(10)<<student.R_Math;
outfile<<left<<setw(10)<<student.R_English<<endl;
++student.Current_Size;
cout<<"anymore?(y/n):";cin>>c;
outfile.close();
if(c=='n'){system("cls"); Stu_Serch("whole");system("pause");break;}
system("cls");
}
}
void File::Stu_Del(string stu_num,string stu_name){
if(stu_num==string("whole")){
ofstream outfile(File_Name);
system("cls");
outfile.close();
cout<<" 0 RECORD EXIST! "<<endl;
return;
}
system("cls");int total_del=0;
ifstream infile(File_Name);
string ss[Max_Size];
for(int i=0;getline(infile,ss[i]);i++);
infile.close();
ofstream outfile(File_Name);
string s1,s2;
for(i=0;i<student.Current_Size;i++){
istringstream sin(ss[i]);sin>>s1;sin>>s2;
if(!(stu_num==string(s1) || stu_name==string(s2))){
outfile<<ss[i]<<endl;
}
else ++total_del;
}
outfile.close();
Stu_Serch("whole");
cout<<" "<<total_del<<" RECORDS DELETED!"<<endl<<endl;
system("pause");
system("cls");
}
void File::Stu_Edit(string stu_num1,string stu_num2,int num){
system("cls");
int total_edit=0;
if(student.Current_Size==0){
cout<<"THERE IS NO RECORD!";
return;
}
ifstream infile(File_Name);
string ss[Max_Size];
for(int i=0;getline(infile,ss[i]);i++);
infile.close();
ofstream outfile(File_Name);
string s[5];
for(i=0;i<student.Current_Size;i++){
istringstream sin(ss[i]);
sin>>s[0];sin>>s[1];sin>>s[2];sin>>s[3];sin>>s[4];
if(stu_num1==string(s[0])){
s[num]=stu_num2;++total_edit;
outfile<<left<<setw(15)<<string(s[0]);
outfile<<left<<setw(12)<<string(s[1]);
outfile<<left<<setw(10)<<string(s[2]);
outfile<<left<<setw(10)<<string(s[3]);
outfile<<left<<setw(10)<<string(s[4]);
outfile<<endl;
}
else{
outfile<<ss[i]<<endl;
}
}
Stu_Serch("whole");
cout<<" "<<total_edit<<" RECORDS MODIFIED!"<<endl<<endl;
outfile.close();
system("pause");
system("cls");
}
//////////////////////////////////////////////////////////////////////
class Menu{
protected:
File f1;
public:
void print_seach();
void print_main();
void print_edit();
void print_del();
Menu()
{
print_main();
}
};
void Menu::print_seach(){
char c;
string condition;
//system("cls");
while(1)
{
system("cls");
cout<<"********************************"<<endl;
cout<<"\t 1.按學(xué)號查詢"<<endl;
cout<<"\t 2.按姓名查詢"<<endl;
cout<<"\t 3.查詢?nèi)繉W(xué)生"<<endl;
cout<<"\t 0.返回上層菜單"<<endl;
cout<<"********************************"<<endl<<"your choice: ";
cin>>c;
if(c=='0')
{
return;
}
else if(c=='1')
{
cout<<"學(xué)號:";
cin>>condition;
system("cls");
f1.Stu_Serch("",condition,"");
system("pause");
}
else if(c=='2')
{
cout<<"姓名:";
cin>>condition;
system("cls");
f1.Stu_Serch("","",condition);
system("pause");
}
else if(c=='3')
{
system("cls");
f1.Stu_Serch("whole");
system("pause");
}
else
{
cout<<"選擇錯誤,請選擇0,1,2,3其中之一"<<endl;
system("pause");
}
}
}
void Menu::print_del(){
char c;
string condition;
system("cls");
while(1)
{
cout<<"********************************"<<endl;
cout<<"\t 1.按學(xué)號刪除"<<endl;
cout<<"\t 2.按姓名刪除"<<endl;
cout<<"\t 3.清空記錄 "<<endl;
cout<<"\t 0.返回上層菜單"<<endl;
cout<<"********************************"<<endl<<"your choice: ";
cin>>c;
if(c=='0')
{
return;
}
else if(c=='1')
{
cout<<"學(xué)號:";
cin>>condition;
f1.Stu_Del(condition,"");
}
else if(c=='2')
{
cout<<"姓名:";
cin>>condition;
f1.Stu_Del("",condition);
}
else if(c=='3'){
cout<<"ARE YOU SURE YOU WANT TO DELETE ALL RECORDS!(y/n):";cin>>c;
if(c=='y') f1.Stu_Del("whole","");
system("pause");system("cls");return;
}
else
{
cout<<"選擇錯誤,請選擇0,1,2,3其中之一"<<endl;
}
}
}
void Menu::print_edit(){
char c;
string condition1;
string condition2;
system("cls");
while(1)
{
cout<<"********************************"<<endl;
cout<<"\t 1.修改學(xué)號"<<endl;
cout<<"\t 2.修改姓名"<<endl;
cout<<"\t 3.修改語文成績"<<endl;
cout<<"\t 4.修改數(shù)學(xué)成績"<<endl;
cout<<"\t 5.修改英語成績"<<endl;
cout<<"\t 0.返回上層菜單"<<endl;
cout<<"********************************"<<endl<<"your choice: ";
cin>>c;
if(c=='0')
{
return;
}
else if(c=='1')
{
cout<<"老學(xué)號:"; cin>>condition1;
cout<<endl<<"新學(xué)號:"; cin>>condition2;
f1.Stu_Edit(condition1,condition2,0);
}
else if(c=='2')
{
cout<<"學(xué)號:";cin>>condition1;
cout<<"新姓名:";cin>>condition2;
f1.Stu_Edit(condition1,condition2,1);
}
else if(c=='3')
{
cout<<"學(xué)號:";cin>>condition1;
cout<<"新語文成績:";cin>>condition2;
f1.Stu_Edit(condition1,condition2,2);
}
else if(c=='4')
{
cout<<"學(xué)號:";cin>>condition1;
cout<<"新數(shù)學(xué)成績:";cin>>condition2;
f1.Stu_Edit(condition1,condition2,3);
}
else if(c=='5')
{
cout<<"學(xué)號:";cin>>condition1;
cout<<"新英語成績:";cin>>condition2;
f1.Stu_Edit(condition1,condition2,4);
}
else
{
cout<<"選擇錯誤,請選擇0,1,2,3,4,5其中之一"<<endl;
}
}
}
void Menu::print_main(){
char c;
while(1)
{
system("cls");
cout<<"********************************"<<endl;
cout<<"\t 1.查詢"<<endl;
cout<<"\t 2.新增"<<endl;
cout<<"\t 3.修改"<<endl;
cout<<"\t 4.刪除"<<endl;
cout<<"\t 0.退出程序"<<endl;
cout<<"********************************"<<endl<<"your choice: ";
cin>>c;
if(c=='0')
{
cout<<"bye........"<<endl;
return;
}
else if(c=='1')
{
print_seach();
}
else if(c=='2')
{
f1.Stu_Add();
}
else if(c=='3')
{
print_edit();
}
else if(c=='4')
{
print_del();
}
else
{
cout<<"選擇錯誤,請選擇0,1,2,3,4其中之一"<<endl;
}
}
}
///////////////////////////////////////////////////////////////////////////
void main(){
Menu menu;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -