c 课程设计

发布 2022-09-30 14:35:28 阅读 7152

某书店聘请你为其开发一个“图书管理系统”,并为你提供了一台pc机。书店经理希望该系统能完成收银、图书销售和库存管理。其中书库文件包含了该书店所有的图书。

该系统完成的主要功能如下:

计算总的销售额和销售税。

当用户购买一本书后,就应当将其从书库中扣除。

实现对书库的增加、修改、和查找功能。

显示多种报表。

在每章最后,针对该章所学的知识,我们设计了“图书管理系统”中需要完善的功能。学完本书,你就可以自己写一个具体而微的图书管理系统。从而将面向对象对象知识和一个具体的系统相结合,为你以后的发展打下一个良好的基础。

系统模块。该系统可以分为如下三个模块:

收银模块,即前台销售管理模块;

书库管理模块;

报表模块。当运行该系统时,应当在屏幕上显示一个菜单,供用户选择三个模块之一。我们在下面讨论这三个模块。

收银模块。收银模块主要是辅助图书销售前台工作。用户输入购买图书的数量和编号,要计算销售额和销售税。此外,还要从书库中自动扣除已经销售的图书。

书库管理模块。

书库实际上就是一个文件,他包含了该书店中所有图书。每本书都包含如下几个数据项:

数据项含义。

isbn号这是任何一本书的标准**。对于书店的任何一种书,他的isbn号是唯一的。

书名书的名称。例如:《程序设计语言原理》就是书名。

作者书的作者。

出版单位出版社或出版商。

进书日期书店购进该书的日期。

库存量该书当前库存的数量。例如,书店一次购买了《程序设计语言原理》1000本,已经销售了600本,那么当前的库存就是400本。

批发价某种书的批发价。

零售价某种书的零售价。例如,《程序设计语言原理》的批发**是20元/本,而零售价是23元/本。

书库管理模块允许用户可以查看任何一本书的信息、可以进书、可以删除某种书、可以修改任何书的信息。

显然,可以创建一个bookdata结构体来存储书的信息,该结构体的成员如下:

isbn: 字符数组。该数组具有14个元素。这就是说,书的isbn号最多有13个字符组成。

booktitle: 字符数组。该数组具有51个元素。这就是说,书名最多有50个字符(25个汉字)组成。

author: 字符数组。该数组具有31个元素。这就是说,书的作者名最多有30个字符组成。

publisher: 字符数组。该数组具有31个元素。这就是说,出版社的名称最多有30个字符组成。

dateadded: 字符数组。该数组具有11个元素,用于存放进书日期。存储日期的格式为:yyyy-mm-dd。例如,2024年1月1号,表示为2005-1-1。

qtyonhand: int类型整数。存放该书的库存量。

wholesale: float类型实数。存放该书的批发格。

retail: float类型实数。存放该书的零售格。

报表模块。报表模块主要是用于分析书库中各种书的信息,并产生如下结果报表:

书库列表列出书库中所有图书信息。

批发价列表列出书库中所有图书的批发价,以及所有图书的批发价总额。

零售价列表列出书库中所有图书的零售价,以及所有图书的零售价总额。

按书的数量列表首先按照书的库存量进行从大到小排序,然后给出书的列表。书店经理可以依据各种书的库存量进行分析,以便做好以后的进书和销售工作。

按书的价值额列表首先根据书的批发价总额进行从大到小排序,然后给出列表。例如,《程序设计语言原理》的批发价是20元/本,库存400本,而《c#程序设计》的批发价是30元/本,库存300本。先根据他们的批发价总额进行排序,然后再给出列表。

按进书日期列表先根据进书的日期从小到大排序,然后给出列表。

屏幕输出要求。

1) 设计一个主菜单。

编写一个函数输出如下形式的一个主菜单:

xxx图书管理系统。

主菜单。1. 收银模块。

2. 书库管理模块。

3. 报表模块。

4. 退出系统。

输入选择:__

请输入l – 4之间的数。

用户输入以后,程序要对输入值进行检验,然后采用switch语句进入相应的模块。

2) 设计收银界面。

该界面允许用户一次可以进行多笔交易。在每种书的信息输入以后,程序要询问是否还购买了其他书。如果是,就允许用户键入其他书的信息,否则计算零售总额、销售税和总价。例如:

自动查找功能。

一旦用户键入isbn号,自动在书库中查找书名和单价。如果在数组中找不到对应的isbn号,就显示一个出错信息,然后询问用户是否再输入一个isbn号。

3) 设计显示书的屏幕格式。编写一个函数采用如下格式显示书的信息,例如:

xxx图书管理系统。

书的资料。isbn 号:0123456789

书名:xxxxxx

作者:xxxxxx

出版社:xxxxxx

进书日期:xxxxxx

库存量:xxxxxx

批发价:xxxxxx

零售价:xxxxxx

4) 设计报表显示格式。

xxx图书管理系统。

报表模块。1.书库列表。

2.批发价列表。

3.零售价列表。

4.按书的数量列表。

5.按书的价值额列表。

6.按进书日期列表。

7.返回到主菜单。

输入选择: 6

请输入1 – 7 之间的数 !

在用户输入选择项以后,采用switch语句调用相应的函数执行操作。

注意:如果用户输入的值不在1 – 7范围之内,那么程序应当显示一个出错信息,提示用户重新输入选择项。

