关于list.h的困惑
程序代码:
#include<iostream.h> #include<iomanip.h> #include<fstream.h> #include<list.h> //学生类声明 class Student { protected: int tag; int no; char name[20]; public: Student() {tag=0;} Student(int,char []); void addstudent(int,char []); char *getname(); int gettag(); int getno(); void setname(char sname[]); void delstudent(); void sdisp(); }; //学生类实现 Student::Student(int sid,char sname[]) { addstudent(sid,sname); } void Student::addstudent(int sid,char sname[]) { tag=0; no=sid; strcpy(name,sname); } char *Student::getname() { return name; } int Student::gettag() { return tag; } int Student::getno() { return no; } void Student::setname(char sname[]) { strcpy(name,sname); } void Student::delstudent() { tag=1; } void Student::sdisp() { cout<<setw(6)<<no<<setw(20)<<name<<endl; } //学生库类声明 class SDatabase { list<Student> stud; public: SDatebase(); ~SDatebase(); void clear; int addstudent(int,char []); Student *query(int);//按学号查找 void sdispalol(); void studentdata(); }; //学生库类实现 SDatabase::SDatebase() { Student s; fstrem file; file.open("student.dat",ios::init); while(1) { file.read((char *)&s,sizeof(s); if(!file) break; stud.push_back(s);//插入一个学生记录 } file.close(); } SDatabase::~SDatabase() { list<Student>::iterator iter; fstream file; for (iter=std.begin();iter!=stud.end();iter++) if (iter->gettag()==0) file.write((char *)&(* iter),sizeof(Student)); file.close(); } void SDatabase::clear() { stud.clear(); } int SDatabase::addstudent(int std,char sname[]) { Student *p=query(sid); if(p==NULL) { Student s(sid,sname); stud.push_back(s); return 1; } return 0; } Student *SDatabase::query(int sid) { list<Student>::iterator iter; for (iter=stud.begin();iter!=stud.end();iter++) if(iter->getno()==sid && iter->gettag()==0) return &(*iter); return NULL; } void SDatabase::sdispalol() { list<Student>::iterator iter; cout<<" 学号 姓名"<<endl; for(iter=stud.begin();iter!=stud.end();iter++) if(iter->gettag()==0) iter->sdisp(); } void SDatabase::studentdata() { int chioxe=1; char sname[20]; int sid; Student *p; while(chioce!=0) { cout<<" 学生管理 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>"; cin>> choice; switch(choice) { case 1: cout<<" 输入学号:"; cin>>sid; cout<<" 输入学生姓名:"; cin>>sname; addstudent(sid,sname); break; case 2: cout<<" 输入学号:"; cin>>sid; p=query(sid); if(p==NULL) { cout<<" 提示:该学生不存在"<<endl; break; } cout<<" 输入新的姓名:"; cin>>sname; p->setname(sname); break; case 3: cout<<" 输入学号:"; cin>>sid; p=query(sid); if(p==NULL) { cout<<" 提示:该学生不存在"<<endl; break; } p->delstudent(); break; case 4: cout<<" 输入学号:"; cin>>sid; p=query(sid); if(p==NULL) { cout<<" 提示:该学生不存在"<<endl; break; } p->sdisp(); break; case 5: sdispalol();//cuowu break; case 6: clear(); cout<<" 提示:记录已全删除"<<endl; break; } } } //课程类声明 class Course { int tag; int no; char name[20]; public: Course() {}; Course (int,char[]); char *getname(); int getno(); int gettag(); void setname(char[]); void delcourse(); void addcourse(int,char[]); void cdisp(); }; //课程类实现 Course::Course(int cid,char cname[]) { addcourse(cid,cname); } char *Course::getname() { return name; } int Course::getno() { return no; } int Course::gettag() { return tag; } void Course::setname(char cname[]) { strcpy(name,cname); } void Course::delcourse() { tag=1; } void Course::addcourse(int cid,char cname[]) { tag=0; no=cid; strcpy(name,cname); } void Course::cdisp() { cout<< setw(6)<< no << setw(20) << name << endl; } //课程库类声明 class CDatabase { list<Course>course; public: CDatabase(); ~CDatabase(); void clear(); void addcourse(int,char []); Course *query(int); void coursedata(); void cdispall(); }; //课程库类实现 CDatabase::CDatabase() { Course b; fstream file("course.dat",ios::in); while (1) { file.reawd((char *)&b,sizeof(b)); if(!file)break; course.push_back(b); } file.close(); } CDatabase::~CDatabase() { fstream file("course.dat",ios::out|ios::trunc); list<Course>::iterator iter; for (iter=course.begin();iter!=course.end();iter++) if(iter->gettag()==0) file.write((char *)&(*iter),sizeof(Course)); file.close(); } void CDatabase::clear() { course.clear(); } void CDatabase::addcourse(int cid,char cname[]) { Course b(cid,cname); if (p==NULL) { Course b(cid,cname); course.push_back(b); } else cout<<"该课程已存在,不能增加"<<endl; } Course *CDatabase::query(int cid) { list<Course>::iterator iter; for (iter=course.begin();iter!=course.end();iter++) if(iter->getno()==cid&&iter->gettag()==0) return &(*iter); return NULL; } void CDatabase::cdispall() { list<Course>::iterator iter; cout<<" 课程编号 课程名"<<endl; for(iter=course.begin();iter!=course.end();iter++) if(iter->gettag()==0) iter->cdisp(); } void CDatabase::coursedata() { int choice=1; char cname[40]; int cid; Course *b; while (choice!=0) { cout<<"课程管理1:新增2:更改3:删除:查找5:显示6:全删:退出=>"; cin>>choice; switch (choice) { case 1: //新增课程记录 cout<<" 输入课程编号:"; cin>>cid; cout<<" 输入课程名称:"; cin>>cname; addcourse(cid,cname); break; case 2: //更改课程记录 cout<< " 输入课程编号:"; cin>>cid; b=query(cid); if (b==NULL) { cout<<" 提示:该课程不存在"<<endl; break; } cout<<" 输入新课程名:"; cin>>cname; b->setname(cname); break; case 3: //删除课程记录 cout<<" 输入课程编号:"; cin>>cid; b=query(cid); if (b==NULL; { cout<<" 提示:该课程不存在"<<endl; break; } b->delcourse(); break; case 4: //查找课程记录 cout<<" 输入课程编号:"; cin>>cid; b=query(cid); if (b==NULL) { cout<<" 提示:该课程不存在"<<endl; break; } b->cdisp(); break; case 5: //显示所有课程记录 cdlspall(); break; case 6: clear(); cout<<" 提示:记录已全删除"<<endl; break; } } } //成绩类声明 class Grade { int tag; int sno; int cno; double degree; public: Grade() {} Grade(int,int,double); void setdegree(double); void delgrade(); int gettag(); int getsno(); int getcno(); double getgrade(); void dispgrade(); void adddegree(int,int,double); }; //成绩类实现 Grade::Grade(int snol,int cnol,double gradel) { adddegree(snol,cnol,gradel); } void Grade::setdegree(double gradel) { degrdee==gradel; } void Grade::delgrade() { tag=1; } int Grade::gettag() { return tag; } int Grade::getcno() { return cno; } double Grade::dispgrade() { return degree; } void Grade::disgrade() { cout<< sno << "," << cno << "," << degree <<endl; } void Grade::adddegree(int snol,int cnol,double degreel) { tag=0; sno=snol; cno=cnol; degree=degreel; } //成绩库类声明 class GDatebase { list<Grade>degree; //成绩表容器 public: GDatabase(); //构造函数,从grade.dat=>degree ~GDatebase(); //析构函数,degree=>grade.dat void clear(); //全删 void addegree(int,int,double); //增加一个成绩记录 Grade *query(int,int); //查找某学生某课程成绩记录 void querygrade(); void querycourse(); void gdispall(); void gradedata(); }; //成绩库类实现 GDatabase::GDatabase() { Grade b; fstream file("grade.dat",ios::in); while(1) { file.read((char *)&b,sizeof(b)); if (!file) break; degree.push_back(b); } file.close(); } GDatabase::~GDatabase() //析构函数,degree=>grade.dat { fstream file("grade.dat",ios::out|ios::trunc); list<Grade>::iterator iter; //迭代器 for (iter=degree.begin();iter!=degree.end();iter++) if (iter->gettag()==0) file.write((char *)&(*iter),sizeof(Grade)); file.close(); } void GDatabase::clear() { degree.chear(); } void GDatabase::clear() { degree.clear(); } void GDatabase::addegree(int sid,int cid,double degree) //增加一个成绩记录 { Grade *p=query(sid,cid); if (p==NULL) { Grade f(sid,cid,degreel); degree.push_back(f); } else cout<<"该学生的这门课成绩已存在,不能增加"<<endl; } Grade *GDatabase::query(int sid,int cid) { list<Grade>::iterator iter; for(iter=degree.begin();iter!=degree.end();iter++) if(iter->getsno()==sid&&iter->getcno()==cid&&iter->gettag()==0) return NULL; } void GDatabase::querygrade() { int sid; list<Grade>::iterator iter; cout <<" 输入学号:"; cin>>sid; cout<<" 成绩列表:"; for (iter=degree.begin();iter!=degree.end();iter++) if(iter->getsno()==sid && iter->gettag()==0) cout << iter->getcno() <<"("<< iter->getgrade() <<")"<<" "; } void GDatabase::querycourse() { int cid; list<Grade>::iterator iter; cout<<" 输入课程编号:"; cin>> cid; cout << " 成绩列表"; for (iter=degree.begin();iter!=degree.end();iter++) if (iter->getcno()==cid && iter->gettag()==0) cout<< iter->getsno() <<"("<< iter->getgrade() <<")"<<" "; cout<< endl; } void GDatabase::gdispall() { list<Grade>::iterator iter; cout<<"\t 学号 课程编号 分数"<<endl; for (iter=degree.begin();iter!=degree.end();iter++) if (iter->gettag()==0) cout << "\t" << iter->getsno() <<"\t\t"<< iter->getcno() <<"\t"<< iter->getgrade() <<endl; } void GDatabase::gradedata() { int choice=1; int sid; int cid; double grade1; Grade *p; while (choice!=0) { cout << " 成绩管理 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>"; cin>>choice; switch (choice) { case 1: cout<<" 输入学生学号:"; cin>>sid; cout<<" 输入课程编号: "; cin>>sid; cout<<" 输入分数: "; cin>> gradel; addegree(sid,cid,grade1); break; case 2: cout<<" 输入学生学号:"; cin>>sid; cout<<" 输入课程编号: "; cin>>sid; p=query(sid,cid); if(p==NULL) { cout <<" 提示:该学生成家不存在"<<endl; break; } cout << " 输入新的分数:"; cin >> grade1; p->setdegree(grade1); break; case 3: cout<<" 输入学生学号:"; cin>>sid; cout<<" 输入课程编号: "; cin>>sid; p=query(sid,cid); if(p==NULL) { cout <<" 提示:该学生成家不存在"<<endl; break; } p->delgrade(); break; case 4: cout<<" 输入学生学号:"; cin>>sid; cout<<" 输入课程编号: "; cin>>sid; p=query(sid,cid); if(p==NULL) { cout <<" 提示:该学生成家不存在"<<endl; break; } p->dispgrade(); break; case 5: gdispall(); break; case 6: clear(); cout << " 提示:记录仪全删除"<<endl; } } } void main() { int choice1=1,choice2; SDatabase StudentDB; CDatabase CourseDB; GDatabase GradeDB; while(choice1!=0) { cout<<"主菜单 1:成绩管理 2:成绩查询 3:课程管理 4:学生管理 0:离开=>"; cin>>choice1; switch(choice1) { case 1: GradeDB.gradedate(); break; case 2: choise2=1; while(choice2!=0) { cout>>" 成绩查询:1.查找某学生所有成绩 2.查找某课程成绩记录 0:返回=>"; cin>>choice2; switch(choice2) { case 1: GradeDB.quergrade(); break; case 2: GradeDB.querycourse(); break; } } break; case 3: CourseDB.coursedata(); break; case 4: StudentDB.studentdata(); break; default: break; } } }做的该系统中,运行时显示vc98\include\list.h错误,
--------------------Configuration: 123 - Win32 Debug--------------------
Compiling...
123.cpp
e:\vc98\include\list.h(37) : error C2146: syntax error : missing ';' before identifier 'Length'
e:\vc98\include\list.h(37) : error C2501: 'DWORD' : missing storage-class or type specifiers
e:\vc98\include\list.h(37) : error C2501: 'Length' : missing storage-class or type specifiers
e:\vc98\include\list.h(53) : error C2146: syntax error : missing ';' before identifier 'GetPrevLink'
e:\vc98\include\list.h(53) : error C2433: 'WINAPI' : 'inline' not permitted on data declarations
e:\vc98\include\list.h(53) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
该如何更改,请高手赐教!!!