#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为链表类,执行各种链表操作*/
因为这个程序用了面向对象,要转换需要把类变成结构体,把成员函数变成普通函数,同时传一个指向实例结构体的this指针。
修改起来工作量比较大。如果你就是要一个图书管理系统的课程作业,不如直接google另外找一个现成的。
没法换,C语言没有class。
都要换了 c++使用类或者结构体但是c只有结构体。所以要改为c语言版的图书管理系统就挺麻烦的。
将类实现的功能,修改为全部函数实现
简单的方法可以试:将 类 定义拿掉,实现函数和变量的留着(变量的定义需复制出来)。然后编译,这时肯定是错误一堆,将所有错误修改到没有错误时,你想要的也就实现了。
C没有类的,改起来有难度亲,楼上的大神给了思路,换个方式吧。
代码量不大,还是有可能改过去的,只要重新设计一下就可以了。
把面向对象的东西去掉。
将Class改为Struct,结构体中定义变量,函数可放在结构体中也可放在结构体外。
基本功能都能实现的,但是C的封装性并不太好,希望能帮到你
class 换成 struct, 成员函数拿出来写普通函数。还要考虑构造函数转换的问题。
Why not use java or python?
把类里面的对象属性都用结构体写出来,然后用函数方法去调用结构体使用,但是C++是面向对象的,会更好写一点,一般C就算比较底层了
大哥 c++你都会写了 你还不会c吗 c语言没有类class C++继承自C C能用的C++ 都能用 其他你逐行改一改就是啦 不过C是面向过程的语言 你这个是面向对象的 估计不能照着这个一行一行改 因为没有面向对象的概念 就没有对象的属性和方法 只能用结构体 但是结构体用途不大
data改成结构体,list改成c的链表