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

📄 c++.txt

📁 意外看到的高效学籍管理系统的简单代码
💻 TXT
字号:
//高校学籍管理系统
//头文件及类
#include<iostream>
#include<string>
#include<fstream>

#include<iomanip>                              
using namespace std;

class student                                        
{
protected:                                           
 int number;
 char name[20];
 char sex[6];
 char place[20];
 char nation[6];
 char birth[20];
 char party[10];
 char id[20];
 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<<"\t\t\t按提示输入:"<<endl;
  cout<<"\t\t输入编号: ";
  cin>>number;
  cout<<"\t\t输入姓名: ";
  cin>>name;
  do
  {
    cout<<"\t\t输入性别: ";
    cin>>sex;
    if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0)
    {
      cout<<"\t\t输入籍贯: ";
      cin>>place;
      cout<<"\t\t输入民族: ";
      cin>>nation;
      cout<<"\t\t输入生日: ";
      cin>>birth;
      cout<<"\t\t输入政治面貌: ";
      cin>>party;
      cout<<"\t\t输入身份证号: ";
            cin>>id;
      cout<<"\t\t输入数学分数: ";
      cin>>score[0];
      cout<<"\t\t输入英语分数: ";
      cin>>score[1];
      cout<<"\t\t输入计算机分数: ";
      cin>>score[2];
      e=0;
    }
       else
    {
      cout<<"\t\t\t无此类型性别!重新输入!"<<endl;
      e=1;
    }
  }while(e);
     return ;
 }
 void input(ifstream & is)                           
 {
  is>>number>>name>>sex>>place>>nation>>birth>>party>>id
    >>score[0]>>score[1]>>score[2];
  is.get();                                    
 }
 void output()
 {
  cout<<"学生基本信息如下:"<<endl;
     cout<<"编号:"<<number
      <<"  姓名:"<<name
      <<"  性别:"<<sex
      <<"  籍贯:"<<place
      <<"  民族:"<<nation
      <<"  生日:"<<birth
      <<"  政治面貌:"<<party<<endl
      <<"身份证号:"<<id
      <<"  数学:"<<score[0]
      <<"  英语:"<<score[1]
      <<"  计算机:"<<score[2]
      <<"  总分:"<<getg()<<endl<<endl;
 }
 void output(ofstream & os)                      
 {
  os<<setw(6)<<number
    <<setw(15)<<name
       <<setw(6)<<sex
    <<setw(20)<<place
    <<setw(6)<<nation
    <<setw(20)<<birth
    <<setw(20)<<party
    <<setw(20)<<id
    <<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<<"\t\t\t按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;
 char name[20]="^";
 do
 {
       cout<<"\t\t1:按编号查找,2:按姓名查找: ";
    cin>>n;
 }while(n<1||n>2);
 if(n= =1)
 {
  cout<<"\t\t\t输入编号: ";
     cin>>num;
 }
 if(n= =2)
 {
  cout<<"\t\t\t输入姓名: ";
  cin>>name;
 }
 if(!find(&p,num,name) )
 {
  cout<<"\t\t找不到你要查找的内容!"<<endl;
  return;
 }
 (p->next)->output();
}
//删除函数
void school::del()
{
 student *p,*p2;
 int num;
 cout<<"\t\t\t输入编号: ";
 cin>>num;
 if( !find(&p,num,"^") )
 {
  cout<<"\t\t找不到你要删除的内容!"<<endl;
  return;
 }
 (p->next)->output();
 p2=p->next;
 p->next=p2->next;
 delete p2;
 school::setkey(1);
}
//显示函数
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;
 char name[20]="^";
 do
 {
       cout<<"\t\t1:按编号修改,2:按姓名修改: ";
    cin>>n;
 }while(n<1||n>2);
 if(n==1)
 {
  cout<<"\t\t\t输入编号: ";
     cin>>num;
 }
 if(n==2)
 {
  cout<<"\t\t\t输入姓名: ";
  cin>>name;
 }
 if( !find(&p,num,name) )
 {
  cout<<"\t\t找不到你要修改的内容!"<<endl;
  return;
 }
 (p->next)->output();
 (p->next)->input();
 school::setkey(1);
}
//保存函数
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<<"\t\t\t文件已保存! "<<endl;
 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<<"\t\t\b\b\b\b数学总分:"<<g[0]<<"  平均分:"<<g[0]/n
  <<"  及格率:"<<j[0]/n<<endl<<"\t\t\b\b\b\b英语总分:"<<g[1]
  <<"  平均分:"<<g[1]/n<<"  及格率:"<<j[1]/n<<endl
  <<"\t\t\b\b\b\b计算机总分: "<<g[2]<<"  平均分: "<<g[2]/n
  <<" 及格率:"<<j[2]/n<<endl;
}
//主选菜单函数
char school::mainmenu()
{
 char n[6];
 cout<<"\n\n      ☆☆☆☆欢迎进入高校学籍管理系统☆☆☆☆"<<endl<<endl;
 cout<<"             作者:计算机0403班  王德军           "<<endl<<endl
  <<"* * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
  <<"* * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
  <<"* *              1:    录入学生信息                 * *"<<endl
  <<"* *              2:    显示学生信息                 * *"<<endl
  <<"* *              3:    查找学生信息                 * *"<<endl
  <<"* *              4:    删除学生信息                 * *"<<endl
  <<"* *              5:    修改学生信息                 * *"<<endl
  <<"* *              6:    统计学生成绩                 * *"<<endl
  <<"* *              7:    保存学生信息                 * *"<<endl
  <<"* *              0:    退出系统                     * *"<<endl
  <<"* * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<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<<"\t\t\t是否保存?  1 : 保存 0:不保存 : ";
    cin>>k;
    if(k==1)
      pp.save();
   }
   pp.clear();
   k=0;
   break;
  }
 }
}
//源程序结束

 

⌨️ 快捷键说明

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