c++课设报告(项目管理系统) 下载本文

private:

int top;//项目记录指针 project pro[m]; RData();//构造函数 void clear()//清除函数定义 { }

int addproject(int n,char *na,int nn,char *nb);//项目信息添project *equal(int projectid)//按编号查找 { }

{ }

return &pro[i];

for(int i=0;i<=top;i++) top=-1;

public://外部接口

加,虚函数重新定义

if(pro[i].getnumber())projectid&&pro[i].gettag()==0;

return NULL;

void output();//输出函数 void projectdate();//操作函数

void sort(project *b,int c);//排序函数 ~RData();//析构函数

};

通过公有派生,project类和Rdata类派生出除构造函数、析构函数和虚函数之外的全部成员,由于基类的成员是公有和私有类型,因此在派生类中的成员函数中,从自己基类继承来的成员全部可以访问,而对于建立project类和Rdata类对象的外部模块来讲,基类的保护和私有的成员是无法访问的。通过保护访问类型和公有的继承方式,实现了基类project和Rdata的数据的可靠保护。在程序中,项目所需的编号、名称、负责人和等级采用动态分配内存,这些工作都是在基类、派生类的构造函数中完成,它们的清理工作在析构函数中完成。其余的派生函数负责项目的输入输出、提取、清除等工作。

- 5 -

4.2 类的实现

//project类的实现

void project::output()//读出项目信息 { }

void project::addproject(int n,char *na,int nn,char *nb)//项目信息添加,虚函数 { }

//Rdata类的实现

RData::~RData()//析构函数 { }

void RData::output()//读出项目信息 {

for(int i=0;i<=top;i++)//输出每一条项目信息

- 6 -

cout<<\编号\输出编号 cout<

cout<<\负责人\输出负责人 cout<

tag=0; number=n;

strcpy(name,na);//调用strcpy函数,输入名称 leval=nn;

strcpy(charge,nb);//调用strcpy函数,输入负责人

fstream file(\for (int i=0;i<=top;i++)

if (pro[i].gettag()==0)//释放内存

file.write((char*)&pro[i],sizeof(pro[i])); file.close();

}

pro[i].output();

int RData::addproject(int n,char *na,int nn,char *nb)//项目信息添加,虚函数重新定义

{ }

RData::RData()//构造函数 { }

void RData::sort(project *b,int c)//对排序函数的声明 { int i,j; project temp;

int choose;//输入的选项 cout<<\按项目编号排序:\\n\project s;

top=-1;//清空所有项目信息

fstream file(\//打开一个输入文件

while(1) { }

file.close();

file.read((char *)&s,sizeof(s)); if (!file)break; top++; pro[top]=s;

project *p=equal(n);//查找是否存在 if (p==NULL) { } return 0;

top++;

pro[top].addproject(n,na,nn,nb);//通过指针进行添加项目信息 return 1;

- 7 -

cout<<\按项目名称排序:\\n\cout<<\请输入要进行的操作:\cin>>choose;

if(choose==1)//冒泡排序法对项目按编号排序 { }

for (i=0;i<=c;i++) { }

if (choose==2)//冒泡排序法对项目按名称排序 {

for(i=0;i<=c-1;i++) { }

for (i=0;i<=c;i++)

for(j=j+1;j<=c;j++) { }

if(strcmp(b[j].getname(),b[i].getname())>=0) { }

temp=b[i]; b[i]=b[j]; b[j]=temp;

b[i].output(); for(j=0,j<=c;j++;) { }

if (b[j].getnumber()>b[i].getnumber()) { }

temp=b[i]; b[i]=b[j]; b[j]=temp;

- 8 -