共有回帖数 0 个
- 又来个c++类摸板...(为大家专门做学生管理系统之类弄的)
-
只看楼主
收藏
回复
-
/*Manage.cpp
**用这个摸版的类。。
**需要Input() (功能为输入类的所有有需要的数据成员)
**需要Onput() (功能为返回类的所有有需要的数据成员)
**需要GetNumber() (功能为输返回类的比较值(大的在前面输出))
注意:比较的值必须可用比较符号
**需要ALLOUTUSE() (功能为输出类的所有有需要的数据成员
(由于全部输出所以只输出必要的))
**需要GetName() (功能为返回标认类对象的..用来关于输入string查找
注意:返回string
**最后说一下类里面的数据成员不要为*变量..否则指针指向的东西不会记录
*******************************************************************************/
#ifndef MANAGE
#define MANAGE
#includestring
#includeiostream
#includefstream
using namespace std;
templateclass T
class IOF{
public:
IOF(const char*o="ino",const char*n="ink"){
numberfilename=new char[strlen(n)+1];
objectfilename=new char[strlen(o)+1];
int i;
for(i=0;( *(objectfilename+i) = *(o+i) )!=' ';i++);
*(objectfilename+i)=' ';
for(i=0;( *(numberfilename+i) = *(n+i) )!=' ';i++);
*(numberfilename+i)=' ';
}
~IOF(){
delete[]numberfilename;
delete[]objectfilename;
}
bool OutNumberToFile(int const&k);
bool OutDataToFile(T const* object,int const&k);
bool InNumberOfFile(int&k);
bool InDataOfFile(T*object,int&k);
protected:
char* numberfilename;
char* objectfilename;
};
templatetypename T
bool IOFT::OutNumberToFile(int const&k){
bool fulfill=false;
ofstream outk(numberfilename,ios::out|ios::binary);
if(outk){
outk.write((char*)&k,sizeof(k));
fulfill=true;
}
outk.close();
return fulfill;
}
templatetypename T
bool IOFT::OutDataToFile(T const* object,int const&k){
bool fulfill=false;
ofstream outo(objectfilename,ios::out|ios::binary);
if(outo){
for(int i=0;ik;i++){
outo.seekp(sizeof(T)*i,ios::beg);
outo.write((char*)&object,sizeof(T));
}
fulfill=true;
}
outo.close();
return fulfill;
}
templatetypename T
bool IOFT::InNumberOfFile(int&k){
bool fulfill=false;
ifstream ink(numberfilename,ios::in|ios::binary);
if(ink){
ink.read((char*)&k,sizeof(k));
fulfill=true;
}
ink.close();
return fulfill;
}
templatetypename T
bool IOFT::InDataOfFile(T*object,int&k){
bool fulfill=false;
ifstream ino(objectfilename,ios::in|ios::binary);
if(ino){
for(int i=0;ik;i++){
ino.seekg(sizeof(T)*i,ios::beg);
ino.read((char*)&object,sizeof(T));
}
fulfill=true;
}
ino.close();
return fulfill;
}
templateclass T
class Manage{
public:
Manage(const char*objectname,const char*numbername):
iof(objectname,numbername){}
bool ADD();
bool ALL();
bool DELETE();
bool SEE();
bool MAKEROVER();
protected:
IOFT iof;
};
templatetypename T
bool ManageT::ADD(){
int k=0;
if(( iof.InNumberOfFile(k) ));
T *object=new T[k];
if(( iof.InDataOfFile(object,k) ));
(object+k)-Input();
k++;
if(( iof.OutNumberToFile(k) )&&( iof.OutDataToFile(object,k) )){
return true;
}
else{
return false;
}
}
templatetypename T
bool ManageT::ALL(){
int k=0;
if(! ( iof.InNumberOfFile(k) )){
return false;
}
T *object=new T[k];
if(! ( iof.InDataOfFile(object,k) )){
return false;
}
for(int i=0;ik-1;i++)
for(int j=i+1;jk;j++)
{
T t;
if((object+i)-GetNumber()(object+j)-GetNumber()){
t=*(object+i),*(object+i)=*(object+j),*(object+j)=t;
}
}
for(int i=0;ik;i++){
cout "NO."i+1"-";
(object+i)-ALLOUTUSE();
}
cout "end";
getchar();
getchar();
return true;
}
templatetypename T
bool ManageT::DELETE(){
int k=0;
if(! ( iof.InNumberOfFile(k) )){
return false;
}
T *object=new T[k];
if(! ( iof.InDataOfFile(object,k) )){
return false;
}
cout "Input name:(if you input 0 to the end)";
string name;
int i=0;
cin name;
while(name!="0")
{
while(ik){
if(name==(object+i)-GetName()){
(object+i)-Output();
cout "nnis it?(if true input 0)";
string j;
cin j;
if(j=="0"){
T t;
t=*(object+i),
*(object+i)=*(object+k-1),
*(object+k-1)=t;
k--;
if(( iof.OutNumberToFile(k) )&&( iof.OutDataToFile(object,k) )){
cout "fulfill!!"endl;
}
else{
return false;
}
}
}
i++;
}
cout "Input name:(if you input 0 to the end)";
cin name;
}
return true;
}
templatetypename T
bool ManageT::SEE(){
int k=0;
if(! ( iof.InNumberOfFile(k) )){
return false;
}
T *object=new T[k];
if(! ( iof.InDataOfFile(object,k) )){
return false;
}
cout "Input name:(if you input 0 to the end)";
string name;
cin name;
while(name!="0")
{
int i=0;
while(ik){
if(name==(object+i)-GetName()){
(object+i)-Output();
cout "nnis it"endl;
}
i++;
}
cout "Input name:(if you input 0 to the end)";
cin name;
}
return true;
}
templatetypename T
bool ManageT::MAKEROVER(){
int k=0;
if(! ( iof.InNumberOfFile(k) )){
return false;
}
T *object=new T[k];
if(! ( iof.InDataOfFile(object,k) )){
return false;
}
cout "Input name:(if you input 0 to the end)";
string name;
int i=0;
cin name;
while(name!="0")
{
while(ik){
if(name==(object+i)-GetName()){
(object+i)-Output();
cout "nnis it?(if true input 0)";
string j;
cin j;
if(j=="0"){
(object+i)-Input();
if(( iof.OutNumberToFile(k) )&&( iof.OutDataToFile(object,k) )){
cout "fulfill!!"endl;
}
else{
return false;
}
}
}
i++;
}
cout "Input name:(if you input 0 to the end)";
cin name;
}
return true;
}
#endif
楼主 2016-01-23 10:49 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知