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

📄 c++.txt

📁 高校学籍系统
💻 TXT
字号:
#include<iostream>
#include<string>
#include<iomanip>
#include<fstream>
               
using namespace std; 
class student                                         
{ 
protected: 
	int number; 
    char name[20]; 
    char sex[6]; 
    float score[3]; 
public:                                            
    student *next;                                 
    student(){ }                               
    ~student(){ }                                  
    char* getname(){ return name; }                      
    int getnumber(){ return number;} 
    double getscore(int i) { return score[i];} 
    float getg(){ return (score[0]+score[1]+score[2]); } 
    void input() 
	{ 
		int e=1; 
        cout<<"\n请按提示操作:  ";
        cout<<"\n输入编号:  "; 
        cin>>number; 
        cout<<"输入姓名:  "; 
        cin>>name; 
		do
		{ 
			cout<<"输入性别:  "; 
            cin>>sex; 
            if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0) 
			{ 
            cout<<"输入语文分数:  "; 
            cin>>score[0]; 
            cout<<"输入数学分数:  "; 
            cin>>score[1]; 
            cout<<"输入英语分数: "; 
            cin>>score[2]; 
			
            e=0; 
			} 
            else 
			{ 
            cout<<"\n无此类型性别!重新输入!";
	        e=1; 
			}  
		}while(e); 
        return; 
	} 
void input(ifstream & is)                            
{ 
	is>>number>>name>>sex>>score[0]>>score[1]>>score[2]; 
    is.get();                                     
} 
void output() 
{
	 cout<<"\n学生基本信息如下:\n";
     cout<<"编号: "<<number<<"  姓名: "<<name<<"  性别: "<<sex<<endl
		 <<"语文: "<<score[0]<<"  数学: "<<score[1]<<"  英语: "<<score[2]<<endl
		 <<"总成绩: "<<getg()<<"  平均成绩: "<<getg()/3<<endl;
} 
void output(ofstream & os)                       
{
	os<<setw(5)<<number<<left<<setw(10)<<name<<setw(7)<<sex
		<<setw(6)<<score[0]<<setw(6)<<score[1]<<setw(6)<<score[2]<<endl;
} 
}; 

