2 u010541197 u010541197 于 2013.06.17 13:50 提问

将类中的成员函数写出来后,报错:本地函数非法
c++

#include
#include
#include
#include
#include
#include
using namespace std;
class Student{
private:
string name[10];//姓名
int number;//学号
int age;//年龄
char xingbie;// 性别
char banji;//班级
string birthday;//出生年月
string dizhi;//地址
string phone;//电话
string mail;//E-mail
double cpro,english,math,sport,java,allscore,average;//课程

public:
Student();
char choose();
void input();
void add();
void change();
void delete1();

    void findname();
    void findnumber();
    void output();
    void order();
    void save();

};
char choose()
{ system("cls");
cout<<"**************欢迎使用学生管理系统**************"< cout cout cout cout cout cout cout cout cout cout cout cout cout cout cout cout char choose;
cin>>choose;

  return choose;

}

void main()
{

   Student v;

// char choose=v.choose();
while(choose=v.choose())
Student s[50];//指针对象,最多存50个学生数据
ofstream *file[50]; //负责对文件插入操作
int i=0;
int j=0;
//int flag=0;//flag判断输入是否有效
//do {
//cin>>p;
//if((p>='0'&&p<='9'))
//flag=1;
//else
// cout<<" 指令错误!请重新输入:"<<endl;
//}while(flag==0);
//do{

switch(choose)                 //接收功能选项
{
    case '0':  
    v.input();
    break;
    case '1':
    v.add();
    break;
    case '2':       
    v.change();
    break;
    case '3': 
    v.delete1();
    break;
    case '4':
    v.findname();
    break;
    case '5':
    v.findnumber();
    break;
    case '6':
    v.output();
    break;
    case '7':
    v.order();
    break;
    case '8':
    v.save();
    break;
    case '9':
     default:cout<<"错误"<<endl;
         break;

}

void Student::input()
{ char c;
string name;//姓名
string number;//学号
int age;//年龄
char xingbie[8];// 性别
char banji[4];//班级
string birthday;//出生年月
string dizhi;//地址
string phone;//电话
string mail;//E-mail
double cpro,english,math,sport,java,allscore,average;//课程

    do{

 cout<<endl<<"   姓名:";
 cin>>name;
 cout<<endl<<"   学号:";
 cin>>number;
 cout<<endl<<"   年龄:";
 cin>>age;
 cout<<endl<<"  性别 :";  
 cin>>xingbie;
 cout<<endl<<"  班级:";
 cin>>banji;
 cout<<endl<<"出生年月:";   
 cin>>birthday;
 cout<<endl<<"地址:"; 
 cin>>dizhi;
 cout<<endl<<"电话:"; 
 cin>>phone;
 cout<<endl<<"E-mail:"; 
 cin>>mail;
 cout<<endl<<"   C++成绩:";
 cin>>cpro;
 cout<<endl<<"   英语成绩:";
 cin>>english;
 cout<<endl<<"   高数成绩:";
 cin>>math;
 cout<<endl<<"   体育成绩:";
 cin>>sport;
 cout<<endl<<"  JAVA成绩:";
 cin>>java;
 cout<<endl;
 allscore=cpro+english+math+sport+java;
 cout<<"  总成绩:"<<allscore<<endl;
 average=(cpro+english+math+sport+java)/5;
 cout<<"  平均成绩:"<<average<<endl;

 file[j]=new ofstream("D:\Student.txt",ios::ate);
 *file[j]<<"姓名"<<name<<"学号"<<number<<"年龄"<<age<<"性别"<<xingbie<<"班级"<<banji<<"出生年月"<<birthday
<<"地址"<<dizhi<<"电话"<<phone<<"E-mail"<<mail<<" C++成绩 "<<cpro<<" 英语成绩 "<<english<<" 高数成绩 "
<<math<<" 体育成绩 "<<sport<<" JAVA成绩"<<java<<"总成绩"<<allscore<<"平均成绩"<<average<<endl;
 j++;

 s[i]= Student(name, number,age,xingbie,banji,birthday,dizhi,phone,mail,cpro,english,math,sport,java,allscore,average);
 i++;
 cout<<"  数据输入成功,想继续输入吗(y/n):";
 cin>>c;
 cout<<endl;

if(c!='y'&&c!='n')
{
cout<<" 指令错误!请重新输入!"< cin>>c;
}
else
flag=1;

}while(c=='y');

break;

}

void Student::add(){

int number;
double cpro,english,math,sport,java;
char c;

do
{
 cout<<"  请输入您要增加的学生的姓名:";
 cin>>name;
 cout<<endl<<"请输入您要增加的学生的学号:";
 cin>>number;
 cout<<endl<<"请输入您要增加的学生的年龄:";
 cin>>age;
 cout<<endl<<"请输入您要增加的学生的性别 :";   
 cin>>xingbie;
 cout<<endl<<"请输入您要增加的学生的班级:";
 cin>>banji;
 cout<<endl<<"请输入您要增加的学生的出生年月:";  
 cin>>birthday;
 cout<<endl<<"请输入您要增加的学生的地址:";    
 cin>>dizhi;
 cout<<endl<<"请输入您要增加的学生的电话:";    
 cin>>phone;
 cout<<endl<<"请输入您要增加的学生的E-mail:";    
 cin>>mail;
 cout<<endl<<"请输入您要增加的学生的 C++成绩:";
 cin>>cpro;
 cout<<endl<<" 请输入您要增加的学生的英语成绩:";
 cin>>english;
 cout<<endl<<" 请输入您要增加的学生的高数成绩:";
 cin>>math;
 cout<<endl<<" 请输入您要增加的学生的体育成绩:";
 cin>>sport;
 cout<<endl<<" 请输入您要增加的学生的JAVA成绩:";
 cin>>java;

 cout<<endl;
 {allscore=cpro+english+math+sport+java;}

cout<<" 总成绩:"<<allscore<<endl;
{average=(cpro+english+math+sport+java)/5;}
cout<<" 平均成绩:"<<average<<endl;

 file[j]=new ofstream("d:\student.dat",ios::ate);
 *file[j]<<"  姓名 "<<name<<" 学号  "<<number
     << " C++成绩 "<<cpro<<" 英语成绩 "<<english<<" 高数成绩 "
     <<math<<" 体育成绩 "<<sport<<" JAVA成绩 "<<java
     <<" 总成绩 "<<allscore<<" 平均成绩 "<<average<<endl;
 j++;
 s[i]= student(name, number,cpro,english,math,sport,java,allscore,average);
 i++;
 cout<<"  数据输入成功,想继续数入吗(y/n):";
 cin>>c;
 cout<<endl;
 if(c!='y'&&c!='n')
 {
  cout<<"  指令错误!请重新输入!"<<endl<<"     ";
  cin>>c;
 }
}while(c=='y');
break;

}

void Student::change(){

 string na;
 int nu;
 double cc,eng,ma,sp,jav,as,av;flag=0;
 char c;
 if(i==0)
{

cout<<"系统中找不到这个学生";
}
do
{
cout<<" 请输入您要修改的学生的姓名:";
cin>>name;
cout< for(int h=0;h {
if(strcmp(name,s[h].name)==0)
{
flag=1;
cout cin>>nu;
cout< cin>>cc;
cout< cin>>eng;
cout< cin>>ma;
cout< cin>>sp;
cout< cin>>jav;
{as=cc+eng+ma+sp+jav;}
cout<<endl<<" 总成绩:"<<as;
{av=as/5;}
cout<<endl<<" 平均成绩:"<<av;
cout<<endl;
s[h].cpro=cc;
s[h].english=eng;
s[h].math=ma;
s[h].sport=sp;
s[h].number=nu;

  cout<<"  数据修改成功!"<<endl;

}
}
if(flag==0)
{
cout<<" 您要修改的学生本来就不存在!请检查重新输入!"< }
cout cin>>c;
cout< if(c!='y'&&c!='n')
{
cout cin>>c;
}
}while(c=='y');
break;
}

void Student::delete1(){
cout<<" 请输入你要删除的姓名 :";
char m[20];
cin>>m;
for(int a=0;a<i;a++)
{

if(strcmp(s[a].name,m)==0)
{
int w;
w=a;
for(w;w<i;w++)
{

s[w]=s[w+1];
i=i-1;}
cout<<" 删除成功!"<<endl;

}
}
break;
}

void Student::findname(){
char n[20];int j=0;char c;
if(i==0)
{
cout<<" 管理系统中没有输入数据!"< }
do{
int flag=0;
cout cin>>n;
cout< for(int j=0;j {
if(strcmp(n,(s[j]).name)==0)
{
flag=1;
cout cout }
}
if(flag==0)
cout cout cin>>c;
cout< if(c!='y'&&c!='n')
{
cout cin>>c;
}
}
while(c=='y');
break;
}

void Student::findnumber(){
int n,j=0;
char c;
if(i==0){

 cout<<"  管理系统中没有输入数据!"<<endl;break;
}   
do{
 int flag=0;
 cout<<"  请输入你要查询的学生的学号:";
 cin>>n;

cout< for(int j=0;j {
if(s[j].number==n)
{
flag=1;
cout cout }
}
if(flag==0)
cout cout cin>>c;
cout< if(c!='y'&&c!='n')
{
cout cin>>c;
}
}
while(c=='y');
break;
}

void Student::output(){
cout<<" 本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<"姓名 学号 年龄 性别 班级 出生年月 地址 电话 E-mail c++ 英语 高数 体育 JAVA 总成绩 平均成绩 "<<endl;
for(int k=0;k<i;k++)
{
cout<<s[k].name<<setw(7)
<<s[k].number<<setw(4)
<<s[k].age<<setw(5)
<<s[k].xingbie<<setw(4)
<<s[k].banji<<setw(6)
<<s[k].birthday<<setw(7)
<<s[k].dizhi<<setw(8)
<<s[k].phone<<setw(11)
<<s[k].E-mail<<setw(12)
<<(s[k]).cpro<<setw(5)
<<(s[k]).english<<setw(5)
<<(s[k]).math<<setw(4)
<<(s[k]).sport<<setw(5)
<<(s[k]).java<<setw(6)
<<s[k].allscore<<setw(10)
<<(s[k]).average<<setw(7)<<endl;

}
break;

}

void Student::order(){
student temp;

for(int t=0;t for(int k=t+1;k while (s[t].allscore {
temp=s[t];
s[t]=s[k];
s[k]=temp;
}
cout char yn;
cin>>yn;
while(yn!='y'&&yn!='n')
{
cout<<"操作错误!!!请重新输入:";
cin>>yn;
}
if(yn=='y')
{
cout<<"所有学生的成绩按总分从高到低的排名是:"<<endl;
cout<<" 本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<"姓名 学号 c++ 英语 高数 体育 JAVA 总成绩 平均成绩 "<<endl;
for(int k=0;k<i;k++)
{ Student s[50];
cout<<s[k].name<<setw(7)
<<s[k].number<<setw(4)
<<s[k].age<<setw(5)
<<s[k].xingbie<<setw(4)
<<s[k].banji<<setw(6)
<<s[k].birthday<<setw(7)
<<s[k].dizhi<<setw(8)
<<s[k].phone<<setw(11)
<<s[k].E-mail<<setw(12)
<<(s[k]).cpro<<setw(5)
<<(s[k]).english<<setw(5)
<<(s[k]).math<<setw(4)
<<(s[k]).sport<<setw(5)
<<(s[k]).java<<setw(6)
<<s[k].allscore<<setw(10)
<<(s[k]).average<<setw(7)<<endl;

}

}
break;
}

void Student::save(){
cout<<" 保存成功!"<<endl;break;
}

1个回答

John_ToString
John_ToString   2015.12.05 14:42

C语言中main函数后面的函数必须有前置声明。。。

Csdn user default icon
上传中...
上传图片
插入图片