2 sinat 21113619 sinat_21113619 于 2015.06.16 23:22 提问

这个c++程序如何换成c 5C
c

#include
#include
using namespace std;
class Data
{
public:
Data();
Data(int i,string n,int b);
void SetId(int i);
void SetName(string n);
void SetBorrow(int b);
int GetId()const;
string GetName()const;
int GetBorrow()const;
private:
int id;
string name;
int borrow;
};
Data::Data()
{
id=0;
name="";
borrow=0;
}
Data::Data(int i,string n,int b)
{
id=i;
name=n;
borrow=b;
}
void Data::SetId(int i)
{
id=i;
}
void Data::SetName(string n)
{
name=n;
}
void Data::SetBorrow(int b)
{
borrow=b;
}
int Data::GetId()const
{
return id;
}
string Data::GetName()const
{
return name;
}
int Data::GetBorrow()const
{
return borrow;
}

class Node
{
public:
Node();
Node(Data d);
void SetData(Data *d);
Data
GetData()const;
void SetNext(Node n);
Node
GetNext()const;
private:
Data data;
Node *next;
};
Node::Node()
{
data=NULL;
next=NULL;
}
Node::Node(Data *d)
{
data=d;
next=NULL;
}
void Node::SetData(Data *d)
{
data=d;
}
Data
Node::GetData()const
{
return data;
}
void Node::SetNext(Node n)
{
next=n;
}
Node
Node::GetNext()const
{
return next;
}

class List
{
public:
List();
void Insert(int id);
void ShowMax()const;
void ShowMix()const;
void Show()const;
private:
Node *head;
Node *tail;
};
List::List()
{
head=NULL;
tail=NULL;
}
void List::Insert(int id)
{
int i,b;
string n;
cout<<"请输入编号:";
cin>>i;
cout<< "请输入书名:";
cin>>n;
cout<<"请输入借书次数:";
cin>>b;
Data *d=new Data(i,n,b);
Node *node=new Node(d);
if(!head)
{
head=node;
tail=node;
head->SetNext(NULL);
}
else
{
Node *now=head,*last=head;
while(now)
{
if(now->GetData()->GetId()==id)
break;
last=now;
now=now->GetNext();
}
if(now==head)
{
node->SetNext(head);
head=node;
}
else
{
last->SetNext(node);
node->SetNext(now);
}
}
}
void List::ShowMax()const
{
Node *node=head->GetNext(),*max=head;
while(node)
{
if(max->GetData()->GetId()GetData()->GetId())
max=node;
node=node->GetNext();
}
cout<<"借阅次数最多的图书信息如下:"< coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()< }
void List::ShowMix()const
{
Node *node=head->GetNext(),*mix=head;
while(node)
{
if(mix->GetData()->GetId()>node->GetData()->GetId())
mix=node;
node=node->GetNext();
}
cout<<"借阅次数最少的图书信息如下:"< coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()< }
void List::Show()const
{
Node *node=head;
cout while(node)
{
coutGetData()->GetId()<<"\t"<GetData()->GetName()<<"\t"<GetData()->GetBorrow()< node=node->GetNext();
}
}

void main()
{
List l=new List();
l->Insert(1);
l->Show();
l->Insert(2);
l->Show();
l->Insert(2);
l->Show();
l->ShowMix();
l->ShowMax();
}
/
说明:data类为数据类,保存图书的基本信息,node为结点类,保存结点的信息,list为链表类,执行各种链表操作*/

12个回答

91program
91program   Ds   Rxr 2015.06.17 07:41

将类实现的功能,修改为全部函数实现
简单的方法可以试:将 类 定义拿掉,实现函数和变量的留着(变量的定义需复制出来)。然后编译,这时肯定是错误一堆,将所有错误修改到没有错误时,你想要的也就实现了。

a1193561652
a1193561652   Rxr 2015.06.16 23:25

没法换,C语言没有class。

caozhy
caozhy   Ds   Rxr 2015.06.16 23:24

因为这个程序用了面向对象,要转换需要把类变成结构体,把成员函数变成普通函数,同时传一个指向实例结构体的this指针。
修改起来工作量比较大。如果你就是要一个图书管理系统的课程作业,不如直接google另外找一个现成的。

sinat_29089007
sinat_29089007   2015.06.17 00:59

都要换了 c++使用类或者结构体但是c只有结构体。所以要改为c语言版的图书管理系统就挺麻烦的。

tongyi55555
tongyi55555   2015.06.17 08:09

C没有类的,改起来有难度亲,楼上的大神给了思路,换个方式吧。

ycg514230
ycg514230   Rxr 2015.06.17 10:12

代码量不大,还是有可能改过去的,只要重新设计一下就可以了。
把面向对象的东西去掉。

dominating413421391
dominating413421391   2015.06.17 11:17

将Class改为Struct,结构体中定义变量,函数可放在结构体中也可放在结构体外。
基本功能都能实现的,但是C的封装性并不太好,希望能帮到你

zhangweilst
zhangweilst   2015.06.19 12:27

class 换成 struct, 成员函数拿出来写普通函数。还要考虑构造函数转换的问题。

dengxu11
dengxu11   2015.07.12 12:41

Why not use java or python?

cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.07.12 20:50

把类里面的对象属性都用结构体写出来,然后用函数方法去调用结构体使用,但是C++是面向对象的,会更好写一点,一般C就算比较底层了

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片