图书借阅管理系统
1
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
目的
《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:
具备初步的独立分析和设计能力; , 了解并掌握数据结构与算法的设计方法,
, 初步掌握软件开发过程的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
分析、系统设计、程序编码、测试等基本方法和技能; , 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
2. 设计内容和要求
主要分为两大功能:
(1) 图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
(2) 会员管理(增加会员、查询会员、删除会员、借书信息)。
设计要求:
(1) 符合课题要求,实现相应功能;
(2) 要求界面友好美观,操作方便易行;
(3) 注意程序的实用性、安全性;
3(本设计所采用的数据结构
采用两条单链表,其头结点分别为head、mhead的全局变量来存储图书信息和会员信息。其定义数据结构如下:
/*图书信息结构体*/
typedef struct elem
{
char bookid[5];
char bookname[50];
char bookauthor[20];
char bookmark[2];
char memberid[4];
}elemtype;
/*图书链表结点结构体*/
typedef struct node {
elemtype data;
struct node *next;
}lnode,*linknode; /*会员信息结构体*/
typedef struct memberelem {
char memberid[4];
char membername[20];
}memberelemtype; /*会员链表结点结构体*/
typedef struct membernode {
memberelemtype data;
struct membernode *next;
}mlnode,*mlinknode;
4(功能模块详细设计
1
图书借阅管理系统
图书管理模块 会员管理模块
增查删图还增查删借
加询除书书 加询除书
图图图借会会会信
书 书 书 阅 员 员 员 息
4.1 详细设计思想
系统启动时,通过读取文件完成对以head、mhead为表头的单链表完成初始化。初始化后系统进入系统菜单,其运行界面如下:
当选择功能1时,进入图书管理模块,其运行界面如下:
2
当选择功能2时,进入会员管理模块,其运行界面如下:
在图书管理界面中,当选择功能1时,查看所有图书,其运行界面如图:
3
在会员管理界面中,当选择功能1时,查看所有会员,其运行界面如图:
4.2各个实现函数
为了实现上述功能,特定义以下函数原型,具体代码参见源代码部分: void main() /*入口*/
void initallinfo() /*初始化图书和会员链表*/ void welform() /*系统总菜单*/
void printbookinfo(linknode head) /*输出图书信息函数*/ void addbook() /*增加图书模块*/
void select() /*按编号查询图书*/
void delete() /*按编号删除图书*/
void borrow() /*借阅图书*/
4
void returnbook() /*还书*/
void bookmanagetitle() /*图书管理二级菜单*/ void bookmanage() /*二级图书管理功能选择函数*/ void printmemberinfo(mlinknode head) /*输出会员信息函数*/
增加会员模块*/ void addmember() /*
void selectmember() /*按编号查询会员*/
void deletemember() /*按编号删除会员*/
void membermanagetitle() /*会员管理二级菜单*/ void membermanage() /*二级会员管理功能选择函数*/ 4.4图书会员链表
程序调试数据如表:
图书初始数据表
bookid bookname bookauthor bookmark memberid 0001 sanguoyanyi luoguanzhong N 0 0002 hongloumeng caoxueqin N 0 0003 xiyouji wuchengen Y 001 0004 shuihuzhuan shinaian N 0 0005 javascript Join N 0 0006 cprogrom tanghaoqiang N 0 0007 liaozhaizhiyi pusongling Y 007 0008 jia bajin N 0 0009 richu caoyu Y 003 0010 nahan luxun N 0
会员信息表
5
memberid membername
001 zhouxicai
002 longqidong
003 lipengfei
004 gaopeng
005 chenwentang
006 yangminghao
4.5 核心代码
#include
#include
#include #include define NULL 0 #
typedef struct elem {
char bookid[5];
char bookname[50];
char bookauthor[20];
char bookmark[2];
char memberid[5]; }elemtype;
typedef struct node {
elemtype data;
struct node *next; }lnode,*linknode;
typedef struct memberelem
{
char memberid[5];
char membername[25]; }memberelemtype;
typedef struct membernode {
memberelemtype data;
struct membernode *next;
}mlnode,*mlinknode; linknode head;
6
mlinknode mhead;
FILE *bp,*bq;
void initallinfo()
{
FILE *bp,*bq;
linknode p,q;
mlinknode m,n;
head=(lnode*)malloc(sizeof(lnode));
head->next=NULL;
mhead=(mlnode*)malloc(sizeof(mlnode));
mhead->next=NULL;
bp=fopen("book.txt","rb");
printf("%s",feof(bp));
bq=fopen("member.txt","rb");
printf("%s",feof(bp));
if(bp==NULL)
{
printf("can not open bookbat!");
getchar();
getchar();
}
else
{
do
{
p=(lnode*)malloc(sizeof(lnode));
fread(p,sizeof(lnode),1,bp);
q=p->next;
p->next=head->next;
head->next=p;
}while(q!=NULL);
fclose(bp);
}
if(bq==NULL)
{
printf("can not open memberdat!");
getchar();
getchar();
}
else
{
7
do
{
m=(mlnode*)malloc(sizeof(mlnode));
fread(m,sizeof(mlnode),1,bq);
n=m->next;
>next=mhead->next; m-
mhead->next=m;
}while(n!=NULL);
fclose(bq);
}
}
void mainmenu()
{
system("cls");
printf(" SYSTEM MAIN MENU \n");
printf("*********************************************\n");
printf("*1:book manage *\n");
printf("*-------------------------------------------*\n");
printf ("*2:member manage *\n");
printf("*-------------------------------------------*\n");
printf("*0:quit *\n");
printf("*********************************************\n");
printf("\nPlease input order:\n");
}
void printbookinfo(linknode head)
{
linknode p=head->next;
system("cls");
printf("The book informations are:\n");
printf("%-7s%-20s%-15s%-6s%s\n","id","title","author","mark","borrower");
printf("*********************************************\n");
for(;p!=NULL;p=p->next)
printf("%-7s%-20s%-15s%-6s%s\n",p->data.bookid,p->data.bookname,p->data.bookauthor,p->data.bookmark,p->data.memberid);
printf("\nPlease anykey return.....");
getchar();
getchar();
}
void addbook()
{
linknode p=(lnode*)malloc(sizeof(lnode));
system("cls");
8
printf("Add books.....\n");
printf("%-7s%-20s%-15s%\n","id(5)","title","author");
printf("*********************************************\n");
scanf("%s%s%s",p->data.bookid,p->data.bookname,p->data.bookauthor);
p->data.bookmark[0]='N';
p->data.bookmark[1]='\0';
>data.memberid[0]='0'; p-
p->data.memberid[1]='\0';
p->next=head->next;
head->next=p;
printf("\nAdd success!\n");
printf("\nPress anykey return.....");
getchar();
getchar();
}
void select()
{
char id[5];
linknode p;
system("cls");
p=head->next;
printf("select book by id.....\n");
printf("Please input book id :\n");
scanf("%s",id);
while(p!=NULL)
{
if(strcmp(p->data.bookid,id)==0)
break;
else
p=p->next;
}
if(p==NULL)
printf("\nThe book not exit!\n");
else
{
printf("\n%-7s%-20s%-15s%-3s%s\n","id","title","author","borrowed","borrowe
r");
printf("********************************************\n");
printf("\n%-7s%-20s%-15s%-3s%s\n",p->data.bookid,p->data.bookname,p->data.b
ookauthor,p->data.bookmark,p->data.memberid);
}
printf("\nPlease anykey return.....");
9
getchar();
getchar();
}
void deletebook()
{
char id[5];
linknode p,q;
system("cls");
p=head->next;
q=head;
printf("delete book by id......\n");
printf("Please input book id:\n");
scanf("%s",id);
while(p!=NULL)
{
if(strcmp(p->data.bookid,id)==0)
break;
else
{
q=p;
p=p->next;
}
}
if(p==NULL)
printf("\nThe book you want to delete are not exit!\n");
else
{
q->next=p->next;
free(p);
printf("\nDelete success!\n");
}
printf("\nPress anykey return.....");
getchar();
getchar();
}
void borrow()
{
char id[5];
char mid[5];
linknode p;
mlinknode q;
system("cls");
printf("borrow book.....\n");
do
10
{
p=head->next;
printf("Please input book id:\n");
scanf("%s",id);
while(p!=NULL)
{
(p->data.bookid,id)==0) if(strcmp
break;
else
p=p->next;
}
if(p==NULL)
{
printf("\nThe book doesn't exit!please input it again!\n");
}
}while(p!=NULL);
if(p!=NULL)
{
do
{
mhead->next; q=
printf("\nPlease input member id:\n");
scanf("%s",mid);
while(q!=NULL)
{
if(strcmp(q->data.memberid,mid)==0)
break;
else
q=q->next;
}
if(q==NULL)
{
printf("\nYou are not member!input again!\n");
}
}while(q==NULL);
if(q!=NULL&&(strcmp(p->data.bookmark,"Y"))!=0)
{
strcpy(p->data.bookmark,"Y");
strcpy(p->data.memberid,q->data.memberid);
printf("\nsuccessed!\n");
getchar();
getchar();
}
else
11
{
printf("\nThe book have borrowed,please wait afew days.....");
getchar();
getchar();
}
}
("\nPress anykey return....."); printf
getchar();
getchar();
}
void returnbook()
{
char id[5];
linknode p;
system("cls");
p=head->next;
printf ("return book.....\n");
printf("Please input book id:\n");
scanf("%s",id);
while(p!=NULL)
{
if(strcmp(p->data.bookid,id)==0)
break;
else
p=p->next;
}
if(p==NULL)
printf("\nThe book you want to retrun are not exit!\n");
else
{
strcpy(p->data.bookmark,"N");
strcpy(p->data.memberid,"0");
printf("\nsuccessed!\n");
}
printf("\nPress anykey return.....");
getchar();
getchar();
}
void bookmanagetitle()
{
system("cls");
printf(" BOOK MANAGE MENU \n");
printf("*********************************************\n");
printf("*1:Look all books *\n");
12
printf("*-------------------------------------------*\n");
printf("*2:Add book *\n");
printf("*-------------------------------------------*\n");
printf("*3:Select book by id *\n");
printf("*-------------------------------------------*\n");
printf("*4:Delete book by id *\n");
printf("*-------------------------------------------*\n");
printf("*5:Borrow book *\n");
printf("*-------------------------------------------*\n");
printf("*6:Return book *\n");
printf("*-------------------------------------------*\n");
printf("*0:Return to main form *\n");
printf("*********************************************\n");
printf("\nPlease input order:\n");
}
void bookmanage()
{
int ch;
while(1)
{
bookmanagetitle();
scanf("%d",&ch);
if(ch==0)
break;
switch(ch)
{
case 1:printbookinfo(head);
break;
case 2:addbook();
break;
case 3:select();
break;
case 4:deletebook();
break;
case 5:borrow();
break;
case 6:returnbook();
break;
case 0:break;
default:printf("\nTou have input the wrong order!\n");
printf("Press anykey return.....");
getchar();
getchar();
}
13
}
}
void printmemberinfo(mlinknode head) {
mlinknode mp=head->next;
system("cls");
printf("The member infomations are....\n");
printf("%-7s%s\n","id","name");
printf("********************************************\n");
for(;mp!=NULL;mp=mp->next)
printf("%-7s%s\n",mp->data.memberid,mp->data.membername);
printf("\nPress anykeykey return.....");
getchar();
getchar();
}
void addmember()
{
mlinknode p=(mlnode*)malloc(sizeof(mlnode));
system("cls");
printf("Add member.....\n");
printf("%-7s%s\n","id","name");
printf("*******************************************\n");
scanf("%s%s",p->data.memberid,p->data.membername);
p->next=mhead->next;
mhead->next=p;
printf("\nAdd success!");
printf("\nPress anykey return.....");
getchar();
getchar();
}
void selectmember()
{
char id[5];
mlinknode p;
system("cls");
printf("select member by id.....\n");
p=mhead->next;
printf("Please input member id:\n");
scanf("%s",id);
while(p!=NULL)
{
if(strcmp(p->data.memberid,id)==0)
break;
else
14
p=p->next;
}
if(p==NULL)
printf("\nThe member not exit!\n");
else
{
printf("\n%-7s%s\n","id","name");
printf("*****************************************\n");
printf("%-7s%s\n",p->data.memberid,p->data.membername);
}
printf("\nPress anykey return.....");
getchar();
getchar();
}
void deletemember()
{
char id[5];
mlinknode p,q;
system("cls");
printf("delete member.....\n");
mhead->next; p=
q=mhead;
printf("Please input member id:\n");
scanf("%s",id);
while(p!=NULL)
{
if(strcmp(p->data.memberid,id)==0)
break;
else
{
q=p;
p=p->next;
}
}
if(p==NULL)
printf("\nThe member you want to delete are not exit!\n");
else
{
q->next=p->next;
free(p);
printf("\nDelete success!\n");
}
printf("\nPress anykey return.....");
getchar();
15
getchar();
}
void membermanagetitle()
{
system("cls");
printf(" MEMBER MANAGE MENU \n");
printf("*******************************************\n");
printf("*1:Look all memberinfo *\n");
printf("*-----------------------------------------*\n");
printf("*2:Add member *\n");
printf("*-----------------------------------------*\n");
printf("*3:Select member by id *\n");
printf("*-----------------------------------------*\n");
printf("*4:Delete member by id *\n");
printf("*-----------------------------------------*\n");
printf("*0:Return to main form *\n");
printf("*******************************************\n");
printf("\nPlease input order:\n");
}
void membermanage()
{
int ch;
while(1)
{
membermanagetitle();
scanf("%d",&ch);
if(ch==0)
break;
switch(ch)
{
case 1:printmemberinfo(mhead);
break;
case 2:addmember();
break;
case 3:selectmember();
break;
case 4:deletemember();
break;
case 0:break;
default:printf("\nYou have input the wrong order!\n");
printf("Press anykey return.....");
getchar();
getchar();
}
16
}
}
void main()
{
int ch;
initallinfo();
while(1)
{
mainmenu();
scanf("%d",&ch);
switch(ch)
{
case 1:bookmanage();
break;
case 2:membermanage();
break;
case 0:exit(0);
default:printf("\nYou have input the wrong order!\n");
printf("Press anykey return.....");
getchar();
getchar();
}
}
}
5(课程设计
心得
信息技术培训心得 下载关于七一讲话心得体会关于国企改革心得体会关于使用希沃白板的心得体会国培计划培训心得体会
及存在问题
在这次课程设计中,我加深了对链表这个数据结构的理解和认识,学会了链表的建立、结点的加入和删除、信息的输出、简单图形界面的构建等多种功能。在链表方面,虽然学习了理论知识,但对它的具体应用,通过课程设计实际的应用了链表。对于操作界面,我觉得还有很多要学,通过课程设计,对此有了一些了解。在调试过程中,从文件中读入数据,建立链表比较困难,要用到”rb”文件,只能用原来的文件。这次课程设计,使我加深了对《数据结构》这门课的理解,认识到数据结构的重要性,计算机科学思想精妙,我要努力学习。
17