5) 书库操作菜单。

xxx图书管理系统。

书库管理模块。

1.查找某本书的信息。

2.增加书。

3.修改书的信息。

4.删除书。

5.返回到主菜单。

输入选择: 4

请输入1 – 5 之间的数 !

在用户输入选择项以后,采用switch语句调用相应的函数执行操作。

注意:如果用户输入的值不在1 – 5范围之内,那么程序应当显示一个出错信息,提示用户重新输入选择项。

目前存储书的结构(我们以后逐渐改动)

采用bookdata结构体数组存储每本书的信息。假设该书店具有100本书(很不实际的一个假设),那么就定义一个具有100个元素的结构体空间。

该程序需要的一些函数。

1. strupper函数。

编写一个名为strupper的函数,该函数接受一个char * 指针为参数,将参数中小写字母转换为大写字母。

2. lookupbook函数。

编写一个名为lookupbook的函数,他要求用户输入书名,然后在书库中查找该书,如果没找到,在屏幕上显示一个出错信息,以表明书库中没有该书。如果找到了该书,调用bookinfo函数,显示该书的信息。注意:

bookinfo函数的参数是一个bookdata类型的引用。

3. editbook函数。

编写一个名为editbook的函数,他要求用户输入想修改的数据项,并键入该项的新值。采用新的结构体替换bookdata结构体数组中的旧值。

4. deletebook函数。

该函数要求用户输入书名,然后从书库中删除该书。该函数首先在书库中查找,如果没有找到对应的书,那么给出一个提示信息;如果找到了该书从bookdata结构体数组中移去该书。

5. 下面的函数是本程序需要的一些辅助性函数。

settitle: 函数功能:设置书名。

函数的参数:一个代表书名的char * 指针和一个代表bookdata结构体数组下标的int整数。函数是将书名拷贝到bookdata结构体数组的booktitle成员中,元素的位置由下标指定。

注意:函数无返回值。

setisbn函数功能:设置书的isbn号。函数参数与settitle类似。

setauthor: 函数功能:设置书的作者。函数参数与settitle类似。

setpub: 函数功能:设置书的出版社。函数参数与settitle类似。

setdateadded: 函数功能:设置进书日期。函数参数与settitle类似。

setqty: 函数功能:设置书的库存量。函数参数是两个int整数,其中第一个整数代表该书库存量,第二参数是对应的数组下标。其余与settitle类似。

setwholesale: 函数功能:设置该书批发价。函数的第一个参数是float类型,代表书的批发价,第二参数是对应的数组下标。

setretail: 函数功能:设置该书零售价。函数的第一个参数是float类型,代表书的零售价,第二参数是对应的数组下标。

isempty该函数的参数是一个int类型的整数,他代表bookdata结构体数组的下标。如果当前参数代表的结构体为空,函数返回true(即1),否则返回false(即0)。判断结构体为空的原则:

如果booktitle成员的第一个字符为空字符('\0'),那么函数就返回true,否则返回false。

removebook: 该函数的参数是一个int类型的整数,他代表bookdata结构体数组的下标。函数的功能是从数组中移去由参数指定的数组中的结构体元素。

注意:移去的方法很多,一种简单的方法是将书名的第一个字符设置为空字符('\0'),另一种方法是将后面的数组元素向前移动,显然这种方法比较浪费cpu时间。

本章学习了文件操作,在上一章图书记录bookdata的基础上,采用文件保存数据,主要完成如下几个操作:

1. 修改第一章的数组方式,采用文件存放图书。

程序在定义文件流对象时有两种方式:一种是定义一个全局的流对象,任何一个函数均可访问它;另一种方法是定义局部流对象,函数之间通过传递流引用处理文件。建议读者采用第二种方法。

2. 修改addbook函数。

修改addbook函数,使它处理文件,而不是处理bookdata结构体数组。当将某种书增加到书库中时,首先在文件中查找空记录,当找到一个空记录时,采用新书的信息替换当前的空记录;如果书库文件中已经没有了空记录,那么就在文件尾部增加一个新记录。

3. 修改lookupbook函数。

修改lookupbook函数,使它能够在文件中执行查找某书(按书名查找),而不是在结构体数组中查找。当找到了这本书时,将其信息传递给bookinfo函数显示。

C 课程设计

自动走迷宫小游戏。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容 通过调试典型例题或习题积累调试c 程序的经验 通过完成辅导教材中的编程题,逐渐培养学生的编程能力 用计算机解决实际问题的能力。同时在设计的过程中发现自己的不足之处,对以前所学过的知识理解的更加深刻,掌握得更加牢固。迷宫生成。...

c 课程设计

哈尔滨 课程设计报告。课程 c 学号 姓名 班级 教师 1.管理系统的功能说明。课程信息管理 能够增加数据,删除数据,显示数据,修改数据,按姓名和首字母查询数据和一些基本的程序功能。2.存储数据的描述。coursenumber 课程号coursename 课程名subject 所属专业xingzhi...

C课程设计

面向对象程序设计课程设计。一 设计要求。1 课程设计以3 4人为一组,每人一个模块 2 课程设计时间为1周 在处理系统的时候,要从分析系统的需求入手,根据系统需求进行详细分析,明确系统功能,然后设计系统整体架构以及划分系统模块,按照模块分配小组中每个组员的具体任务,完成设计。二 系统设计规范。1 命...