class school                                          
{ 
public: 
	school(){ head=new student; head->next=NULL; key=0; } 
    ~school(){ delete head; }                            
    void input(); 
    void mend(); 
    void del(); 
    int find(student **p,int num,char *pn="^"); 
    void found(); 
    void show(); 
    void count(); 
    void save(); 
    void begin(); 
    void clear(); 
    char mainmenu(); 
    int getkey(){ return key;} 
    void setkey(int k){ key=k; } 
private:                                             
    student *head;                                    
    int key; 
}; 
//录入函数 
void school::input() 
{ 
	student *p,*p2=NULL; 
    p=head;                                           
    int n; 
    while(p->next) 
    p=p->next; 
    while(n) 
	{ 
		p2=new student; 
        p2->input(); 
        p->next=p2; 
        p2->next=NULL;  
        p=p->next;                                    
        school::setkey(1); 
        cout<<"\n按1继续,按0返回主菜单: "; 
        cin>>n; 
	} 
} 
//子查找函数 
int school::find(student **p1,int num,char *pn) 
{ 
    student *p; 
    p=head; 
    while(p->next) 
    { 
	   (*p1)=p; 
       if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) ) 
          return 1; 
       p=p->next; 
    } 
    return 0; 
} 
//查找函数 
void school::found() 
{ 
	student *p; 
    int num=-1,n=9,e=1; 
    char name[20]="^"; 
	while(e)
	{
    do 
	{ 
       cout<<"\n 1.按编号查找       2.按姓名查找:\n"; 
       cin>>n; 
	}while(n<1||n>2); 
    if(n==1) 
	{ 
        cout<<"\n输入编号:  "; 
        cin>>num; 
	} 
    if(n==2) 
	{ 
        cout<<"\n输入姓名:  "; 
        cin>>name; 
	} 
    if(!find(&p,num,name) ) 
	{ 
        cout<<"\n找不到你要查找的内容!"; 
		return; 
	} 
   (p->next)->output();
   school::setkey(1);
   cout<<"\n按1继续,按0返回主菜单:  ";
   cin>>e;
	}
} 
//删除函数 
void school::del() 
{ 
	student *p,*p2; 
    int num,e=1; 
	while(e)
	{
    cout<<"\n输入编号: "; 
    cin>>num; 
    if(!find(&p,num,"^") ) 
	{ 
        cout<<"\n找不到你要删除的内容!";
		return; 
	} 
    (p->next)->output(); 
    p2=p->next; 
    p->next=p2->next; 
    delete p2; 
    school::setkey(1); 
	cout<<"\n按1继续,按0返回主菜单:  ";
	cin>>e;
	}
} 
//显示函数 
void school::show() 
{
	student *p; 
    p=head; 
    while(p->next) 
	{ 
        (p->next)->output(); 
        p=p->next; 
	} 
} 
//修改函数 
void school::mend() 
{ 
    student *p; 
    int num=-1,n,e=1; 
    char name[20]="^"; 
	while(e)
	{
    do 
	{ 
        cout<<"\n1:按编号修改,2:按姓名修改:  "; 
        cin>>n; 
	}while(n<1||n>2); 
    if(n==1) 
	{ 
       cout<<"\n输入编号:  "; 
       cin>>num; 
	} 
    if(n==2) 
	{ 
       cout<<"\n输入姓名:  "; 
       cin>>name; 
	} 
    if( !find(&p,num,name) ) 
	{ 
       cout<<"\n找不到你要修改的内容!";
	   return; 
	} 
    (p->next)->output(); 
    (p->next)->input(); 
    school::setkey(1);
	cout<<"\n按1继续,按0返回主菜单:  ";
	cin>>e;
	}
} 
//保存函数 
void school::save() 
{ 
    student *p; 
    p=head; 
    ofstream os("student.txt",ios::out); 
    if (school::getkey()==1) 
	{ 
        while(p->next) 
		{ 
            (p->next)->output(os); 
            p=p->next; 
		} 
	} 
    cout<<"\n文件已保存! ";
	school::setkey(0); 
} 
//初始化函数 
void school::begin() 
{ 
    student *p,*p2; 
    p=head; 
    clear(); 
    long t; 
    ifstream is("student.txt",ios::in);  
    if(!is) 
	{ 
       ofstream os("student.txt",ios::out); 
       os.close(); 
       return ; 
	} 
    int num=-1; 
    while(1) 
	{ 
        num=-1; 
        t=is.tellg(); 
        is>>num; 
        is.seekg(t); 
        if(num<0) 
		{    
            is.close(); 
            return; 
		} 
        p2=new student; 
        p2->input(is); 
        p->next=p2; 
        p2->next=NULL; 
        p=p->next; 
	} 
} 
//清空函数  
void school::clear() 
{ 
    student *p,*p2; 
    p=head->next; 
    while( p ) 
	{ 
       p2=p; 
       p=p->next; 
       delete p2; 
	} 
} 
//统计函数        
void school::count() 
{ 
    student *p; 
    p=head; 
    int n=0; 
    double g[3]={0,0,0}; 
    float j[3]={0,0,0}; 
    while(p->next) 
	{ 
       p=p->next;  
       n++; 
       for(int i=0;i<3;i++) 
	   {   
            g[i]=g[i]+( p->getscore(i) ); 
            (p->getscore(i) )>=60? j[i]++ : 0 ;
	   }  
	}  
     cout<<"\n语文平均成绩:  "<<g[0]/n<<"  语文及格率:  "<<j[0]/n
		 <<"\n数学平均成绩:  "<<g[1]/n<<"  数学及格率:  "<<j[1]/n
		 <<"\n英语平均成绩:  "<<g[2]/n<<"  英语及格率:  "<<j[2]/n;
} 
//主选菜单函数 
char school::mainmenu() 
{ 
    char n[6]; 
    cout<<"\n\n              ※欢迎进入高校学籍管理系统※\n"

	    <<"★ ★ ★  ★  ★ ★  ★  ★  ★  ★  ★  ★ ★  ★ ★ ★"<<endl 
	    <<"☆ ☆               1:    录入学生信息             ☆ ☆"<<endl 
	    <<"☆ ☆               2:    显示学生信息             ☆ ☆"<<endl  
	    <<"☆ ☆               3:    查找学生信息             ☆ ☆"<<endl
	    <<"☆ ☆               4:    删除学生信息             ☆ ☆"<<endl
	    <<"☆ ☆               5:    修改学生信息             ☆ ☆"<<endl
	    <<"☆ ☆               6:    统计学生成绩             ☆ ☆"<<endl
	    <<"☆ ☆               7:    保存学生信息             ☆ ☆"<<endl
	    <<"☆ ☆               0:    退出管理系统             ☆ ☆"<<endl
	    <<"★ ★ ★  ★  ★ ★  ★  ★  ★  ★  ★  ★ ★  ★ ★ ★"<<endl
	    
	    <<"                  请选择:       "; 
        cin>>n; 
        return n[0]; 
} 
//主函数 
void main() 
{
	school pp; 
    int k=1; 
    char n; 

    pp.begin(); 
    while(k==1)  
	{  
		n=pp.mainmenu(); 
        switch(n) 
		{  
			case '1':pp.input(); break; 
            case '2':pp.show(); break; 
            case '3':pp.found(); break; 
            case '4':pp.del(); break; 
            case '5':pp.mend(); break; 
            case '6':pp.count(); break; 
            case '7':pp.save(); break; 
            case '0': 
				if(pp.getkey()==1) 
				{  
					cout<<"\n是否保存?  1 : 保存 0:不保存 : "; 
                    cin>>k; 
                    if(k==1) 
						pp.save(); 
				}  
				pp.clear(); 
				k=0; 
				break; 
		}  
	}  
}  

⌨️ 快捷键说明

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