⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.cpp

📁 there s something you can have a look
💻 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<<"学号           姓名       语文      数学      英语"<<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.按学号查询"<<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<<"学号:";
                    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.按学号删除"<<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<<"学号:";
                    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.修改学号"<<endl;
				cout<<"\t 2.修改姓名"<<endl;			
				cout<<"\t 3.修改语文成绩"<<endl;
				cout<<"\t 4.修改数学成绩"<<endl;
				cout<<"\t 5.修改英语成绩"<<endl;
				cout<<"\t 0.返回上层菜单"<<endl;
				cout<<"********************************"<<endl<<"your choice: ";
				cin>>c;
				if(c=='0')
				{
					return;
				}
				else if(c=='1')
				{										
					cout<<"老学号:"; cin>>condition1;
					cout<<endl<<"新学号:"; cin>>condition2;
					f1.Stu_Edit(condition1,condition2,0);
				}
				else if(c=='2')
				{
					cout<<"学号:";cin>>condition1;
					cout<<"新姓名:";cin>>condition2;
					f1.Stu_Edit(condition1,condition2,1);
				}			
				else if(c=='3')
				{
					cout<<"学号:";cin>>condition1;
					cout<<"新语文成绩:";cin>>condition2;
					f1.Stu_Edit(condition1,condition2,2);
				}			
				else if(c=='4')
				{
					cout<<"学号:";cin>>condition1;
					cout<<"新数学成绩:";cin>>condition2;
					f1.Stu_Edit(condition1,condition2,3);
				}			
				else if(c=='5')
				{
					cout<<"学号:";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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -