一步一步教你用c语言编写图书管理系统_第1页
一步一步教你用c语言编写图书管理系统_第2页
一步一步教你用c语言编写图书管理系统_第3页
一步一步教你用c语言编写图书管理系统_第4页
一步一步教你用c语言编写图书管理系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C/C语言程序设计实验教材顾国民叶阳浙江工业大学软件学院二零零八年十一月II目录目录II第1章概述111实验意义112说明113要求2第2章VC60工具介绍221打开VC60222建立LMS工程3第3章简单LMS功能及设计思路431功能描述4311读者管理模块功能5312图书管理模块功能5313图书流通模块功能6314借书处理6315还书处理632基本设计思路6第4章新建LMS工程6第5章建立数据操作文件851数据存储文件说明9511书籍数据文件BOOKDAT9512人员数据操作文件READERDAT1052数据操作文件说明11521创建文件11522添加代码12第6章读者管理模块1461读者信息输入14611处理流程14612添加代码1462读者信息查询15621处理流程15622添加代码15623相关知识点介绍16第7章图书管理模块1771图书信息输入17III711处理流程17712添加代码17713相关知识点介绍1872图书信息查询18721处理流程18722添加代码18第8章图书流通模块2081借书处理20811处理流程20812添加代码2082还书处理21821还书流程21822添加代码21第9章总体说明2391需求说明23911功能介绍23912详细功能2492设计思路2493创建工程25第10章建立数据操作机制26101数据存储说明261011图书数据设计261012读者数据设计261013借阅索引表设计271014用户表设计27102数据操作类DBFILE类设计271021类说明271022添加类代码28第11章人员相关类30111人员类301111登录LOGIN301112退出LOGOUT30112读者类30113工作人员类30114管理员类30参考文献311第一部分基础部分第1章概述11实验意义本实验教材通过引导的方式一步一步帮助学生分析并实现一个简单的系统以图书管理系统为例,让学生从一个参与项目开发的角度全新的体验项目开发的全过程。帮助学生独立完成一个简单的系统的开发,真正的学到程序设计的实战知识,更为重要的是能够体验开发的乐趣并培养程序开发的兴趣。选择图书管理系统作为实验素材的目的是因为图书管理系统学生能经常接触到,对其功能有一定的了解,能够在使用中提出自己的一些需求的系统。图书管理系统虽然简单,但是随着需求功能的不断增加,开发的难度也不断增加,不仅能满足初学编程的需求,也能让更高年级的学生通过将学到的知识直接用于该系统的开发而巩固和提高编程水平。12说明本教材分为三个部分,第一部分为基础部分,介绍C/C的实验基本情况以及对图书管理系统的功能描述;第二部分为C语言部分,用C语言实现功能相对简单的图书管理系统,采用文本文件记录简单的图书和读者的基本信息,并能够进行简单的数据维护;第三部分为C语言部分,采用C语言的类技术实现功能相对复杂的图书管理系统,采用文本文件记录数据,数据结构更为复杂,涉及到书与读者之间的数据关联。213要求1、开发一个基于DOS界面的图书馆管理系统,通过命令的方式进行借书还书等图书馆需要的功能;2、用户界面友好,让非计算机人员通过简短的培训即可使用;3、系统的可扩展性良好,可以在此基础上方面的增加其他的功能模块。第2章VC60工具介绍21打开VC60点左下角“开始”“所有程序”,在弹出框中鼠标选择MICROSOFTVISUALSTUDIO60,弹出对话框,在选择MICROSOFTVISUALC60打开VC60系统(如下图)图21打开VC6菜单图22VC60界面322建立LMS工程COMMENTMS1该图需要再改改。将系统维护和退出模块去掉。在LMS程序中也将这两部分去掉4第二部分C语言部分第3章简单LMS功能及设计思路31功能描述简单图书管理系统只包含的一些基本的功能,对图书管理的大致流程进行演示。其功能模块包括读者管理、图书管理、图书流程等三个部分。图31系统总体功能图5311读者管理模块功能3111读者信息添加根据提示依次在DOS界面上输入读者号、姓名等内容,按回车进行信息的添加。并提示是否继续添加。3112读者信息查询根据提示选择查找的方式(如下图选择1或者2),然后输入查找的内容,按回车以列表的方式显示符合查询条件的读者信息。并提示是否继续查询。312图书管理模块功能3121图书信息输入根据提示依次在DOS界面上输入图书编号、图书名称等内容,按回车完成图书信息的添加。并提示是否继续添加。3122图书信息查询根据提示选择查找的方式(如下图选择1、2、3、4),然后输入查找的内容,按回车以列表的方式显示符合查询条件的图书内容。并提示是否继续查询。6313图书流通模块功能314借书处理输入欲借的书的书号,按回车完成借书的流程。如藏书量0,实现将该书的藏书量减1,借出量加1。315还书处理输入欲还的书的书号,按回车完成还书的流程。实现将该书的藏书量加1,借出量减1。32基本设计思路利用文本文件保存数据,设置图书数据文件保存图书信息,读者信息文件保存读者信息。设置图书信息链表,和读者信息链表。在进入系统时,将文本中的所有信息读出并分别保存到图书链表和读者信息链表中。系统运行过程中,所有的操作都是对这两个链表的操作,在退出系统时将链表的数据写会文本文件中。第4章新建LMS工程步骤一点击菜单中的“FILE”,弹出子菜单中选择“NEW”,打开新建工程的选择界面。图41VC60文件菜单7图42新建工程界面步骤二如图,在新建工程的界面的标签栏中选择“PROJECTS”如标识1;在左边项目列表中选择“WIN32CONSOLEAPPLICATION”如标识2,该项目可建立一个DOS窗口的应用程序;LOCATION标签下的编辑框中选择系统存放的地址如标识3;PROJECTNAME标签下的编辑框中输入本系统的名称“LMS”如标识4。点击“OK”按钮进入下一个页面。图43工程类型选择图步骤三在“工程类型选择图”中选择第三个“A”HELLO,WORLD”APPLICATION”按“FINISH”按钮。完成新建系统工程。步骤四查看新建的工程。81、进入系统存放地址,查看新建的文件,可以看到如下图的文件。2、进入VC60界面,看到如下图所示。此时已经可以按“F5”运行。图44完成新建工程界面第5章建立数据操作文件建立文件夹“DB”,在该目录下存放数据文件如书本数据BOOKDAT保存系统所有的所有数据。读、存、查找、删除数据的函数全部写在DBMANAGEH和DBMANAGECPP文件中。DBMANAGEH放所有的数据操作函数的声明,在DBMANAGECPP文件中放置数据操作函数的实现。当MAIN函数需要调用数据操作函数时需要在文件的开头添加INCLUCE“DBMANAGEH”。951数据存储文件说明因为采用文本文件存储数据,需要设计数据存储的格式和存储的方式。一个结构实例保存一条数据如一本书的数据,在打开程序运行该系统时把所有的数据读出来保存到链表中,方便进行增、删、改、查的操作,考虑到查找的效率问题,建立的链表是根据关键字段排序。在退出程序前保存链表中的所有数据到数据文件中。参考“文件处理”章中的“在随机访问文件中写入和读取数据”部分511书籍数据文件BOOKDAT5111字段设计表1BOOKDAT字段设计表字段名称中文名类型备注BNO书号CHAR5BNAME书名CHAR21AUTHOR作者CHAR9PRESS出版社CHAR21STORENUM藏书量INTBORROWNUM借出数INT5112对应C代码结构描述STRUCTBOOKRECTYPECHARBNO5CHARBNAME21CHARAUTHOR9CHARPRESS11INTSTORENUMINTBORROWNUM5113对应链表组织BOOKRECTYPEBOOKHEAD/串联起所有的BOOK数据的链表头10INTBOOKSTRUNUM/记录该链表中所具有的BOOKRECTYPE结构实例的数量BOOKRECTYPE实例BOOKRECTYPE实例BOOKRECTYPE实例BOOKRECTYPE实例BOOKHEADNULL图51BOOK数据链表示意图5114添加代码1、打开DBMANAGEH文件,在最上面添加如下代码说明IFNDEFDEFINEENDIF为一组宏定义。意思为如果没有定义DBSTRUCT这个名称的宏,则系统编译IFNDEFENDIF之间的代码(1、定义一个名称为DBSTRUCT的宏2、声明结构),否则系统就跳过编译。这样做防止了当DBMANAGEH被多次引用的情况下代码被重复编译的情况。BOOKRECTYPENEXT用于建立链表时用2、打开LMSCPP文件,MIAN函数中添加如下代码512人员数据操作文件READERDAT5121字段设计表2READERDAT字段设计表字段名称中文名类型备注RNO读者号CHAR5RNAME读者姓名CHAR21115122对应C代码结构描述STRUCTREADERINFOCHARRNO8CHARRNAME105123添加代码1、打开DBMANAGEH文件,在IFNDEFDBSTRUCTDEFINEDBSTRUC和ENDIF之间添加如下代码52数据操作文件说明521创建文件步骤一点击菜单中的“FILE”,弹出子菜单中选择“NEW”,打开新建工程的选择界面。图52添加新文件界面步骤二如上图,选择标签“FILES”见标识1;在左边文件类型选择框中选择12“CSOURCEFILE”见标识2;确保界面右上角“ADDTOPROJECT”的复选框打勾见标识3;在文件名输入框中输入DBMANAGECPP(见标识4);按“OK”按钮即可成功添加一个DBMANAGECPP文件。步骤三参考步骤二,如图选择“C/CHEADERFILE”如标识2;文件名输入框中输入“DBMANAGEH”;按“OK”按钮即可成功添加一个DBMANAGEH文件。图53文件浏览FILEVIEW界面步骤四检查文件是否创建成功,并开始编写代码。VC6的菜单中选择视窗VIEW工作区WORKSPACE,打开VC6的工作区窗口,选择文件浏览FILEVIEW标签,可见如上图。查看是否存在DBMANAGEH和DBMANAGECPP文件。双击这两个文件可以分别打开文件并编写代码。522添加代码1、打开DBMANAGEH文件,添加如下代码说明HEAD用二维指针,以上函数的调用方法如下声明BOOKRECTYPEBOOKHEAD0调用READFILE和WRITEFILE132、打开DBMANAGECPP文件,添加如下代码14第6章读者管理模块61读者信息输入611处理流程调用CREATEREADERINFO()函数,该函数处理流程如下1、根据提示输入一本读者的信息,并生成一个READERINFO节点;2、链表以“读者号”为索引字段进行排序,将新节点放置在链表里相应的位置;因为链表始终保持按照顺序排列,所以此处不需要对链表进行重新排序;3、选择是否继续输入。612添加代码1、创建READERINFOH和READERINFOCPP文件(参考411节)2、打开READERINFOH文件,添加如下代码3、打开READERINFOCPP文件,添加如下代码说明头文件INCLUDE包含C语言的输入CIN输出COUT函数。4、在LMSCPP文件加上INCLUDE“READERINFOH“,使得MAIN可以调用CREATEREADERINFO函数。1562读者信息查询621处理流程调用SEARCHREADERINFO()函数,该函数处理流程如下1、选择查找读者信息方式,分别可以根据读者号、读者姓名进行查找;2、遍历READERINFO链表,对每一个节点进行比较,如符合查询条件,则输出。622添加代码1、打开READERINFOH文件,添加如下代码2、打开READERINFOCPP文件,添加如下代码16623相关知识点介绍INTSTRCMPCONSTCHARSTRING1,CONSTCHARSTRING2/比较字符串,字符串的比较先比第一个字符,第一个字符相等则比第二个,直到比出大小。添加INCLUDE返回值值STRING1和STRING2的关系0STRING1STRING2CHARSTRCPYCHARSTRDESTINATION,CONSTCHARSTRSOURCE/字符串拷贝。17第7章图书管理模块进入系统后要求先读取BOOKDAT中的数据到链表中,图书管理模块的相关操作只在链表(链表头BOOKHEAD)中进行。71图书信息输入711处理流程调用CREATEBOOK()函数,该函数处理流程如下4、根据提示输入一本书的信息,并生成一个BOOKRECTYPE节点;5、链表以“书号”为索引字段进行排序,将新节点放置在链表里相应的位置;因为链表始终保持按照顺序排列,所以此处不需要对链表进行重新排序;6、选择是否继续输入。712添加代码1、创建BOOKMANAGEH和BOOKMANAGECPP文件(参考411节)2、打开BOOKMANAGEH文件,添加如下代码3、打开BOOKMANAGECPP文件,添加如下代码184、在LMSCPP文件加上INCLUDE“BOOKMANAGEH“,使得MAIN可以调用CREATEBOOK函数。713相关知识点介绍INTATOICONSTCHARSTRING/把STRING类型(由数字组成)转化成INT类型。如“1234”1234。添加INCLUDE72图书信息查询721处理流程调用SEARCHBOOK()函数,该函数处理流程如下3、选择查找图书方式,分别可以根据书号、书名、作者、出版社进行查找;4、遍历BOOKRECTYPE链表,对每一个节点进行比较,如符合查询条件,则输出。722添加代码1、打开BOOKMANAGEH文件,添加如下代码2、打开BOOKMANAGECPP文件,添加如下代码1920第8章图书流通模块81借书处理811处理流程输入书号BNO书存在否(提示该书不存在)该书藏书量STORENUM0是否提示该书已经被借完藏书量1借书数量1(提示借书完成)是图81借书流程图812添加代码1、创建BOOKDEALH和BOOKDEALCPP文件(参考411节)2、打开BOOKDEALH文件,添加如下代码3、打开BOOKDEALCPP文件,添加如下代码214、在LMSCPP文件加上INCLUDE“BOOKDEALH“,使得MAIN可以调用BORROWBOOK函数82还书处理821还书流程输入书号BNO书存在否(提示该书不存在)该书藏书量BORROWNUM0是否提示该书没有被借出记录,请核对藏书量1借书数量1(提示还书完成)是图82还书流程图822添加代码1、打开BOOKDEALH文件,添加如下代码2、打开BOOKDEALCPP文件,添加如下代码2223第三部分C部分第9章总体说明91需求说明911功能介绍图书管理系统(LMS)用于图书馆进行图书的管理,主要的功能包括借书、还书、查找等。不同的使用对象具有不同的权限,详细见下表表3系统功能表使用对象功能详细功能查看/修改个人信息读者查找馆藏图书信息查询读者信息个人信息和读者借书情况还书借书工作人员查询图书信息(根据ID号查找图书,显示基本信息和是否被借阅)维护图书信息添加、删除、编辑图书信息维护读者信息添加、删除、编辑读者信息维护人员信息(包括下级管理员)添加、删除、编辑工作人员信息管理人员查询图书信息24912详细功能9121登录选择登录身份(读者、工作人员、管理员),输入用户名和密码,成功后进行相应的功能模块。9122读者模块读者可以查找馆藏书目,了解图书馆有哪些书,是否可借。读者可以查看个人借书情况和修改基本个人信息、修改密码。9123工作人员模块可以查找馆藏书目,了解图书馆有哪些书,是否可借。根据读者号查询读者信息,显示该读者基本信息,和借书情况(借了哪里书)。读者信息高级查找可以根据姓名等其他信息进行查找(可选功能)借书功能首先输入读者号,在该状态下依次输入该读者借的书,完成图书的借阅工作。还书功能直接输入图书ID号,将该书的信息改为入库,并修改读者的借书记录。9124管理员模块可以查找馆藏书目,了解图书馆有哪些书,是否可借。维护图书信息添加进入添加状态,根据提示依次输入图书的基本信息,默认状态下为继续输入,当输入1回到上一层。修改首先进行查找,列出所有符合条件的图书,根据列出的需要选择要修改的图书,如果只有一条记录则直接进入修改。根据提示选择该图书需要修改的字段,并进行修改。选择“完成”回到上一层。删除92设计思路采用面向对象的方式实现图书管理系统,根据不同的使用权限,使用对象分为读者、工作人员和管理员。25读者类READER人员类PEOPLE工作人员类WORKER管理员类MANAGER数据操作类DBFILE图91系统主要类结构图分别设计读者类、工作人员类、管理员类(如上图),人员类为基类实现通用的功能。用文本文件进行数据的保存,需要保存的数据主要包括图书数据、用户数据(包括读者、工作人员、管理员)、借阅索引表。设置数据操作类,实现所有的文本操作相关的功能。93创建工程重新创建一个工程,工程名为LMS_CLASS。26第10章建立数据操作机制101数据存储说明采用文本文件存储系统的各类数据,模仿关系数据库的形式,用字段描述文件FIELD和数据文件DAT来模拟关系数据库中的表。如图书数据表包含BOOKFIELD图书数据字段描述和BOOKDAT存所有图书数据两个文件。字段描述文件FIELD用于描述表的属性,主要描述该表的每个字段的字段名、类型、长度。该文件有固定的格式,可以用一个结构进行读和存。对应结构为STRUCTDBFILEDPROPERTYCHARFIELDNAME21CHARFIELDTYPE9/暂时支持INT,FLOAT,CHAR,BOOL四种格式INTFIELDLENGTH数据文件DAT实际存放数据的文件。该文件的数据存储没有固定的格式,其格式有FIELD文件中描述决定。1011图书数据设计表4BOOK文件字段设计表字段名称中文名类型备注BNO书号CHAR5BNAME书名CHAR21AUTHOR作者CHAR9PRESS出版社CHAR21STORENUM藏书量INTBORROWNUM借出数INT1012读者数据设计表5READER文件字段设计字段名称中文名类型备注27RNO读者号CHAR5RNAME读者姓名CHAR21PASSWORD密码CHAR211013借阅索引表设计表6R_BINDEX文件字段设计字段名称中文名类型备注BNO图书号CHAR5通过两个字段记录所有的图书借阅信息RNO读者号CHAR51014用户表设计表7USERS文件字段设计字段名称中文名类型备注USERNAME用户名CHAR9登录用户名8PASSWORD登录密码CHAR98NAME真实姓名CHAR2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论