图书管理基本业务(数据结构课)程设计报告(2)

2019-04-02 12:03

某大学12级数据结构课程设计

4 详细设计

首先定义一个定义一个单链表的结点

typedef struct node { int num;//书号 char title[50];//书名 char author[50];//著作者 int num1;//现存量 int num2;//库存量 char name[50];//借阅者姓名 struct node *link; }linklist;

此结点包括书号,书名,著作者,现存量,库存量,借阅者姓名。 linklist* creatnull(linklist *l)//建立一个带头的结点; {

l=(linklist*)malloc(sizeof(linklist)); l->link=NULL; return l; }

馆藏图书信息模块

void print(linklist *l)//输出所有图书的信息 { linklist *p; p=l->link; printf(\输出所有图书的信息:\\n书号\\t书名\\t著作者\\t现存量\\t库存量\\t借阅者姓名\ while(p) { printf(\or,p->num1,p->num2,p->name); p=p->link; //指针指向下一个 } }

通过对单链表的输出来完成对馆藏图书信息的输出;

采编入库模块

void creat(linklist *l)//采编入库 { int i,n; linklist *p,*tail,*q;

4

某大学12级数据结构课程设计

tail=l;if(l->link!=NULL) q=l->link; else q=l; while(tail->link!=NULL){tail=tail->link;}; printf(\请输入入库图书的数量:\ scanf(\ for(i=1;i<=n;i++) {

p=(linklist*)malloc(sizeof(linklist)); printf(\请输入入库图书的书号:\ scanf(\ while(q->num!=p->num&&q->link!=NULL){q=q->link;} if(q->num==p->num) { q->num1=q->num1+1; q->num2=q->num2+1; printf(\该图书已在图书库存在,已自动增加图书数量\ else { printf(\请输入入库图书的书名:\ scanf(\

printf(\请输入入库图书的著作者:\ scanf(\

printf(\请输入入库图书的现存量:\ scanf(\

printf(\请输入入库图书的库存量:\ scanf(\ strcpy(p->name,\ tail->link=p; tail=p; tail->link=NULL;}; }; }

首先先判断该结点是否为空,若不为空,指针指向下一个结点。若该结点为空,输入入库图书的数量,通过for循环依次输入书号,书名,著作者,现存量,库存量等信息。

其中while(q->num!=p->num&&q->link!=NULL){q=q->link;}

if(q->num==p->num)

数量。\

{

q->num1=q->num1+1; q->num2=q->num2+1;

printf(\该图书已在图书库存在,已自动增加图书

根据输入的书号(入库的图书)与库存的书号(本库的图书)是否相同,若相同,不用输入该书的相关信息,便自动完成图书库存和现存量的增加。并提示“该图书已在图书库存在,已自动增加图书数量。”

根据书号查找图书模块

5

某大学12级数据结构课程设计

void locat(linklist *l,int i)//根据书号查找图书 { linklist *p; p=l->link; while(p->num!=i) { p=p->link; }; If(p->limk!=NULL) {printf(\输出图书的信息:\\n书号\\t书名\\t著作者\\t现存量\\t库存量\\t借阅者姓名\ printf(\thor,p->num1,p->num2,p->name);} else printf(\该图书不在此书库!\}

通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息。若不相同,则指针指向下一个结点,直到指向为NULL,结束并提示“该图书不在此书库!”。 借阅模块

void borrowbook(linklist *l)//借阅 { linklist *p;int i; printf(\借阅的图书书号:\ scanf(\ p=l->link; while(p->num!=i) { p=p->link; }; printf(\输出图书的信息:\\n书号\\t书名\\t著作者\\t现存量\\t库存量\\t借阅者姓名\ printf(\thor,p->num1,p->num2,p->name); if(p->num1<=0) {printf(\该书库存不足,读者无法借阅.\ else{p->num1=p->num1-1; printf(\请输入借阅者的姓名:\ scanf(\ printf(\输出图书的信息:\\n书号\\t书名\\t著作者\\t现存量\\t库存量\\t借阅者姓名\ printf(\thor,p->num1,p->num2,p->name);}; }

通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息,若库存不大于零,提示“该书库存不足,读者无法借阅.”,相反,则提示“请输入借阅者的姓名:”,记录借阅者的姓名,现存量和库存量各减一个。若不同,则指针指向下一个结点。

6

某大学12级数据结构课程设计

归还模块

void returnbook(linklist *l)//归还 { linklist *p;int i; printf(\请输入归还图书的书号:\ scanf(\ p=l->link; while(p->num!=i) { p=p->link; }; printf(\输出图书的信息:\\n书号\\t书名\\t著作者\\t现存量\\t库存量\\t借阅者姓名\ printf(\thor,p->num1,p->num2,p->name); p->num1=p->num1+1; strcpy(p->name,\ printf(\输出图书的信息:\\n书号\\t书名\\t著作者\\t现存量\\t库存量\\t借阅者姓名\

printf(\->num2,p->name);

}

通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息。若不同,则指针指向下一个结点。

Main函数模块

int main() { linklist l,*head; head=creatnull(&l); printf(\ ┌*********************************┐\\n\ printf(\ │ 欢迎使用图书管理系统 │\\n\

printf(\ └*********************************┘\\n\ printf(\ 免费 高效 简单 实用\\n\

printf(\ int flag=1,a; while(flag) {

printf(\馆藏图书信息\\n2:采编入库\\n3:图书查询\\n4:读者借阅\\n5:读者归还\\n6:退出图书管理系统\\n请输入您的选项:\ scanf(\ switch(a)

7

某大学12级数据结构课程设计

{ { case 6:flag=0; printf(\ ┌*********************************┐\\n\ printf(\ │ 已退出图书管理系统 │\\n\

printf(\

└*********************************┘\\n\ break; case 1:flag=1; print(head); printf(\ break; case 2:flag=1; creat(head); printf(\ break; case 3:flag=1; int number;//书号 printf(\请输入要查找的图书书号:\ scanf(\ locat(head,number); printf(\ break; case 4:flag=1; borrowbook(head); printf(\ break; case 5:flag=1; returnbook(head); printf(\ break; } } }; system(\ return 1;

首先,定义一个该类型的结点和一个指向该类型的指针。用creatnull()函数创建一个头结点,且指针指向该头结点。然后输出用户界面,通过while循环和switch case语句进行选择。把各个功能模块都编辑在main函数。

8


图书管理基本业务(数据结构课)程设计报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:逾期贷款处理中的法律实务答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: