- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第21章 图书管理系统开发实例 前面的章节系统地介绍了C语言的基本概念和重要知识点,并通过大量的范例来实现演示它们的使用方法和特性。为了使读者能够掌握C语言开发的基本步骤和熟练使用C语言的一些特性,下面以图书管理系统为例来介绍的应用程序开发过程。 21.1 需求分析 对于图书管理系统而言,其最重要的功能是管理图书,包括增加书籍、删除书籍和查询书籍。其中,删除书籍和查询书籍的功能又可以细化为很多功能,比如删除某一个时间段内增加的书籍、删除某个作者的书籍、显示某个作者的所有书籍、显示书名带某个关键字的书籍等等。其次,需要提供一个友好的交互界面,这是用户接触到的最直接的东西,其设计必须人性化;然后还需要一些辅助功能,比如日志功能,它可以将所有的操作都记录在案。实际上,一个完整的图书系统还需要包括另外两个重要的功能:用户管理和数据库系统。由于篇幅有限,本系统将不考虑这两个功能。 21.1 需求分析 整理以上的需求分析,可以得出本图书管理系统需要实现的功能主要包括以下三点: 提供友好的用户交互界面; 提供书籍的增加、删除、查询、批量创建等操作; 提供历史日志以记录操作信息。 21.2 系统设计 系统设计阶段可以理解为程序的概要设计,需要完成对系统结构的分析和设计,以及设计系统需要的主要数据结构。本小节将基于需求分析的结果,依次讨论了图书管理系统的系统架构和数据类型。 21.2.1 系统架构 根据需求分析的结果,本系统至少要分为以下几个模块:main函数模块、用户界面管理模块、数据管理模块和历史日志模块。其中: main函数模块的主要功能为提供程序入口、前期环境设置、调用主要的执行函数和程序结束前的数据处理。 用户界面管理模块主要提供用户交互界面,并在用户选择命令后触发相应模块。 21.2.1 系统架构 数据管理模块的功能为本系统的核心模块,提供所有对书籍数据的操作请求的处理,包括增加书籍、删除书籍、搜索书籍、批量删除书籍、高级搜索书籍等等。 历史日志模块主要提供用户行为记录、系统信息记录、异常信息记录等功能。 辅助模块:全局配置模块。在这个模块中,会包含一些全局使用的信息,比如全局变量的定义,const变量、具名常量、枚举常量的定义等。 21.2.1 系统架构 根据以上功能模块的划分,本系统的软件结构设计如下图所示。 21.2.2 数据结构 本图书管理系统的核心数据对象是书籍。书籍信息中包含很多信息,包括:书名、作者、出版社、出版日期、入库日期、入库编号和页数等。因此,处理书籍信息的数据类型必须为结构体,将其命名为BookInfor。其中,书名、作者和出版社的数据类型为字符数组;入库编号和页数选择使用整型;而出版日期和入库日期由于包含年、月、日信息,因此需要使用另一个结构体,将其命名为TimeInfor。 21.2.2 数据结构 因此,书籍信息类型可以声明如下: 01 typedef struct { 02 char name[LEN_BOOK_NAME]; /* 书名*/ 03 char author[LEN_AUTHER_NAME]; /* 作者*/ 04 char publisher[LEN_PUBLISHER_NAME]; /* 出版社*/ 05 int serial; /* 编号*/ 06 int page; /* 页数*/ 07 TimeInfor time_pub; /* 出版日期*/ 08 TimeInfor time_in; /* 入库日期*/ 09 } BookInfor; /* 书籍信息类型 */ 21.2.2 数据结构 年份的值可以处理为4位整数,可以存储在16位二进制数中;月份和日子都可以处理为2位整数,都可以存储在8位二进制数中:因此,可以将时间数据类型TimeInfor处理为位域类型,声明如下: 01 typedef struct { 02 unsigned year : 16; /* 年*/ 03 unsigned month : 8; /* 月*/ 04 unsigned day : 8; /* 日*/ 05 } TimeInfor; /* 时间信息类型*/ 21.2.2 数据结构 本系统中的书籍数据是大批量数据,因此需要选择使用数组或者链表保存书籍数据。考虑到图书管理系统会很频繁地访问书籍信息,而增加和删除的操作相对较少,因此选择使用数组来保存。而又由于书籍数目是不可预期的,因此最好使用动态数组来处理数据。 注意:数据结构要考虑时间复杂度和空间复杂度,同时还要考虑实现的复杂度。 21.3 main模块 mai
文档评论(0)