logo资料库

图书借阅管理系统.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示
1 设计目的 《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨 论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行 简单的分析和讨论。进行数据结构课程设计要达到以下目的:  了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;  初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;  提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工 作方法和作风。 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 0002 0003 0004 0005 0006 0007 0008 0009 0010 sanguoyanyi luoguanzhong hongloumeng caoxueqin xiyouji wuchengen shuihuzhuan shinaian javascript Join cprogrom tanghaoqiang liaozhaizhiyi pusongling jia richu nahan bajin caoyu luxun N N Y N N N Y N Y N 会员信息表 0 0 001 0 0 0 007 0 003 0 5
memberid membername 001 002 003 004 005 006 zhouxicai longqidong lipengfei gaopeng chenwentang 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
分享到:
收藏