回 帖 发 新 帖 刷新版面

主题:高手帮忙改成类

#include<fstream>
#include<iostream>
#include<time.h> 
#include<stdlib.h>
#include<string>
#include<conio.h>
#include"password.h"

char filename[15]={""}; // 存放文件名

struct stu
{
    int xh;
    char xm[10];
    float cj;
}x[61]={0,"",0};
int num;

void Inputnjxx(char nj[]) // 年级
{
    time_t timer; 
    struct tm *tblock; 
    int year;
    timer=time(NULL); // 获取机器的日期
    tblock=localtime(&timer); 
    year=tblock->tm_year+1900;
    if(tblock->tm_mon<8)
    {
        do
        {
            cout<<"   请输入年级("<<year-1<<"或";
            cout<<year-2<<"或";
            cout<<year-3<<"):";
            cin>>nj;
            if(atoi(nj)>year-1 || atoi(nj)<year-3)
                cout<<"      年级越界!请重新输入!\n";
        }while(atoi(nj)>year-1 || atoi(nj)<year-3 );
    }
    else
    {
        do
        {
            cout<<"   请输入年级("<<year<<"或";
            cout<<year-1<<"或";
            cout<<year-2<<"):";
            cin>>nj;
            if(atoi(nj)>year || atoi(nj)<year-2)
                cout<<"      年级越界!请重新输入!\n";
        }while(atoi(nj)>year || atoi(nj)<year-2 );
    }
}

void Inputxbzy(char xbzy[]) // 输入系别、专业编号
{
    fstream outfile;
    struct xuex
    {
        char xiname[20],zhuanye[10][20];        
    }xx[10];
    int i,j;
    char xb[3],zy[3];
    outfile.open("Xuexiaoxinxi.dat",ios::in);
    if(!outfile)
    {
        cout<<"Xuexiaoxinxi.dat can't open.\n";
        abort();
    }
    outfile.read((char *)xx,sizeof(xx));
    cout<<"\n\n\t编号\t系名\n ";
    i=0;
    while(strcmp(xx[i].xiname,"")!=0)
    {
        cout<<"\t"<<i+1<<"\t"<<xx[i].xiname<<"\n";
        i++;
    }
    cout<<"\n      请选择系编号:";
    cin>>xb;
    cout<<"\n\n\t编号\t专业名\n ";
    i=atoi(xb)-1;
    j=0;
    while(strcmp(xx[i].zhuanye[j],"")!=0)
    {
        cout<<"\t"<<j+1<<"\t"<<xx[i].zhuanye[j]<<"\n";
        j++;
    }
    cout<<"\n      请选择专业编号:";
    cin>>zy;
    strcat(xbzy,xb);
    strcat(xbzy,zy);
    outfile.close();
}

void Inputxxjbxx()  // 输入学校基本信息,存入数组xx中
{
    fstream outfile;
    struct xuex
    {
        char xiname[20],zhuanye[10][20];        
    }xx[10]={""};
    int i,j,num,zynum;
    outfile.open("Xuexiaoxinxi.dat",ios::out);
    if(!outfile)
    {
        cout<<"Xuexiaoxinxi.dat can't open.\n";
        abort();
    }
    cout<<"   您是第一次使用本系统,请建立教学系的有关信息!\n\n";
    do    // 限制输入的系数   
    {
        cout<<"   请输入学校系数(1-10):"; 
        cin>>num;
        if(num<1 || num>10)
            cout<<"\t 系数越界,请输入1-10!"<<endl;
    }while(num<1 || num>10);
    for(i=0;i<num;i++)
    {
        cout<<"   请输入第 "<<i+1<<" 个系的名称:";
        cin>>xx[i].xiname;
    }
    cout<<"\n\n   请输入各系的专业名称!\n";
    for(i=0;i<num;i++)
    {
        cout<<"\n   下面输入 "<<xx[i].xiname<<" 各专业的名称\n\n";
        do  // 限制输入的专业数   
        {
            cout<<"   请输入专业数(1-10):"; 
            cin>>zynum;
            if(zynum<1 || zynum>10)
                cout<<"\t 专业数越界,请输入1-10!"<<endl;
        }while(zynum<1 || zynum>10);
        for(j=0;j<zynum;j++)
        {
            cout<<"   请输入第 "<<j+1<<" 个专业的名称:";
            cin>>xx[i].zhuanye[j];    
        }    
    }
    outfile.write((char *)xx,sizeof(xx));    
    outfile.close();
    system("color F9");
    cout<<"\n\n\n\t\t\t欢 迎 登 录 径 赛 成 绩 管 理 系 统  "<<endl<<endl<<endl;
}

