急 (关于2个数据结构的有关问题)

2017-03-02 周峰
急,急,急 (关于2个数据结构的问题)
小弟刚来的,不是很懂啊,希望大家多多支持哈,谢谢la
1.   实现图书管理系统的入库(增删结点)、库存(查询)、借阅、归还处理(对结点加设借阅、归还标记),对书号用B树建立索引,实现查找;
2.系统随机产生100个数据,用起泡排序、直接插入排序、希尔排序、堆排序比较各算法的比较次数和移动次数。

------解决方案--------------------
劝你还是好好学学吧,不难的,让人家帮你做作业是害你的
------解决方案--------------------
希尔排序

我好象不记得了,难道我老了:(
------解决方案--------------------
[C语言编程-图书管理系统]:
http://www.happycampus.com.cn/pages/2006/07/28/D208187.html
http://www.happycampus.com.cn/pages/2004/07/11/D144634.html

------解决方案--------------------
/*
图书管理
这个程序我给一个朋友写的C语言课程设计的作业,
我们化院的C设计题目好象几年都没有变,所以因
该能给你作个参考。(没有涉及到C++)

这是个 "图书管理系统 ",没有用到指针。BC应该可
以通过调试,输入数据的时候一定注意数字的范围
和字串的长度。
*/


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct BOOK
{
int id,usr[10],total,store,days[10];
char name[31],author[21];
}books[100];
/*上面是结构体的定义,用于存放书籍及借书的信息。*/

void page_title(char *menu_item)
{
clrscr();
printf( "> > > 图 书 管 理 系 统 < < <nn- %s -nn ",menu_item);
}
/*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/

void return_confirm(void)
{
printf( "n按任意键返回……n ");
getch();
}
/*上面是返回前请求确认的函数,以便在返回前观察结果*/

int search_book(void)
{
int n,i;
printf( "请输入图书序号: ");
scanf( "%d ",&i);
for(n=0;n <100;n++)
{
if(books[n].id==i)
{
printf( "书名:%sn ",books[n].name);
printf( "作者:%sn ",books[n].author);
printf( "存数:%d of ",books[n].store);
printf( "%dn ",books[n].total);
return n;
}
}
printf( "n输入错误或无效图书序号.n ");
return -1;
}
/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返
回数组下标,如果找不到相应记录则提示错误并返回-1。*/

void book_out(void)
{
int n,s,l,d;
page_title( "借阅图书 ");
if((n=search_book())!=-1&&books[n].store> 0)
{
printf( "请输入借书证序号: ");
scanf( "%d ",&s);
printf( "请输入可借天数: ");
scanf( "%d ",&d);
for(l=0;l <10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!=-1&&books[n].store==0) printf( "此书已经全部借出.n ");
return_confirm();
}
/*上面是借书的函数,首先调用找书函数*/

void book_in(void)
{
int n,s,l;
page_title( "归还图书 ");
if((n=search_book())!=-1&&books[n].store <books[n].total)
{
printf( "借阅者图书证列表:n ");
for(l=0;l <10;l++)
if (books[n].usr[l]!=0)
printf( "[%d] - %d天n ",books[n].usr[l],books[n].days[l]);
printf( "请输入借书证序号: ");
scanf( "%d ",&s);
for(l=0;l <10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!=-1&&books[n].store==books[n].total)
printf( "全部入藏.n ");
return_confirm();
}

void book_add(void)
{
int n;
page_title( "注册新书 ");
for(n=0;n <100;n++)