图书馆管理系统程序设计方案.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图书馆管理系统程序设计方案 . 系统分析 2.1 数据需求 本系统主要是简单管理的系统。本 图1功能模块图 (1)添加图书信息模块 添加图书基本信息:图书编号、图书名、作者、图书类别、出版社、图书定价、图书简介。 (2) 修改图书信息模块 对会图书内部信息的修改,修改图书的基本信息:图书名、图书编号、作者、图书类别、出版社、图书定价、图书简介。 (3) 查询图书信息模块 对图书内部信息的查询包括通过书名查询和按类别查询。查询的结果显示为图书名、图书编号、作者、图书类别、出版社、图书定价、图书简介。 (4)删除图书信息模块 可以删除图书的所有基本信息。 (5) 按类别统计模块 可将图书按类别统计其图书个数。 (6) 统计总数模块 对图书总数进行统计。 (7) 图示借阅模块 可实现对图书的借阅,需输入学生信息。 (8) 图书归还模块 归还图书,增加图书的现存量。 (9) 读取模块 读取储存的图书基本信息。 3.2系统设计方案 (1) 菜单 设计一个总菜单,1添加图书信息,2根据书名查找图书,3修改图书信息,4删除图书信息,5 图书归还,6图书总数统计,7图书借阅,8储存,9按类别查询图书,10读取图书信息,基本功能的实现都将体现在菜单选项中。 (2) 数据结构 建立结构体如下: struct book { long digit;//图书编号 char name[50];//书名 char author[20];//作者 char gategory[20];//图书类别 char phouse[20];//出版社 long price;//定价 char synopsis[20];//图书简介 struct book *next;//struct book 类型的结构体成员 }*head; //定义一个指向结构体的指针 根据模块需要本系统需要用到链表结构。 (3) 函数 定义了12个函数,都实现以下功能: void menu();//主菜单 void print();//输出 void creat();//创建 void search_name()//按姓名查询; void search gategory ();//按类别查询 void modify();//修改 void del();//删除 void l();//按类别统计 void w();//统计总数 void MH(struct book *p,char a[])//;模糊查询 void save();//储存 void read()//读取 4. 详细设计和实现 4.1创建模块 创建模块:分为2个部分1输出、2创建。 (1)输出部分流程图:如图2所示。 图2输出流程图 输出部分创建一个结构体struct book结构体内有成员7个:编号,名字,作者,类别,出版社,价格简介。输出程序流程如图2所示。 (2)创建部分如图3所示。 图3 创建模块流程图 所谓创建是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。设3个指针变量:head、P1、P2它们都是用来指向struct book 类型数据的。先用malloc函数开辟第一个结点,并使P1 P2,它们都用来指向它。然后从键盘读入一个图书的数据给p1所指的第一个结点。我们设定编号不能为0如果输入图书编号为0,则表示链表建立的过程完成,该结点不应该连接到链表中。先使head的值为NULL,这是链表为空的情况。当建立第一个结点的时候head指向该结点。如果输入的p1-num不等于0则输入第一个结点数据(n=1),令head=p1,即把p1的值赋给head,也就是使head也指向新开辟的结点。然后在开辟另一个结点并使p1指向它,接着输入该结点的数据。如果输入的p1-num!=0,则应链入第二个结点(n=2),由于n!=1,则将p1的值赋给p2-next,此时p2指向第一个节点,因此执行“p2-next=p1”就将新结点的地址赋给第一个结点的next成员,使第一个结点的next成员指向第二个结点。接着使p2=p1,也就是使p2指向刚才建立的结点。接着在开辟一个结点并使p1指向它,并输入该结点的数据。在第三次循环中,由于n=3(n!=1),又将p1的值赋给p2-next,也就是将第三个结点连接到第二个结点之后,并使p2=p1,使p2指向最后一个结点。再开辟一个新的结点,并使p1指向它,输入该结点的数据。由于p1-num的值是0,不再执行循环,此新结点不应被连接到链表中。此时将NULL赋给p2-next,建立链表的过程至此结束。P1最后指向的结点未链入链表中,第三个结点的next成员的值为NULL,它不指向任何结点。虽然p1指向新开辟的

文档评论(0)

你好世界 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档