辅导学生管理系统程序、讲解学生管理系统、学生管理软件系统开发

- 首页 >> OS编程

#include"iostream"

#include"fstream"

#include"iomanip"

using namespace std;

class person//基本信息

{

public:    

void add();

protected:

char name[10];

char* sex;

};



class student:public person//继承 person 类

{

public:

void add();

void add2();

void grade();

void menue();

void reader();

void searchname();

void searchroom();

void searchnumber();

void disp();

int room1(){return room;};

int number1(){return number;};

void searchgrade();

double gradedisp();

void dispname();

void paixu();

private:

int number;

int room;

char tel[20];//定义学号  宿舍号  电话号码

char cnum[5];

char cname[15];

int xuefen;

int pingshif;

int shiyanf;

int juanmianf;

double totalxuefen;

double score;//定义课程号  课程名  学分  平时成绩  实验成绩  卷面成绩 综合分  总学分

};

 


bool comp(char s1[],char s2[]);          //比较两个字符串相等

void person::add()        

{

char choose;

cout<<"请输入姓名:  ";

cin>>name;

cout<<endl;

label1:cout<<"请选择性别:"<<"\t";

       cout<<"A、男"<<"\t"<<"B、女"<<endl;

       cout<<"请输入你的选择:";

       cin>>choose;

       if(choose=='a'||'A')

   sex="男";

       else if(choose=='b'||'B')

   sex="女";

       else {cout<<"输入有误,请重新选择!"<<endl;

       goto label1;};

}


void student::disp()//显示

{

cout<<endl<<"                 姓  名: "<<name<<endl;

cout<<"                 学  号: "<<number<<endl;

cout<<"                 性  别: "<<sex<<endl;

cout<<"                 电话号码: "<<tel<<endl<<endl;

}

void student::dispname()

{cout<<name;}

void student::add()

{

cout<<"*******************************录入学生信息*******************************"<<endl;

cout<<"请输入学号:  ";

cin>>number;

cout<<endl;

person::add();

cout<<"请输入宿舍号:  ";

cin>>room;

cout<<endl;

cout<<"请输入电话号码: ";

cin>>tel;

cout<<endl;


}

void student::add2()//写入函数

{

student a;

a.add();

fstream file("a.txt",ios::out|ios::app); //打开文件,指针指向文件尾

file.write((char*)&a,sizeof(a));//把类信息写入文件

file.close(); //关闭文件

cout<<"信息已经被保存"<<endl;

}

void student::searchname()//按姓名查询

