📄 course.cpp
字号:
#include"course.h"
void course::Set(course *c)
{
c->flag=1;
cout<<"\t课程名(以Q结束):"<<flush;
gets(c->name);
if(c->name[0]=='Q')
{
c->flag=0;
return;
}
cout<<"\t课程号:"<<flush;
cin>>c->no;
cout<<"\t学分:"<<flush;
cin>>c->credit;
cout<<"\t教室:"<<flush;
gets(c->classroom);
cout<<"\t学时:"<<flush;
cin>>c->period;
c->cno++;
}
void course::display(course *topc)
{
if (topc->cno==0)
{
cout << "\n\t现在没有记录!" << endl;
return;
}
course *p=topc;
cout << "\n\t现在共有如下" << topc->cno<< "条记录:\n";
int m=1;
cout<<"\t课程号"<<"\t课程名"<<'\t'<<"教室"<<'\t'<<"学时"<<'\t'<<"学分"<<endl;
while(p!=NULL )
{
cout<<m<<'\t'<<p->no<<'\t'<<p->Getname()<<'\t'<<p->Getroom()<<'\t'
<<p->Getpeo()<<'\t'<<p->GetCredit()<<endl;
m++;
p=p->Getnext();
}
cout << endl;
}
void course::SetScore(double s)
{
score=s;
}
course::course(const course&c)
{
strcpy(name,c.name);
strcpy(classroom,c.classroom);
credit=c.credit;
no=c.no;
period=c.period;
}
course&course::operator=(const course&c) //const is important
{
if(this==&c)
return *this;
strcpy(name,c.name);
strcpy(classroom,c.classroom);
credit=c.credit;
period=c.period;
no=c.no;
return *this;
}
void course::save(course *topc)
{
if (topc->name[0]=='0')
{
cout << "\t没有记录可存!" << endl;
return;
}
ofstream out;
out.open("course.dat",ios::out);
if (!out)
{
cout << "\t不能打开文件!" << endl;
exit(1);
}
cout << "\n\t存文件" << endl;
out << topc->cno<< '\n';
course *p=topc;
p=p->next;
while(p!=NULL)
{
out <<*p;
p=p->next;
}
out.close();
cout << topc->cno<< "\t条记录已经存入文件,请继续操作。" << endl;
}
/********************
* 文件读取操作函数
********************/
course *course::load(course*topc)
{
ifstream ins;
ins.open("course.dat",ios::in|ios::nocreate);
if (!ins)
{
cout << "\t文件不存在!" << endl;
return topc;
}
cout << "\n\t取文件..." << endl;
ins >> topc->cno;
ins.ignore();
course *p = topc;
course *old;
for (int i=0; i<topc->cno; i++)
{
ins >> *p;
ASKC(p->next);
old=p;
p=p->next;
ins.ignore();
}
old->next=NULL;
ins.close();
cout << "\n\t共开设"<<"["<<topc->cno<<"]门课程" << endl;
return topc;
}
/********************
* 重载<<运算符函数
********************/
ostream &operator << (ostream &os, course&ob)
{
os << ob.name<< '\n';
os << ob.classroom<< '\n';
os << ob.period<< '\n';
os << ob.credit<< '\n';
os<<ob.score<<'\n';
os<<ob.no<<'\n';
return os;
}
istream &operator >> (istream &is, course &ob)
{
is.getline(ob.name,16,'\n'); //使其能够读入字符串中的空格
is.getline(ob.classroom,10,'\n'); //使其能够读入字符串中的空格
is>>ob.period;
is>>ob.credit;
is>>ob.score;
is>>ob.no;
return is;
}
course *course::courselisr(course *topc)
{
course *p,*star;
star=topc;
topc->next=star;
while(1)
{
p=new course;
Set(p);
if(p->flag==0)
break;
star->next=p;
star=p;
};
star->next=NULL;
return topc;
}
/********************
*选课程来设置课程函数
********************/
void course::SetCourse(char*na,char*ro,int n,int peri,double cred)
{
strcpy(name,na);
strcpy(classroom ,ro);
credit=cred;
no=n;
period=peri;
score=0.0;
next=NULL; //不能乱指指针
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -