⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 course.cpp

📁 程序功能: 1 管理员开设课程; 2 学生可以选择课程; 3 学生注册; 4 教师注册; 5 教师给选自己课程的学生给成绩; 6 管理员对学生成绩进行管理; 7 学生能够查询通过密码自己
💻 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 + -