{

cout<<"请输入所要查询的学生姓名:  ";

char name2[10];

cin>>name2;

student a;

fstream file("a.txt",ios::in);//打开文件,指针在文件头

file.read((char*)&a,sizeof(a));  //读取类信息

while(!file.eof())               //判断文件指针是否到文件尾

{

if(comp(a.name,name2))       //判断输入的字符是否与文件中的一样

a.disp();                  //如一样的话,显示信息

file.read((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

file.close();                    //关闭文件

}

void student::searchroom()

{

cout<<"请输入所要查询的宿舍号:  ";

int roomnum;

cin>>roomnum;            

student a;                        //第一个学生类的对象

fstream file("a.txt",ios::in); //打开文件,指针在文件头

file.read((char*)&a,sizeof(a));   //读取类信息

while(!file.eof())                //判断指针是否在文件尾

{

if(a.room1()==roomnum)             //判断输入宿舍号是否与文件中的宿舍号一样

a.disp();                  //如果一样的话,显示信息

file.read((char*)&a,sizeof(a)); //如果指针没到文件尾,继续读取

}

file.close();                      //关闭文件

}

void student::searchnumber()//按学号查询

{

cout<<"请输入所要查询的学号:";

int number2;

cin>>number2; //输入学号

student a;                //第一个学生类的对象

fstream file("a.txt",ios::in);  //二进制打开文件。指针在文件头

file.read((char*)&a,sizeof(a));  //读取类信息

while(!file.eof())               //判断指针是否在文件尾

{

if(a.number1()==number2)       //判断输入的学号是否与文件中的一样

a.disp();    

file.read((char*)&a,sizeof(a));//如果指针没到文件尾,继续读取

}

file.close();                     //关闭文件

}


void student::menue()

{

cout<<"             *******************学生管理系统*************************      "<<endl;

cout<<"             *                                                      *"<<endl;

cout<<"             *              1、 添加学生信息                        *"  <<endl;                

cout<<"             *              2、 添加学生成绩                        * "<<endl;

cout<<"             *              3、 查询学生信息                        *"<<endl;

cout<<"             *              4、 查询学生成绩                        *"<<endl;

cout<<"             *              5、 学生成绩排序                        *"<<endl;

   cout<<"             *              6、 退出系统                            *"<<endl;

cout<<"             *                                                      *"<<endl;

cout<<"             ********************************************************       "<<endl;

}

void student::reader()

{

cout<<"             *******************查询学生信息*************************      "<<endl;

cout<<"             *                                                      *"<<endl;

cout<<"             *              1、 按姓名查询                          *"<<endl;                  

cout<<"             *              2、 按学号查询                          *"<<endl;

cout<<"             *              3、 按宿舍号查询                        *"<<endl;

cout<<"             *              4、 返回主菜单                          * "<<endl;

cout<<"             ********************************************************"<<endl;

}


bool comp(char s1[],char s2[])        //比较文件中字符和输入的字符是否相同

{

int i=0;

while(s1[i]!='\0'&&s2[i]!='\0'&&s1[i]==s2[i])

i++;

if(s1[i]=='\0'  &&s2[i]=='\0')

return 1;

else

return 0;

};

void student::grade()

{

cout<<"*******************************录入学生成绩*******************************"<<endl;

cout<<"请输入学号: ";

cin>>number;

cout<<endl;

cout<<"请输入课程号: ";

cin>>cnum;

cout<<endl;

cout<<"请输入课程名: ";

cin>>cname;

cout<<endl;

label2:cout<<"请输入学分: ";

cin>>xuefen;

if(!(xuefen>=0&&xuefen<=10))

{cout<<"输入错误,请输入0到10的整数:"<<endl;

goto label2;}

cout<<endl;

label3:cout<<"请输入平时成绩: ";

cin>>pingshif;

if(!(pingshif>=0&&pingshif<=100))

{cout<<"输入错误,请输入0到100的整数:"<<endl;

goto label3;}

cout<<endl;

label4:cout<<"请输入实验成绩: ";

cin>>shiyanf;

if(!(shiyanf>=-1&&shiyanf<=100))

{cout<<"输入错误,范围是-1到100的整数:"<<endl;

goto label4;}

cout<<endl;

label5:cout<<"请输入卷面成绩: ";

cin>>juanmianf;

cout<<endl;

};

void student::searchgrade()

{

cout<<"请输入所要查询的学号:  ";

int gradenum,i;

double t;

totalxuefen=0;

i=0;

cin>>gradenum;

student b;//定义一个学生类的对象

fstream file("b.txt",ios::in);

file.read((char*)&b,sizeof(b));//打开文件。指针在文件头

 //读取类信息

while(!file.eof())                //判断指针是否在文件尾

{

if(b.number1()==gradenum)             //判断输入学号是否与文件中的学号一样

{

t=b.gradedisp();      //如果一样的话,显示信息

        i++;

totalxuefen=totalxuefen+t;

   }

file.read((char*)&b,sizeof(b));

//如果指针没到文件尾,继续读取

}

file.close();

cout<<"共  修:"<<i<<"科"<<"\t"<<"\t"<<"实得总学分:"<<totalxuefen<<endl;

};


double student::gradedisp()

{

double p;

student a;

if(shiyanf==-1)

p=pingshif*0.3+juanmianf*0.7;

else p=pingshif*0.15+shiyanf*0.15+juanmianf*0.7;

if(p>=90&&p<=100)

score=xuefen*1;

else if(p>=80&&p<90)

score=xuefen*0.8;

else if(p>=70&&p<80)

score=xuefen*0.75;

else if(p>=60&&p<70)

 score=xuefen*0.6;

else score=xuefen*0;

cout<<endl;

   cout<<"学    号:"<<number<<"\t"<<"姓    名:";

   fstream file("a.txt",ios::in); //打开文件,指针在文件头

file.read((char*)&a,sizeof(a));   //读取类信息

while(!file.eof())                //判断指针是否在文件尾

{

if(a.number1()==number)             //判断输入学号是否与文件中的学号一样

{a.dispname();               //如果一样的话,显示信息

break;}

file.read((char*)&a,sizeof(a)); //如果指针没到文件尾,继续读取

}

file.close();                      //关闭文件

cout<<endl;

cout<<"课程编号:"<<cnum<<"\t"<<"课程名称:"<<cname<<"\t"<<"综合成绩:" <<p<<"\t"<<"实得学分:"<<score<<endl;

return score;

}

void student::paixu()

{

int n;

int t,m;

student dd[30];

ifstream file;

file.open("b.txt",ios_base::in|ios_base::binary);

for(n=0;n<30;n++)

{

file.read(reinterpret_cast<char*>(&dd[n]),sizeof(student));

}

   file.close();

for(int i=0;i<30;i++)

for(int j=0;j<30;j++)

{

if(dd[i].xuefen>dd[j].xuefen)

{

t=dd[i].xuefen;

dd[i].xuefen=dd[j].xuefen;

dd[j].xuefen=t;

m=dd[i].number;

dd[i].number=dd[j].number;

dd[j].number=m;

}

}

cout<<"学号:"<<"  "<<"学分:"<<endl;

for(i=0;i<30;i++)

 

cout<<dd[i].number<<"       "<<dd[i].xuefen<<endl;

};


 void  main()  //主程序

 {

student a;

int x1,x2;

do

{

a.menue();//主菜单

cout<<"请选择你的操作:";

cin>>x1;//输入选项

switch(x1)//主菜单选择

{

case 1:

a.add2 ();

break;

case 2:

{

a.grade();

fstream file("b.txt",ios::out|ios::app); //打开文件,指针指向文件尾

       file.write((char*)&a,sizeof(a));//把类信息写入文件

       file.close();

cout<<"信息已经保存"<<endl;

break;

}

case 3:

do

{  

a.reader();

   cout<<"请输入操作号:";

cin>>x2;

switch(x2)

{

case 1:

a.searchname();

break;

case 2:

a.searchnumber();

break;

case 3:

a.searchroom();

break;

}

}while(x2!=4);break;

case 4:

a.searchgrade();

break;

       case 5:

a.paixu();

break;

}

}while(x1!=6);

cout<<"************************ 成功退出本系统!!!********************************";

cout<<endl;

}


站长地图