单链表实现图书管理系统.docx

上传人:b****6 文档编号:3084523 上传时间:2022-11-17 格式:DOCX 页数:13 大小:16.80KB
下载 相关 举报
单链表实现图书管理系统.docx_第1页
第1页 / 共13页
单链表实现图书管理系统.docx_第2页
第2页 / 共13页
单链表实现图书管理系统.docx_第3页
第3页 / 共13页
单链表实现图书管理系统.docx_第4页
第4页 / 共13页
单链表实现图书管理系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单链表实现图书管理系统.docx

《单链表实现图书管理系统.docx》由会员分享,可在线阅读,更多相关《单链表实现图书管理系统.docx(13页珍藏版)》请在冰豆网上搜索。

单链表实现图书管理系统.docx

单链表实现图书管理系统

单链表:

typedefstruct{

charnum[20];

charname[50];

floatpri;

}Book;

typedefstructLNode{//线性表的单链表存储

Bookbook;//数据域

structLNode*next;//指针域

}LNode,*LinkList;

voidInput(LinkList&L){//前插法创建图书链表

LinkListp;

L=newLNode;

L->next=NULL;//初始化单链表

ifstreaminFile("book.txt");

if(!

inFile){

cerr<<"Cannotopenthisfile!

"<

exit

(1);

}

charbook_head1[10],book_head2[10],book_head3[10];//定义文件中标题

inFile>>book_head1>>book_head2>>book_head3;//读取文件中的标题

while(!

inFile.eof()){//到达文件尾部前逐行依次读取所有图书数据

p=newLNode;//生成新结点

inFile>>p->book.num>>p->book.name>>p->book.pri;

p->next=L->next;//插入到表头

L->next=p;h

}

inFile.close();

cout<<"读取完毕!

"<

}

voidOutput(LinkList&L){//输出

LinkListp;

p=L->next;

while(p){

cout<book.num<<"\t"<book.name<<"\t"<book.pri<

p=p->next;

}

cout<<"\n信息显示完毕\n"<

}

voidSearchname(LinkList&L){

LinkListp;

p=L->next;

charname1[20];

cout<<"请输入要查找的书名:

";

cin>>name1;

while(p){

if(strcmp(name1,p->book.name)==0){

cout<book.num<<"\t"<book.name<<"\t"<book.pri<

}

p=p->next;

}

}

voidSearchnum(LinkList&L){

inti;

intj=0;

LinkListp;

p=L->next;//p指向第一个结点

cout<<"请输入要查找的书籍的位置";

cin>>i;

while(p&&j

j++;

p=p->next;

}

if(!

p||j>i){//第i个元素不存在

cout<<"错误!

"<

}

cout<<"第"<

"<

cout<book.num<<"\t"<book.name<<"\t"<book.pri<

}

voidMax(LinkList&L){

LinkListpmax,p;

pmax=L->next;

p=L->next->next;

while(p){

if(p->book.pri>pmax->book.pri)

pmax=p;

p=p->next;

}

cout<book.num<<"\t"<book.name<<"\t"<book.pri<

}

voidSort(LinkListL){

cout<<"此功能还未实现,研究中"<

}

voidInverse(LinkList&L){

LinkListp;//待插入到链表的节点

LinkListq;

p=L->next;

L->next=NULL;//初始化链表

ofstreamoutFile("bookinverse.txt");

//每一次将p插入到L(头结点)与L->next(链表的第一个结点之间)

while(p){

q=p->next;

p->next=L->next;

L->next=p;

p=q;

}

p=L->next;//循环完后,p指向的是链表末尾,需要重置回首元结点,否则无法写入文件

while(p){

cout<book.num<<"\t"<book.name<<"\t"<book.pri<

outFile<book.num<<"\t"<book.name<<"\t"<book.pri<

p=p->next;

}

cout<<"信息已写入bookinverse.txt中!

"<

}

voidCount(LinkListL){

inti=0;

LinkListp;

p=L->next;

while(p){

i++;

p=p->next;

}

cout<<"当前的图书总数为:

"<

}

voidInsert(LinkListL){

Bookbk;

LinkListp=L;//初始化

LinkLists=newLNode;//新结点s

inti;

intj=0;

cout<<"请输入待插入书籍的位置"<

cin>>i;

cout<<"请输入待插入的书籍的信息"<

cout<<"书号:

"<

cin>>bk.num;

cout<<"书名:

"<

cin>>bk.name;

cout<<"价格:

"<

cin>>bk.pri;

while(p&&j

j++;

p=p->next;

}

if(!

p||j>i-1){

cout<<"错误!

"<

}

s->book=bk;//将结点s的数据域置为bk

s->next=p->next;//将结点s插入L中

p->next=s;

//重新写入book.txt文件

ofstreamoutFile("book.txt");

p=L->next;

while(p){

outFile<book.num<<"\t"<book.name<<"\t"<book.pri<

p=p->next;

}

cout<<"插入新的书籍后的书籍信息已重新写入book.txt文件"<

}

voidDelete(LinkListL){

Bookbk1;

LinkListp=L;//初始化

LinkListq;//临时保存被删除结点的地址以备释放

inti;

intj=0;

cout<<"请输入待删除书籍的位置"<

cin>>i;

while(p->next&&j

j++;

p=p->next;

}

if(!

(p->next)||j>i-1){

cout<<"错误!

"<

}

q=p->next;

p->next=q->next;

bk1=q->book;

deleteq;

//重新写入book.txt文件

ofstreamoutFile("book.txt");

p=L->next;

while(p){

outFile<book.num<<"\t"<book.name<<"\t"<book.pri<

p=p->next;

}

cout<<"删除所选书籍后的书籍信息已重新写入book.txt文件"<

}

顺序表

typedefstruct{

Book*book;

intlength;//图书表的图书记录个数

}SqList;

voidInput(SqList&L){

inti=0;

charbook_head1[10],book_head2[10],book_head3[10];//定义文件中标题

L.book=newBook[MAXSIZE];

ifstreaminFile("book.txt");//打开文件

if(!

inFile){

cerr<<"Cannotopenthisfile!

"<

exit

(1);

}

inFile>>book_head1>>book_head2>>book_head3;//读取文件中的标题

L.length=0;

while(!

inFile.eof()){//逐行依次读取所有图书数据

inFile>>L.book[i].num>>L.book[i].name>>L.book[i].pri;

i++;//记录图书个数

}

L.length=i;

inFile.close();

cout<<"\n读取book.txt信息完毕!

"<

}

voidOutput(SqListL){

for(inti=0;i

cout<

}

cout<<"\n信息显示完毕\n"<

}

voidSearchname(SqList&L){

inty;

charname1[20];

cout<<"请输入要查找的书名:

";

cin>>name1;

for(y=0;y

//比较输入的name1与结构体数组中name是否相同;

if(strcmp(name1,L.book[y].name)==0){

cout<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1