简易的书店管理系统

简易的书店管理系统

设计目的:

1. 提高分析问题、解决问题的能力以及实际动手能力。

2. 深入理解C语言中控制语句、数组、函数、指针、结构体等知识的渗透交互应用,提高用C语言解决实际问题的技术和能力。

3. 初步理解数据处理的一般方法,了解数据的读取、处理、保存等技术。

4. 通过具体而微的图书管理系统,初步了解系统开发的一般过程、形式。了解并基本掌握结构化程序设计,加强对一个系统开发的整体把控能力。

设计环境DEV-C 5.0 / Visual C6.0

实验项目及分析:

1前言

软件开发流程(Software development process)即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。

作为一个小系统,本实验的开发过程大致包括:功能(需求)分析、系统设计、编程实现和调试、测试、提交程序和相关文档。

2功能(需求)分析

       书店为了能实现日常的经营,经常涉及到到事物及应该具有的功能是:

(1)图书入库(进书采购时):此为必要功能,采购图书到书店,若新书录入图书详细信息,若是旧书则增加图书数量即可。

(2)图书销售:必要功能,包括批发和零售,最主要的是零售功能。

(3)查看图书的库存情况(清单):实验必要功能,主要是用于实验中用来观察图书数据的变化。

(4)图书删除:可选的功能,用于删除某些不需要的图书信息。

(5)数据保存:必要功能,包括把图书数据保存到文件以及程序启动时载入图书数据。

(6)其他可选功能:比如开机欢迎画面(音乐)、登录安全机制(用户及密码)、查询图书(作者、价格等)、统计销售情况等。

    另外,在现实中的商店,商品都具有一个条形码,用来唯一识别商品种类。这是一个重要的数据信息,对于图书来说,就是书号(ISBN),现实商店中都用条码阅读器来阅读,本实验中条件所限,使用键盘输入书号来模拟条码阅读器。

2. 系统设计

2.1 数据及数据结构

  1. 图书信息数据类型,采用结构体,包含了书号、书名、作者、单价、库存数量等核心信息:

typedef struct

  {char isbn[20];      /*书号*/

   char bkName[40];    /*书名*/

   char author[20];    /*作者*/

   double price;           /*单价*/

   int num;            /*数量(单位:册)*/

  } Book;

  1. 最大数组长度,实验中设置为2000;

#define MAXNUM 2000

  1. 图书数据库,用Book类型的数组bk保存,每个数组单元代表一种图书,退出系统时应该把数组中的数据保存在文件bookdata.txt中,启动程序时数组从文件中读取数据。数组设置为全局数组: 

BOOK bk[MANUM];

  1. 图书种类数量,为全局变量,退出系统时应该保存在文件中:

int bookNum =0;  /*不同图书的数量,初始值为0*/

  1. 所有的功能操作都围绕着bk数组作为数据基础,数组bk的数据来自文件bookdata.txt,bk数组数据的变化,最终也要保存在该文件,参考下图:

图1 数据流动简图

2.2功能设计

(1)图书入库(采购):

采购后,把采购的图书数据输入到系统:读取条形码(ISBN号),如果该书已经存在(书号已经在数据库也就是bk数组),直接显示该图书信息,输入数量后,修改书库中的图书数量;如果书号不在书库,则录入该图书详细信息,并添加信息到书库bk数组。

相关函数原型:void purchase ()

(2)图书销售:

如果顾客将购买某本书,营业员读取条形码(ISBN号),系统会告知该书是否在库存清单中,如果不在,显示适当的提示信息;如果在,系统显示该书的详细信息并询问所需的册数。如果库存书的册数不足,显示相应的销售失败的提示信息;册数足够则显示这些书的总价格,此时销售成功,在书库中的册数减去销售的册数。

相关函数原型:void sale()

(3)图书列表:

显示库存中现有的图书,每20行暂停,主要用于查看和测试。

相关函数原型:void list()

(4) 打开和保存数据文件:

所有图书相关信息都可以保存在磁盘文件(data.txt)上,程序开始后,先从数据文件读取数据(到数组),以数组为中心进行图书进、销等操作;所有操作结束后,退出程序时必须把数组数据保存回磁盘文件,并把原数据文件作为备份文件data.bak。

相关函数原型:void readData(),从文件读取数据到bk数组。

              void saveData()  保存bk数组的数据到文件,同时备份旧文件。