void Inputbjxx()   // 输入班级基本信息产生文件名
{
    char nianji[5],xbzy[6]="",bj[3];
    fstream outfile;
    outfile.open("Xuexiaoxinxi.dat",ios::in);
    if(!outfile)
    {
        Inputxxjbxx();    // 输入学校基本信息        
    }
    strcpy(filename,"");
    cout<<"   请输入班级基本信息:\n";
    Inputnjxx(nianji);
    strcat(filename,nianji);
    Inputxbzy(xbzy);
    strcat(filename,xbzy);
    cout<<"\n      班级编号(如1):";
    cin>>bj;
    strcat(filename,bj);
}

void Inputxsxx()    // 输入学生基本信息
{
    fstream outfile;
    int i,num;
    outfile.open(filename,ios::out);
    if(!outfile)
    {
        cout<<"filename can't open.\n";
        abort();
    }
    x[0].xh=1;
    cout<<"请输入该班的人数:";
    cin>>num;
    cout<<"下面请输入每个人的姓名。\n";
    cout<<"学号\t姓名\n";
    for(i=0;i<num;i++)
    {
        cout<<x[i].xh<<"\t";
        cin>>x[i].xm;        
        x[i+1].xh=x[i].xh+1;
    }
    x[i].xh=0;
    outfile.write((char *)x,sizeof(x));    
    outfile.close();
}

void fzjishi()     // 分组计时
{
    int i,rs,xh[11];;
    char anykey;
    clock_t start,finish;
    double totaltime[11]={0},tim;    
    fstream outfile;        
    outfile.open(filename,ios::in|ios::out); 
    outfile.read((char *)x,sizeof(x)); //读数据
    do                 // 限制输入的人数   
    {
        cout<<"\n请输入本组人数(1-10):"; 
        cin>>rs;
        if(rs<1 || rs>10)
            cout<<"每组人数越界,请输入1-10!"<<endl;
    }while(rs<1 || rs>10);
    cout<<"按任意键开始! \n按任意键取时间,按n/N键终止! "<<endl; 
    anykey=getch();
    start=clock();        // 取机器时间
    for(i=1;i<=rs;i++)
    { 
        while(!kbhit())   // 若没有键按下
        {
            cout<<"\r";
            finish=clock();   // 再取机器时间
            tim=(double)(finish-start)/1000;  // 计算时间
            cout<<tim;
        }
        totaltime[i]=tim;  // 记录时间
        cout<<"\t第 "<<i<<" 名 "<<endl;
        anykey=getch();
        if(anykey=='n'||anykey=='N') // 按n/N键终止
            break;
    }
    for(i=1;i<=rs;i++)
    {
        cout<<"请输入第 "<<i<<" 名 的学号:";
        cin>>xh[i];
    }
    cout<<"\n\n              成绩"<<endl<<endl;
    for(i=1;i<=rs;i++)
    {
        cout<<" 第 "<<i<<" 名 的成绩为 "<<totaltime[i]<<" 秒!学号:";
        cout<<xh[i]<<" 姓名:"<<x[xh[i]-1].xm<<endl; 
        x[xh[i]-1].cj=totaltime[i];
    }
    outfile.seekp(0,ios::beg);
    outfile.write((char *)x,sizeof(x));  // 回写数据 
    outfile.close();
}

