资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
联系方式:http:/www.rzchina.net北京源智天下科技有限公司第第2121章章 图书管理系统开发实例图书管理系统开发实例前面的章节系统地介绍了前面的章节系统地介绍了C语言的基本概念和重要知识点,语言的基本概念和重要知识点,并通过大量的范例来实现演示它们的使用方法和特性。为并通过大量的范例来实现演示它们的使用方法和特性。为了使读者能够掌握了使读者能够掌握C语言开发的基本步骤和熟练使用语言开发的基本步骤和熟练使用C语语言的一些特性,下面以图书管理系统为例来介绍的应用程言的一些特性,下面以图书管理系统为例来介绍的应用程序开发过程。序开发过程。烧四拨殴膝衅消肘闺波卫链婿央妨几坟椎藉莱筑偶撞象守算啡医滴漂告采第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.1 21.1 需求分析需求分析对于图书管理系统而言,其最重要的功能是管理图书,包括对于图书管理系统而言,其最重要的功能是管理图书,包括增加书籍、删除书籍和查询书籍。其中,删除书籍和查询增加书籍、删除书籍和查询书籍。其中,删除书籍和查询书籍的功能又可以细化为很多功能,比如删除某一个时间书籍的功能又可以细化为很多功能,比如删除某一个时间段内增加的书籍、删除某个作者的书籍、显示某个作者的段内增加的书籍、删除某个作者的书籍、显示某个作者的所有书籍、显示书名带某个关键字的书籍等等。其次,需所有书籍、显示书名带某个关键字的书籍等等。其次,需要提供一个友好的交互界面,这是用户接触到的最直接的要提供一个友好的交互界面,这是用户接触到的最直接的东西,其设计必须人性化;然后还需要一些辅助功能,比东西,其设计必须人性化;然后还需要一些辅助功能,比如日志功能,它可以将所有的操作都记录在案。实际上,如日志功能,它可以将所有的操作都记录在案。实际上,一个完整的图书系统还需要包括另外两个重要的功能:用一个完整的图书系统还需要包括另外两个重要的功能:用户管理和数据库系统。由于篇幅有限,本系统将不考虑这户管理和数据库系统。由于篇幅有限,本系统将不考虑这两个功能。两个功能。陶复宙鞠框甸檄冠迭蒂授茶外答陡值斋迫自憎覆嚼哗宁胡备翘潍乃煤梢浆第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.1 21.1 需求分析需求分析整理以上的需求分析,可以得出本图书管理系统需要实现的整理以上的需求分析,可以得出本图书管理系统需要实现的功能主要包括以下三点:功能主要包括以下三点:提供友好的用户交互界面;提供友好的用户交互界面;提供书籍的增加、删除、查询、批量创建等操作;提供书籍的增加、删除、查询、批量创建等操作;提供历史日志以记录操作信息。提供历史日志以记录操作信息。喻燕旗稍捕课讳密藩谴稿忍教匝窜烩殉撩猴了嘉访郴嘘嘴秤宅园荒姜蝇寥第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2 21.2 系统设计系统设计系统设计阶段可以理解为程序的概要设计,需要完成对系统系统设计阶段可以理解为程序的概要设计,需要完成对系统结构的分析和设计,以及设计系统需要的主要数据结构。结构的分析和设计,以及设计系统需要的主要数据结构。本小节将基于需求分析的结果,依次讨论了图书管理系统本小节将基于需求分析的结果,依次讨论了图书管理系统的系统架构和数据类型。的系统架构和数据类型。这嫂华玖虱渔鸥喀森鸥喷弯换丑美瞥辫琅涉捏骆翼拱趣坠妈浅映征晓毕芽第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2.1 21.2.1 系统架构系统架构根据需求分析的结果,本系统至少要分为以下几个模块:根据需求分析的结果,本系统至少要分为以下几个模块:main函数模块、用户界面管理模块、数据管理模块和历函数模块、用户界面管理模块、数据管理模块和历史日志模块。其中:史日志模块。其中:main函数模块的主要功能为提供程序入口、前期环境设置、函数模块的主要功能为提供程序入口、前期环境设置、调用主要的执行函数和程序结束前的数据处理。调用主要的执行函数和程序结束前的数据处理。用户界面管理模块主要提供用户交互界面,并在用户选择命用户界面管理模块主要提供用户交互界面,并在用户选择命令后触发相应模块。令后触发相应模块。柒剃瑶丽冗响淫铆胜拥与瑞拥铃招妖釉褂吗羹以钓括肌赁浸溶灵豺于凄肢第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2.1 21.2.1 系统架构系统架构数据管理模块的功能为本系统的核心模块,提供所有对书籍数据管理模块的功能为本系统的核心模块,提供所有对书籍数据的操作请求的处理,包括增加书籍、删除书籍、搜索数据的操作请求的处理,包括增加书籍、删除书籍、搜索书籍、批量删除书籍、高级搜索书籍等等。书籍、批量删除书籍、高级搜索书籍等等。历史日志模块主要提供用户行为记录、系统信息记录、异常历史日志模块主要提供用户行为记录、系统信息记录、异常信息记录等功能。信息记录等功能。辅助模块:全局配置模块。在这个模块中,会包含一些全局辅助模块:全局配置模块。在这个模块中,会包含一些全局使用的信息,比如全局变量的定义,使用的信息,比如全局变量的定义,const变量、具名常变量、具名常量、枚举常量的定义等。量、枚举常量的定义等。徐钥贴薯絮究抒领邮技娥抗刺沦召敛牵弛二嘉仔躲猾疵俩太苦贮垒阜莽叶第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2.1 21.2.1 系统架构系统架构根据以上功能模块的划分,本系统的软件结构设计如下图所根据以上功能模块的划分,本系统的软件结构设计如下图所示。示。掳蛙阮甚淀架枢坐姜恶永绪搏芬围蚌竖公课挖马终揪肩史幽寓浆卷菩瑟掸第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2.2 21.2.2 数据结构数据结构本图书管理系统的核心数据对象是书籍。书籍信息中包含很本图书管理系统的核心数据对象是书籍。书籍信息中包含很多信息,包括:书名、作者、出版社、出版日期、入库日多信息,包括:书名、作者、出版社、出版日期、入库日期、入库编号和页数等。因此,处理书籍信息的数据类型期、入库编号和页数等。因此,处理书籍信息的数据类型必须为结构体,将其命名为必须为结构体,将其命名为BookInfor。其中,书名、作。其中,书名、作者和出版社的数据类型为字符数组;入库编号和页数选择者和出版社的数据类型为字符数组;入库编号和页数选择使用整型;而出版日期和入库日期由于包含年、月、日信使用整型;而出版日期和入库日期由于包含年、月、日信息,因此需要使用另一个结构体,将其命名为息,因此需要使用另一个结构体,将其命名为TimeInfor。信咒馏闰驹咖靖畦惺佑盾拜痊握苑桌缩吸截奸桑懊珊为红滩关影靠唇触宅第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2.2 21.2.2 数据结构数据结构因此,书籍信息类型可以声明如下:因此,书籍信息类型可以声明如下:01typedef struct 02 char nameLEN_BOOK_NAME;/* 书名书名*/03 char authorLEN_AUTHER_NAME;/* 作者作者*/04 char publisherLEN_PUBLISHER_NAME;/* 出出版社版社*/05 int serial;/* 编号编号*/06 int page;/* 页数页数*/07 TimeInfor time_pub;/* 出版日期出版日期*/08 TimeInfor time_in;/* 入库日期入库日期*/09 BookInfor;/* 书籍信息类型书籍信息类型 */疲克弥赖氮援容袄具滑烹氮百牵隆首初腺泳肉课铂髓喷魂炙雾情雍卖茁同第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2.2 21.2.2 数据结构数据结构年份的值可以处理为年份的值可以处理为4位整数,可以存储在位整数,可以存储在16位二进制数中;位二进制数中;月份和日子都可以处理为月份和日子都可以处理为2位整数,都可以存储在位整数,都可以存储在8位二位二进制数中:因此,可以将时间数据类型进制数中:因此,可以将时间数据类型TimeInfor处理为处理为位域类型,声明如下:位域类型,声明如下:01typedef struct 02 unsigned year : 16;/* 年年*/03 unsigned month : 8;/* 月月*/04 unsigned day : 8;/* 日日*/05 TimeInfor;/* 时间信息类型时间信息类型*/量变焉隶辟庭汀婪诧歪泊押迹疼忆挞往寺填泽决蜡秤濒掖旬师捕瞄理挽房第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.2.2 21.2.2 数据结构数据结构本系统中的书籍数据是大批量数据,因此需要选择使用本系统中的书籍数据是大批量数据,因此需要选择使用数组或者链表保存书籍数据。考虑到图书管理系统数组或者链表保存书籍数据。考虑到图书管理系统会很频繁地访问书籍信息,而增加和删除的操作相会很频繁地访问书籍信息,而增加和删除的操作相对较少,因此选择使用数组来保存。而又由于书籍对较少,因此选择使用数组来保存。而又由于书籍数目是不可预期的,因此最好使用动态数组来处理数目是不可预期的,因此最好使用动态数组来处理数据。数据。注意:数据结构要考虑时间复杂度和空间复杂度,同时注意:数据结构要考虑时间复杂度和空间复杂度,同时还要考虑实现的复杂度。还要考虑实现的复杂度。懂黔坚阳滔揪谅玫策先辩懒隅弄悉牙潦南夯挂善翰阎卤掩洒坟智透怪剁翅第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.3 main21.3 main模块模块main模块包含在模块包含在main.c文件中,其主题有三个函数:文件中,其主题有三个函数:main函数、函数、configure函数和函数和clean函数。函数。main函数即为读者函数即为读者早已熟悉的程序入口函数,其负责调用系统执行时的各个早已熟悉的程序入口函数,其负责调用系统执行时的各个主要函数。而主要函数。而configure函数的功能为在程序开始时初始函数的功能为在程序开始时初始化或配置各种必须的变量和环境。化或配置各种必须的变量和环境。愉茧姬哦振疆相烽组屋诱距铀银扩翟台好垢脐授鸽枉另擒仰庇驴聚则纲叙第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.3 main21.3 main模块模块clean函数的作用与函数的作用与configure函数相对应,其负责程序结束函数相对应,其负责程序结束前的清理工作,比如清除程序中分配的堆内存等。本模块前的清理工作,比如清除程序中分配的堆内存等。本模块的程序流程图如下图所示,这也就是的程序流程图如下图所示,这也就是main函数的程序流函数的程序流程图。程图。现留奠遵货汞札喂萌葬误爆蔡埂泳酮齐师磊倘妓拎绅勒肝稽舜遇啪堰驱褒第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4 21.4 用户界面模块用户界面模块用户界面模块的主要功能为图书管理系统的使用提供一个命用户界面模块的主要功能为图书管理系统的使用提供一个命令选择和导航的功能。现在流行的管理软件基本都是基于令选择和导航的功能。现在流行的管理软件基本都是基于图形界面的,图形界面的,C语言也可以实现图形界面,但由于篇幅的语言也可以实现图形界面,但由于篇幅的限制,本系统只提供一个基于命令行的交互界面。具体地限制,本系统只提供一个基于命令行的交互界面。具体地讲,本系统提供的交互方式与现行的电话服务系统类似:讲,本系统提供的交互方式与现行的电话服务系统类似:先列出一些以数字引导的命令选项,再由使用者输入选项先列出一些以数字引导的命令选项,再由使用者输入选项编号实现命令选择。编号实现命令选择。涕龄理佩哈赘秸整哎疥憾谋渗摆解千心雏娩块唱胜撇阻所询海峭焊澄绪坑第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.1 21.4.1 程序流程程序流程将以上本模块的功能具体化并整理为如下:将以上本模块的功能具体化并整理为如下:(1)进入用户界面模块(其方式为在)进入用户界面模块(其方式为在main函数中调用该模函数中调用该模块的主菜单)。块的主菜单)。(2)打印出主菜单,要求含有系统名称和第一级菜单,该)打印出主菜单,要求含有系统名称和第一级菜单,该第一级菜单的内容要求包括主要的功能选择:增加书籍、第一级菜单的内容要求包括主要的功能选择:增加书籍、删除书籍、搜索书籍、批量删除、高级搜索和退出。删除书籍、搜索书籍、批量删除、高级搜索和退出。(3)提示用户根据菜单选择要执行的功能。)提示用户根据菜单选择要执行的功能。(4)进入选择的功能模块;如果该功能模块又含有多个选)进入选择的功能模块;如果该功能模块又含有多个选择,要求输出下一级菜单。所有的下层菜单选项中,要求择,要求输出下一级菜单。所有的下层菜单选项中,要求都含有返回上级菜单的选项。都含有返回上级菜单的选项。丽曼慢媒首税莆仁值掌疑嘘馅谭慎植汰赊汀尖略绵饺蚤奢咆坐它赤夫环舒第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.1 21.4.1 程序流程程序流程根据以上功能要求的描述设计出本系统的菜单导航示意图如根据以上功能要求的描述设计出本系统的菜单导航示意图如下图所示。该图同时也是本模块主要函数以及函数间调用下图所示。该图同时也是本模块主要函数以及函数间调用的程序流程图。的程序流程图。刃律邀贴臃战债聊锁三磕蜂吝痞烟赖诣诧窒锗肇随材柄轨读赦径煎妆哭瓷第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.2 21.4.2 代码实现代码实现用户界面模块功能的代码实现都包含在用户界面模块功能的代码实现都包含在menu.c文件中,文件中,menu.h文件包含了文件包含了menu.c文件的接口信息。文件的接口信息。menu.c中中需要含有所有的菜单打印函数和选择命令后触发下一操作需要含有所有的菜单打印函数和选择命令后触发下一操作的过程。的过程。秀帘弛来傍彪怂失邵眩户遣里哦逆换煤粤振亿葵戒芍起谗崎楔佃蹈戏巢斯第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.2 21.4.2 代码实现代码实现因此,因此,menu.c文件需要包括以下函数:文件需要包括以下函数:menu_main函数,打印主界面和第一级菜单,并选择函数,打印主界面和第一级菜单,并选择下一操作。下一操作。menu_add函数,打印增加书籍的二级菜单,并选择下函数,打印增加书籍的二级菜单,并选择下一操作。一操作。menu_delete函数,输出删除书籍的二级菜单,并选函数,输出删除书籍的二级菜单,并选择下一操作。择下一操作。menu_search函数,输出搜索书籍的二级菜单,并选函数,输出搜索书籍的二级菜单,并选择下一操作。择下一操作。剩摇隐珠凉宪枚目宦罕励叼茅巍策爵贾蓬烫硷绅螟锌韵亡混明哄樱蔫果惕第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.2 21.4.2 代码实现代码实现menu_batch_del函数,输出批量删除书籍的二级函数,输出批量删除书籍的二级菜单,并选择下一操作。菜单,并选择下一操作。menu_advanced_sear函数,输出高级搜索书籍函数,输出高级搜索书籍的二级菜单,并选择下一操作。的二级菜单,并选择下一操作。menu_reload函数,输出载入书籍数据的二级菜单,函数,输出载入书籍数据的二级菜单,并选择下一操作。并选择下一操作。menu_exit函数,退出操作所有二级菜单,在这里函数,退出操作所有二级菜单,在这里给出提示信息,并退出程序。给出提示信息,并退出程序。menu_error函数,提示错误信息,并触发下一操函数,提示错误信息,并触发下一操作。作。郁进酸阮鄙抛链悲饭寒空滥豁锗照揉村摈褒笑惶违酷贿茁躯讨苛鸣婶往油第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.2 21.4.2 代码实现代码实现在这些函数中,除了在这些函数中,除了menu_main函数会被外部调用外,函数会被外部调用外,其他函数暂时都只需要在本文件内使用,因此其他函数暂时都只需要在本文件内使用,因此menu.h文件中只需包含文件中只需包含menu_main这个函数的声这个函数的声明,同时其余函数都声明为明,同时其余函数都声明为static函数。若在以后需函数。若在以后需要在其他文件中调用这些要在其他文件中调用这些static函数,再回来修改它函数,再回来修改它的声明即可。的声明即可。注意:把所有不允许外部使用的函数都定义为注意:把所有不允许外部使用的函数都定义为static函函数,以增强模块封装性。数,以增强模块封装性。佯裸帆恫麓吟厦字暮酥踪滓锯力决祭萍赣棺皿钙南烫偏郑咎嚎某阴疚施言第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.3 21.4.3 编写编写menu_mainmenu_main函数:打印主界面和第函数:打印主界面和第一级菜单一级菜单menu_main函数分为两部分,第一部分为主菜单内容,第函数分为两部分,第一部分为主菜单内容,第二部分为输入选择,第三部分为根据选择触发对应的选项。二部分为输入选择,第三部分为根据选择触发对应的选项。设记趴搓偷煽舔棚秽敦费缕弹糕槽懦酣掺寒兼祥百另惫贴智豹箔祸耗慈态第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.4 21.4.4 编写编写menu_choicemenu_choice函数函数此函数只在此函数只在menu.c中使用,因此可声明为中使用,因此可声明为static函数。其功函数。其功能为从键盘输入一个大于能为从键盘输入一个大于0并且小于指定数值的整数。并且小于指定数值的整数。怂草陷黔救先抿挚殆篆尸栋谤橇银饶蝉渣闻搂撅壁嫁缮怔罕林轮霍神卜菏第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.5 21.4.5 编写编写menu_addmenu_add函数:打印增加书籍的函数:打印增加书籍的二级菜单,二级菜单,menu_add函数提供了增加书籍的交互命令,从标准输入获函数提供了增加书籍的交互命令,从标准输入获取书籍信息,并调用数据管理模块中的书籍增加函数取书籍信息,并调用数据管理模块中的书籍增加函数book_add,最后调用日志模块中的记录功能。进入,最后调用日志模块中的记录功能。进入menu_main函数后,当出现图函数后,当出现图21-4后,如果选择选项后,如果选择选项1,则会触发,则会触发memu_add函数。由于该菜单函数只在用户函数。由于该菜单函数只在用户界面模块中调用,并只在界面模块中调用,并只在menu.c函数中调用,因此可以函数中调用,因此可以将其定义为将其定义为static函数。函数。先矩筑棋悯项吃衣话励怂障晾梭乌艾琴恤互鸣恳擞陷面昂启锌瘟抿囤尖最第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.6 21.4.6 编写编写menu_deletemenu_delete函数:输出删除书籍函数:输出删除书籍的二级菜单的二级菜单menu_delete函数提供了删除书籍的交互界面。本系统提供函数提供了删除书籍的交互界面。本系统提供了多种删除书籍的功能,包括按照书名删除、按作者删除、了多种删除书籍的功能,包括按照书名删除、按作者删除、按出版社删除等,因此本函数需要提供二级菜单,以供用按出版社删除等,因此本函数需要提供二级菜单,以供用户选择;与户选择;与menu_main函数类似,提供二级菜单后,需函数类似,提供二级菜单后,需要提供一个选择结构以触发数据管理模块中的各种相应删要提供一个选择结构以触发数据管理模块中的各种相应删除操作;最后,同样要提供日志记录和回到本级目录的功除操作;最后,同样要提供日志记录和回到本级目录的功能。能。舆刮忘哺送暖闻屉淫椅杯还淹郎域柔蓬虱馈哎妇噶馅仟睹文严宴君珊戚卷第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.7 21.4.7 编写编写menu_searchmenu_search函数:输出搜索书籍函数:输出搜索书籍的二级菜单的二级菜单menu_searchsearch函数与函数与menu_delete函数类似。它提供了搜函数类似。它提供了搜索书籍的交互界面。同样地,本系统提供了多种搜索书籍索书籍的交互界面。同样地,本系统提供了多种搜索书籍的功能,包括按照书名搜索、按作者搜索、按出版社搜索的功能,包括按照书名搜索、按作者搜索、按出版社搜索等,因此本函数需要提供二级菜单,以供用户选择;同样等,因此本函数需要提供二级菜单,以供用户选择;同样地,提供二级菜单后,需要提供一个选择结构以触发数据地,提供二级菜单后,需要提供一个选择结构以触发数据管理模块中的各种相应搜索操作;最后,同样要提供日志管理模块中的各种相应搜索操作;最后,同样要提供日志记录和回到本级目录的功能。由于本函数功能和逻辑都与记录和回到本级目录的功能。由于本函数功能和逻辑都与menu_search类似,由于篇幅限制,在此不多做介绍。类似,由于篇幅限制,在此不多做介绍。荫腮椭筐侦诲扎露咏阂锤靴昨紊惧弥制明宗控昨隶釜亚娜亢匡腾罢枕喧么第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.8 21.4.8 编写编写menu_reloadmenu_reload函数:输出载入书籍函数:输出载入书籍数据的二级菜单数据的二级菜单menu_reload函数提供了从文件中导入书籍信息的交互界面,并函数提供了从文件中导入书籍信息的交互界面,并触发导入数据的操作,最后记录日志后返回上级目录。函数实触发导入数据的操作,最后记录日志后返回上级目录。函数实现如下:现如下:01 static void menu_reload(void) /* 重载的菜重载的菜单单*/02 char file_nameLEN_FILE_NAME = 0;/* 定定义文件名字义文件名字*/03 printf(Reload which file:);/* 提示信息提示信息*/04 scanf(%s, file_name);/* 输入文件名输入文件名*/05 book_reload(file_name);/* 重载数据重载数据*/0607 LOG_ACTIVITY(End to reload books.);/* 记记录日志录日志*/08 menu_main();/* 返回上级菜单返回上级菜单*/09 笺窝略狗赃懦徐氧陈曾敬番腆允陶希赖托骄怔翻姐恍系亭褪闭要泡胸申怕第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.4.9 21.4.9 编写编写menu_exitmenu_exit函数:退出所有二级菜函数:退出所有二级菜单单当菜单选择时,如果输入值超出范围,将调用当菜单选择时,如果输入值超出范围,将调用menu_exit函函数。其功能为记录日志并退出系统。代码实现如下所示:数。其功能为记录日志并退出系统。代码实现如下所示:01static void menu_exit(void) /* 退出的菜单退出的菜单*/02 LOG_ERROR(Quit the book management system.);/* 记录日志记录日志 */03 exit(1);/* 退出系统退出系统 */04友呜部崎利痛彝殉翅踢崖最聚邹寐记三殃统登蔓哀休攻雄您瞅乓啮顾襟骇第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5 21.5 日志模块日志模块在所有的系统中,日志模块是必不可少的。它使使用者可以在所有的系统中,日志模块是必不可少的。它使使用者可以查看操作记录,还可以使管理者跟踪程序信息。在本系统查看操作记录,还可以使管理者跟踪程序信息。在本系统中,日志模块完成两个功能:一、记录异常情况;二、记中,日志模块完成两个功能:一、记录异常情况;二、记录用户的操作记录。每次做记录时都输出到两个地方:标录用户的操作记录。每次做记录时都输出到两个地方:标准输出和日志文件。在介绍本模块的实现之前,先简单介准输出和日志文件。在介绍本模块的实现之前,先简单介绍一下如何在绍一下如何在C程序中操作文件。程序中操作文件。士润丧卖沤否进变盔芋崖藉戮侯肘藏塌牢泵黎囤狸枢坟已踩酌附罪揽宪责第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5.1 21.5.1 打开和关闭文件打开和关闭文件C语言中对文件的操作必须通过文件指针进行。处理文件时,语言中对文件的操作必须通过文件指针进行。处理文件时,程序需要知道文件的属性信息,例如文件的性质、文件的程序需要知道文件的属性信息,例如文件的性质、文件的名字、文件的当前状态等。在名字、文件的当前状态等。在C程序中,这些信息以结构程序中,这些信息以结构体的方式结合在一起,每一个被操作的文件都会拥有一块体的方式结合在一起,每一个被操作的文件都会拥有一块内存空间存放属于它的结构体信息。这个结构体类型被定内存空间存放属于它的结构体信息。这个结构体类型被定义为义为FILE。基于。基于FILE变量,变量,C标准输入输出函数库定义标准输入输出函数库定义了了fopen函数和函数和fclose函数来实现文件的打开关闭操作。函数来实现文件的打开关闭操作。官杜恼恕默谭赵碴脆质赊墙酮茂炸仔酥脓撵步薛泽她舅休斧释缸榜嗜惭采第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5.1 21.5.1 打开和关闭文件打开和关闭文件fopen函数的声明如下:函数的声明如下:FILE * fopen(char * filename, char * mode);其中,其中,filename字符串包含要打开的文件路径及其文件名;字符串包含要打开的文件路径及其文件名;mode字符串字符串则代表打开文件的方式:若代表打开文件的方式:若为r,则为只只读;若若为w,为只写;若只写;若为+,则为可可读也可写。如果打开也可写。如果打开成功,成功,该函数返回打开文件的文件指函数返回打开文件的文件指针,必,必须通通过该指指针才能才能对文件文件进行操作;否行操作;否则,函数返回,函数返回NULL。fclose函数声明函数声明为:int fclose(FILE * fp);警告:警告:该函数必函数必须与与fopen函数配函数配对使用,如果使用,如果对一个不指一个不指向任何文件的文件指向任何文件的文件指针变量量调用用该函数,将函数,将导致致严重重错误。右较端均享阶低阴悼晨起哺希柿浮脯弃缺处中嗜怂左财碧搅孜驻漏汰希剃第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5.2 21.5.2 文件的格式化读写文件的格式化读写文件的格式化读写是以指定的格式对文件进行数据读写。文件的格式化读写是以指定的格式对文件进行数据读写。C语言也为文件格式化读写提供了函数:语言也为文件格式化读写提供了函数:fprintf函数和函数和fscanf函数。函数。当拍褒壕揉戎武孺亭浇域拥钧厕遁箍资托咙溜眶谬逸鸭滚剩疯坪豢堡在尔第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5.2 21.5.2 文件的格式化读写文件的格式化读写1fprintf函数函数fprintf函数的功能为将数值以指定的格式输出到指定的文件函数的功能为将数值以指定的格式输出到指定的文件中,声明如下:中,声明如下:int fprintf(FILE * fp, const char * 字符串字符串, 参数列表参数列表);fprintf函数的功能和函数的功能和printf函数很相似,只是函数很相似,只是printf函数指定函数指定了输出为标准输出文件,而了输出为标准输出文件,而fprintf可以指定输出位置。该可以指定输出位置。该函数中的字符串和参数列表的执行方式和函数中的字符串和参数列表的执行方式和printf函数中的函数中的完全一样,在此不多做介绍。如果执行成功,完全一样,在此不多做介绍。如果执行成功,fprintf函数函数将返回其输出的字符个数;如果执行失败,返回一个负数。将返回其输出的字符个数;如果执行失败,返回一个负数。粱腔肢奸切正爵姐甸练撞捣蕴斧掌蚤鸵咆苍极弱拎阎悠捉辕拂锥道拘圆谐第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5.2 21.5.2 文件的格式化读写文件的格式化读写2fscanf函数函数fscanf函数的功能为以指定的格式从文件中读取数值,声明函数的功能为以指定的格式从文件中读取数值,声明如下:如下:int fscanf(FILE * fp, const char *char 字符串字符串, 参数列表参数列表);fscanf函数的功能与函数的功能与scanf函数也很相似,函数也很相似,scanf函数指定了函数指定了输入为标准输入文件,而输入为标准输入文件,而fscanf函数可以指定输入位置。函数可以指定输入位置。同样,该函数中的字符串和参数列表的执行方式也与同样,该函数中的字符串和参数列表的执行方式也与scanf函数一样。如果函数执行成功,返回值为读取的字函数一样。如果函数执行成功,返回值为读取的字符个数;如果执行失败,返回符个数;如果执行失败,返回EOF。前吼界勺戮扫瓮懒祈篡描庆沤洛讽溉捕尺讥卜丝蓑货逻裕诈渤田扑讥祸垒第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5.3 21.5.3 打开和关闭日志文件打开和关闭日志文件在前面的功能分析中,已经知道日志模块会将日志记录到一在前面的功能分析中,已经知道日志模块会将日志记录到一个文件中。由于这个文件在程序从开始到结束都是要使用个文件中。由于这个文件在程序从开始到结束都是要使用的,因此将其定义为全局变量。在使用日志模块前,的,因此将其定义为全局变量。在使用日志模块前,g_logFile必须指向一个有效文件;而在程序结束之前,必须指向一个有效文件;而在程序结束之前,这个文件指针指向的文件必须被关闭。为了达到这个目的,这个文件指针指向的文件必须被关闭。为了达到这个目的,将文件打开操作放在将文件打开操作放在main模块的初始化操作函数模块的初始化操作函数configure中进行,将关闭文件的操作放在清除操作函数中进行,将关闭文件的操作放在清除操作函数clean中进行。中进行。车霸跨毖误毡蹭能央携椰掘姆绸汀珠驭唯喻罕浊讲河橡锗赶锤消耶隘砂午第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.5.4 log_error21.5.4 log_error函数和函数和log_activitylog_activity函数函数日志模块的两个功能分别在日志模块的两个功能分别在log_error函数和函数和log_activity函函数中实现。数中实现。log_error函数用于记录错误信息,函数用于记录错误信息,log_activity函数用于记录历史行为。函数用于记录历史行为。员骸丈亡能妒习叁赂鸳咸枢混哥垣棚首酣婚友站姿沉垛牛唐恒痔淖彤羹扒第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.6 21.6 数据管理模块数据管理模块数据管理模块是程序的核心部分,其主要功能为提供书籍管数据管理模块是程序的核心部分,其主要功能为提供书籍管理操作,包括增加、删除和搜索等;同时还需要提供为了理操作,包括增加、删除和搜索等;同时还需要提供为了实现这些功能需要的辅助函数,主要有实现这些功能需要的辅助函数,主要有TimeInfor数据的数据的处理、处理、BookInfor数据的处理。本小节将先介绍这些基本数据的处理。本小节将先介绍这些基本功能的实现。功能的实现。纯系佑提狡低貌区裳阁垃蛆褥柒辫圾贾捐弃晓迹拆窍捉诅拟犀作惋醛症韶第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.6.1 21.6.1 处理处理TimeInforTimeInfor数据数据TimeInfor数据用以存储时间,需要实现的处理函数有数据用以存储时间,需要实现的处理函数有3个:个:set_time_infor函数、函数、compare_time函数和函数和print_time_infor函数。函数。1set_time_for函数函数2compare_time函数函数3print_time_infor函数函数闯饿蓄距潭婆插粳懈谈官恫瞧颁俱敖刻团建谋里籽期寓挛轰寂窖饼饺修饥第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.6.2 21.6.2 处理处理BookInforBookInfor数据数据BookInfor数据类型是本系统的最重要的数据,在数据类型是本系统的最重要的数据,在data_manage.c中定义了中定义了3个函数操作该数据类型。个函数操作该数据类型。1set_book_infor函数函数2copy_book_infor函数函数3print_book_infor函数函数父摆坐乡鸵星融赛摸跪两座炊搅通鹃柠骄然毕艘诅迄尤韭侦捞泅孩蔫墒斑第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.6.3 21.6.3 增加书籍增加书籍以上两小节讨论了以上两小节讨论了TimeInfor数据类型和数据类型和BookInfor数据类型数据类型的处理,本小节开始将讨论操作函数,这些函数都由用户的处理,本小节开始将讨论操作函数,这些函数都由用户界面模块的二级菜单函数触发。首先讨论书籍的增加函数,界面模块的二级菜单函数触发。首先讨论书籍的增加函数,共有一个,即共有一个,即book_add函数,它由函数,它由menu_add函数触发。函数触发。该函数从为一个新的该函数从为一个新的BookInfor数据申请一块堆内存,将数据申请一块堆内存,将其赋值后增加到数组其赋值后增加到数组g_books中。中。鼎愚患敬昼饿即辣进酌墩茎救藏虾腋目裳狈掸揍艳秽钎抢楞纶呢损或龟菱第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.6.4 21.6.4 删除书籍删除书籍系统提供了系统提供了5种删除书籍的方式,分别实现为如下种删除书籍的方式,分别实现为如下5个函数:个函数:book_delete_by_name函数、函数、book_delete_by_auth函函数、数、book_delete_by_pub函数、函数、book_delete_by_pub_time函数和函数和book_delete_by_in_time函数。前三个函数的功能为分函数。前三个函数的功能为分别按书名、作者、出版社来查找并删除书籍;后两个分别别按书名、作者、出版社来查找并删除书籍;后两个分别为删除在给定日期前出版的书和给定日期前入库的书。为删除在给定日期前出版的书和给定日期前入库的书。遇傀砌氮削咳蹄吴癣兹询霄啸谐蘸汛划文毁箩缚栽俯引池钡淆彦次芬躇堆第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.6.5 21.6.5 查询书籍查询书籍根据需求,需要提供四种查询方式,分别实现为如下根据需求,需要提供四种查询方式,分别实现为如下4个函个函数:数:book_search_by_name函数、函数、book_search_by_auth函数、函数、book_search_by_pub函函数和数和book_search_by_time函数。其功能分别为按书名函数。其功能分别为按书名搜索、按作者搜索、按出版社搜索、按出版时间搜索。它搜索、按作者搜索、按出版社搜索、按出版时间搜索。它们都由们都由menu_search函数触发,都会将符合要求的所有函数触发,都会将符合要求的所有书籍信息列出。书籍信息列出。巢醋漳蓝沤挂垢虽凤绰观谰护喉砾群杜拢只变讽饰涂皿咸椒央惶戊祸簇匈第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件联系方式:http:/www.rzchina.net北京源智天下科技有限公司21.6.6 21.6.6 从文件导入数据从文件导入数据本系统还提供了从文件批量导入书籍信息的功能,实现函数本系统还提供了从文件批量导入书籍信息的功能,实现函数为为book_reload。该函数由用户界面模块的。该函数由用户界面模块的menu_reload函数触发。函数触发。它今线熙吓渡著屈排谤让聊础函碍荣爪祥踪抄趟了神娘咕惧企翱劈完蕾舆第2章图书管理系统开发实例ppt课件第2章图书管理系统开发实例ppt课件
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号