(5)友好的界面:

要求有友好的操作界面,以上功能都能在界面中以适当的形式体现并方便地操作。

相关函数原型:  int showSel():清屏并显示功能选项并返回选项的序号。

(6)保存

文件结构:先是记录个数(即不同书的数量bookNum,这也是数组有用长度),之后的内容是每个不同的书具体信息记录(即用来存放bk数组的所有有效数据)

(7)图书查询:

先选择图书查询方式(作者查询或书名查询),输入关键字,若库中有包含关键字信息的图书,就会显示这些图书的信息,若库中找不到包含该关键字的图书,则提示库中没有与之相关的图书。

相关函数原型:void search()。

2.3 功能模块图

图2 函数调用关系图

相关函数说明:

  1. int main():主函数
  2. void readData():从data.txt读取数据。
  3. void saveData():保存数据到data.txt。
  4. int showSel():显示主界面选菜单,返回菜单选项值。
  5. void list():显示库存清单。
  6. void purchase():入库系统

6.1 void viewPur(Book pur[], int purNum, char bkNo[])

函数功能:显示入库列表,输入要入库的图书的书号。

形参:入库图书的结构体,入库数量,书号。

        6.2 int seekBkNoPur(char *bkNo)

            函数功能:通过书号查找图书。

            形参:书号。

            返回值:书号

        6.3 void addPur1(Book pur[], int &purNum, int index)

            函数功能:若查找到书号对应的图书则该图书数量加一。

            形参:入库图书的结构体,入库数量,下标。

6.4 void addPur2(Book pur[], int &purNum)

    函数功能:若查找不到书号对应的图书则手动输入图书信息。

    形参:入库图书的结构体,入库数量。

  1. void sale():销售系统

7.1 void viewBuy(Book buy[], int buyNum, char bkNo[])

函数功能:示销售界面并等待输入一个书号。

形参:销售图书的结构体,销售数量,销售图书的书号。

        7.2 int seekBkNo(char *bkNo)

            函数功能:通过书号查找图书。

            形参:书号。

            返回值:书号。

7.3 void addBuy(Book buy[],int &buyNum,int index)

    函数功能:找到书号,把该图书相关信息添加到buy数组。

    形参:销售图书的结构体,销售数量,下标。

7.4 void payBuy(Book buy[], int buyNum)

    函数功能:显示销售图书清单,并输入支付金额。

    形参:销售图书的结构体,销售数量。

  1. void search():搜索系统

8.1 int showSearchSel()

    函数功能:显示搜索系统界面 ,并选择搜索方式。

    返回值:选择结果。

8.2 void searchAuthor()

    函数功能:输入作者关键字搜索图书。

8.3 void searchBkName()

    函数功能:输入书名关键字搜索图书

  1. void myGets(char *ps):输入字符串(上图未显示!)

3. 系统的实现

在此课程设计中,系统的实现主要是代码的实现:把设计的结果转化为计算机可运行的程序代码。在程序编码中要制定统一、符合标准的编写规范以保证程序的可读性、易维护性。提高程序的运行效率。

4.程序测试:

测试1、主界面

自评

主界面

完美实现

测试2、图书列表清单

自评

起始数据的展示

基本实现

测试3、入库

自评

入库两条新数据后退出入库:

书号、书名、作者、价格、数量:

  1. 998、This’s book1、author1、23.4、2
  2. 999、This’s book2author219.510

完美实现

再次进入库功能,入库操作:

输入已存在的书号999,数量5。

基本实现

用图书列表功能查看入库是否成功

基本实现

测试4、销售

自评

销售:

1、输入3次书号998;

2、输入书号999;

3、再次输入书号998。

注意书号998的购买数量超过库存是否提示出错。

完美实现

用图书列表功能查看销售是否成功

完美实现

测试5、数据保存功能

自评

以上测试操作完成后,退出并重新启动程序。用“图书列表”功能查看修改过的数据是否依然存在。

完美实现

测试6、查找

自评

(根据完成情况演示,不要演示书号查找功能)

按书名查找关键字:book

完美实现

按作者查找关键字:author

完美实现

查找一个不存在的数据项:xxx

完美实现

查找一个不存在的数据项:xxx

完美实现

关注,订阅谢谢喵(。・∀・)ノ゙嗨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值