void Printxx()
{
    fstream outfile;
    outfile.open(filename,ios::in); 
    outfile.read((char *)x,sizeof(x)); // 读数据
    char ynn,choice;
    int i;
    do
    {
        system("cls");
        cout<<"**********************************************"<<endl;
        cout<<"*                 输 出 程 序                *"<<endl;
        cout<<"**********************************************"<<endl<<endl;
        cout<<"           1. 显示所有学生成绩"  <<endl<<endl;
        cout<<"           2. 显示部分学生成绩"  <<endl<<endl;
        cout<<"           3. 显示某个学生成绩"  <<endl<<endl;
        cout<<"           4. 显示前n名学生成绩" <<endl<<endl;
        cout<<"           0. 退出输出"          <<endl<<endl;
        cout<<"**********************************************"<<endl;
        cout<<"      请选择(0-4):";
        cin>>choice;
        switch(choice)
        {
        case '1':
            i=0;
            cout<<"\n\n  "<<filename<<" 班径赛成绩"<<endl<<endl;
            cout<<"学号\t姓名\t成绩\n";
            while(x[i].xh!=0)
            {    
                cout<<x[i].xh<<"\t"<<x[i].xm<<"\t"<<x[i].cj<<endl;
                i++;
            }
            num=i;
            break;
        case '2': 
            int startxh,endxh;
            cout<<"请输入起始学号(如1):";
            cin>>startxh;
            cout<<"请输入终止学号(如30):";
            cin>>endxh;
            cout<<"学号\t姓名\t成绩\n";
            for(i=startxh;i<=endxh;i++)
                cout<<x[i-1].xh<<"\t"<<x[i-1].xm<<"\t"<<x[i-1].cj<<endl;
            break;
        case '3': 
            int mxh;
            cout<<"请输入学生的学号(如30):";
            cin>>mxh;
            cout<<"学号\t姓名\t成绩\n";
            cout<<x[mxh-1].xh<<"\t"<<x[mxh-1].xm<<"\t"<<x[mxh-1].cj<<endl;
            break;
        case '4': 
            //对数组先排序再输出
            int j,n;
            struct stu t;
            for(i=0;i<num-1;i++)
                for(j=i+1;j<num;j++)
                    if(x[i].cj>x[j].cj)
                    {
                        t.xh=x[i].xh; x[i].xh=x[j].xh; x[j].xh=t.xh;
                        strcpy(t.xm,x[i].xm); strcpy(x[i].xm,x[j].xm); strcpy(x[j].xm,t.xm);
                        t.cj=x[i].cj; x[i].cj=x[j].cj; x[j].cj=t.cj;
                    }
            cout<<"请输入n=";
            cin>>n;
            cout<<"学号\t姓名\t成绩\n";
            for(i=0;i<n;i++)
                cout<<x[i].xh<<"\t"<<x[i].xm<<"\t"<<x[i].cj<<endl;                        
            break;
        case '0': break;
        }
        outfile.close();
        cout<<"\n\n是否返回主菜单(y/n)? ";
        cin>>ynn;
    }while(ynn=='n'||ynn=='N');
}
void main() 

    char yn,choice;
    system("color F9");
    cout<<"\n\n\n\t\t\t欢 迎 登 录 径 赛 成 绩 管 理 系 统  "<<endl<<endl<<endl;
       InputUserName();
    InputPassWord();
    Inputbjxx();       // 输入班级基本信息
    do
    {
        system("cls");
        system("color 1f");
        cout<<"**********************************************"<<endl;
        cout<<"*          欢 迎 使 用 径 赛 程 序           *"<<endl;
        cout<<"**********************************************"<<endl<<endl;
        cout<<"           1. 输入学生基本信息"   <<endl<<endl;
        cout<<"           2. 分组计时"           <<endl<<endl;
        cout<<"           3. 显示径赛成绩"       <<endl<<endl;
        cout<<"           4. 修改用户和密码"       <<endl<<endl;
        cout<<"           0. 退出系统"           <<endl<<endl;
        cout<<"**********************************************"<<endl;
        cout<<"    请选择(0-4):";
        cin>>choice;
        switch(choice)
        {
        case '1':
                Inputxsxx();
                break;
        case '2':
                fzjishi();
                break;
        case '3':
                Printxx();
                break;
        case '4':
                ModifyUser();
                break;
        case '0':break;
        }
        cout<<"\n\n是否结束程序(y/n)? ";
        cin>>yn;
    } while(yn=='n' || yn=='N');
}

回复列表 (共1个回复)

沙发

/*stdent.h
#include "...."

class student
{
  public:
      student(int,char[10],float);
      ~student();
      int xh;
      char xm[10];
      float cj;
      void Inputnjxx(char nj[]);
      .......    
};
*/
/*student.cpp
student::student(int,char[10],float)
{.....}
.......
*/
/*main
......
*/

我来回复

您尚未登录,请登录后再回复。点此登录或注册