目录

一,目的和基本要求

二,设计要求

三,设计的任务

3.1图书信息管理系统的设计与实现

3.1.1实验内容

3.1.2实验提示

四,代码实现


一,目的和基本要求

  1. 了解并掌握数据结构和算法设计的方法,具备初步的独立分析和设计能力
  2. 初步掌握软件开发过程的问题分析分析、系统设计、程序编码和测试等基本方法和技能。
  3. 提高综合运用所学的理论知识和方法,独立分析和解决问题的能力。
  4. 训练用系统的观点和软件开发一般规范进行软件的开发,培养软件工作着所具备的科学工作方法和作风。

二,设计要求

  1. 问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么,限制的条件是什么。
  2. 逻辑设计:对问题中涉及到的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序和各抽象数据类型,逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图。
  3. 物理设计:定义相应的存储结构并写出个函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进一步的求精,写出数据结构存储结构的类型定义,写出函数形式的算法框架。
  4. 程序编码:把详细设计的结果进一步求精为程序设计语言。同时加入一些注解和断言,使程序中逻辑概念清晰。
  5. 程序调试和测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序和注释,形成格式和风格良好的源程序清单和结果。
  6. 结果分析:程序运行结果包括正确的输入及其输出结果、含有错误的输入和输出结果、算法时间复杂度和空间复杂度分析。
  7. 撰写课程设计报告:总结和提升上述过程和步骤,写出结构严谨、表述清楚、符合设计规范的报告。

三,设计的任务

3.1图书信息管理系统的设计与实现

3.1.1实验内容

设计并实现一个图书信息管理系统。根据实验要求设计该系统的菜单和交互逻辑,并编码实现增删改查的各项功能。 该系统至少包含以下功能:

  1. 根据指定图书个数,逐个输入图书信息;
  2. 逐个显示图书表中所有图书的相关信息;
  3. 能根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置;
  4. 根据指定的待出库的旧图书的位置,将该图书从图书表中删除;
  5. 能统计表中图书个数;
  6. 实现图书信息表的图书去重;
  7. 实现最爱书籍查询,根据书名进行折半查找,要求使用非递归算法实现,成功返回此书籍的书号和价格;
  8. 图书信息表按指定条件进行批量修改;
  9. 利用快速排序按照图书价格降序排序;
  10. 实现最贵图书的查找;

3.1.2实验提示

//图书信息的定义:
typedef struct {char no[8];   //8位书号char name[20]; //书名int price;     //价格
}Book;
//顺序表的定义:
typedef  struct {Book  *elem;     //指向数据元素的基地址int  length;       //线性表的当前长度                                                           }SqList;
链表的定义:
typedef struct LNode{Book   data;       //数据域struct LNode  *next;   //指针域
}LNode,*LinkList;   
  1. 基于顺序存储/链式存储结构的图书信息表的创建和输出

定义一个包含图书信息(书号、书名、价格)的顺序表。读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。

输入

输入 n+1 行,其中前 n 行是 n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志:0 0 0(空格分隔的三个 0)。其中书号和书名为字符串类型,价格为浮点数类型。

输出

总计 n+1 行,第 1 行是所创建的图书表中的图书个数,后 n 行是 n 本图书的信息(书号、

书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两

位小数。

输入样例:

9787302257646 程序设计基础 25.00

9787302164340 程序设计基础(第 2 版) 20.00

9787302219972 单片机技术及应用 32.00

9787302203513 单片机原理与应用技术 26.00

9787810827430 工业计算机控制技术——原理与应用 29.00

9787811234923 汇编语言程序设计教程 32.00

0 0 0

  1. 基于顺序存储/链式存储结构的图书信息表的修改

读入图书信息表,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%,最后逐行输出价格修改后的图书信息。

输入

输入 n+1 行,其中前 n 行是 n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第 n+1 行是输入结束标志:0 0 0(空格分隔的三个 0)。其中书号和书名为字符串类型,价格为浮点数类型。

输出

总计 n+1 行,第 1 行是修改前所有图书的平均价格,后 n 行是价格修改后 n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。

输入样例:

9787302257646 程序设计基础 25.00

9787302164340 程序设计基础(第 2 版) 20.00

9787302219972 数据挖掘与机器学习 32.00

9787302203513 模式识别与智能计算 26.00

9787810827430 工业计算机控制技术——原理与应用 29.00

9787811234923 操作系统教程 32.00

0 0 0

输出样例:

9787302257646 程序设计基础 30.00

9787302164340 程序设计基础(第 2 版) 24.00

9787302219972 数据挖掘与机器学习 35.20

9787302203513 模式识别与智能计算 28.60

9787810827430 工业计算机控制技术——原理与应用 31.90

9787811234923 操作系统教程 35.20

  1. 基于顺序存储/链式存储结构的图书信息表的最贵图书查找

读入相应的图书信息表,然后查找价格最高的图书,输出相应图书的信息。

输出

总计 m+1 行,其中,第 1 行是最贵的图书数目,(价格最高的图书可能有多本),后m行是最贵图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。

输出样例:

2

9787302219972 数据挖掘与机器学习 35.20

9787811234923 操作系统教程 35.20

  1. 基于顺序存储/链式存储结构的图书信息表的最爱图书的查找

读入相应的图书信息表,然后根据指定的最爱图书的名字,输出相应图书的信息。

输入

输入1行,为每次待查找的最爱图书名字。

输出

若查找成功,输出k+1行,对于每次查找,第一行是最爱图书数目,同一书名的图书可能有多本,后K行是最爱图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。若查找失败:只输出以下提示:抱歉,没有你的最爱!

输出样例

2

9787302257646 程序设计基础 30.00

9787302164340 程序设计基础(第 2 版) 24.00

  1. 基于顺序存储/链式存储结构的图书信息表的新书入库

读入指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置上,最后输出新图书入库后所有图书的信息。

输入

总计n+1行,首先输入第1行,内容仅为一个整数,代表待入库的新图书的位置序号,然后输入n行,内容为新图书的信息,书号、书名、价格用空格分隔。

输出

若插入成功,输出新图书入库后所有图书的信息(书号、书名、价格),总计n+1行,每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。

若插入失败,只输出以下提示:抱歉,入库位置非法!

输入样例:

2

9787302265436  计算机导论实验指导 18.00

输出样例:

9787302257646 程序设计基础 30.00

9787302265436 计算机导论实验指导 18.00

9787302164340 程序设计基础(第 2 版) 24.00

9787302219972 数据挖掘与机器学习 35.20

9787302203513 模式识别与智能计算 28.60

9787810827430 工业计算机控制技术——原理与应用 31.90

9787811234923 操作系统教程 35.20

  1. 基于顺序存储/链式存储结构的图书信息表的旧书出库

读入指定的待出库的旧图书的书号,将该图书从图书表中删除,最后输出旧图书出库后所有图书的信息。

输入

输入待出库的旧图书的书号;

输出

若删除成功,输出旧图书出库后所有图书的信息(书号、书名、价格),每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。

若删除失败,只输出以下提示:出库失败,未找到该图书!

  1. 基于顺序存储/链式存储结构的图书信息表的图书去重

出版社出版的任何一本图书的书号(ISBN)都是唯一的,即图书表中不允许包含书号重复的图书。读入相应的图书信息表(事先加入书号重复的记录),然后进行图书的去重,即删除书号重复的图书(只留第一本),最后输出去重后所有图书的信息。

输出

总计输出m+1行(m<=n),其中,第一行是去重后的图书数目,后m行是去重后图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。

四,代码实现

1.先定义结构体,这里我用的是顺序表,Seqlist因为我用vector函数我不用这里的顺序表,因为vector就有顺序表的作用。

头文件struct.h

#pragma once
#include<iostream>
#include<string.h>
using namespace std;struct book {string no;   //8位书号string name; //书名float price;     //价格
};
//顺序表的定义:struct {book* elem;     //指向数据元素的基地址int  length;       //线性表的当前长度                                                           }SeqList;

BMS.h

#pragma once
#include"struct.h"
#include<vector>class Book
{public:vector<book>array;//定义一个可变动态数组vector<book>array1;~Book();Book();void initial(int n, string a);//初始数据void print();//打印void print1();//打印float average();//求平均值void ModifyPrice();//改变价格int GetLength(book A);//获得长度void Delete(book B);//删除数据void insert(book A, int n);//插入数据void QuickSort(int first,int end);//快速排序int FindMax();//找到最大值void PrintMaxPrice();//打印最大void NewWarehouse();//新书入库void OldBooksOutbound();//旧书出库void De_Weight();//去重void FavoriteBook();//最喜欢的书void MENU();//菜单
};

BMS.cpp

#pragma once
#include"struct.h"
#include<vector>class Book
{public:vector<book>array;//定义一个可变动态数组vector<book>array1;~Book();Book();void initial(int n, string a);//初始数据void print();//打印void print1();//打印float average();//求平均值void ModifyPrice();//改变价格int GetLength(book A);//获得长度void Delete(book B);//删除数据void insert(book A, int n);//插入数据void QuickSort(int first,int end);//快速排序int FindMax();//找到最大值void PrintMaxPrice();//打印最大void NewWarehouse();//新书入库void OldBooksOutbound();//旧书出库void De_Weight();//去重void FavoriteBook();//最喜欢的书void MENU();//菜单
};

主函数

#include"BMS.h"
using namespace std;
#include<iostream>int main()
{Book library;library.MENU();bool judge = true;while (judge == true){int select;cin >> select;switch (select){case 1:{cout << "请输入图书信息个数" << endl;int m;cin >> m;cout << "是否自己录入图书信息:是请输入1,否请输入0则有一定的数据加以验证!" << endl;string a;cin >> a;library.initial(m, a);break;}case 2:{library.print();break;}case 3:{library.NewWarehouse();break;}case 4:{library.OldBooksOutbound();break;}case 5:{cout << "库中图书个数为!" << library.array.size() << endl;break;}case 6:{library.De_Weight();break;}case 7:{library.FavoriteBook();break;}case 8:{library.ModifyPrice();break;}case 9:{library.QuickSort(0, library.array.size());break;}case 10:{library.PrintMaxPrice();break;}default:cout << "其他功能未开放" << endl;}cout << "是否继续操作!(Y/N)" << endl;string b;cin >> b;if (b == "Y")judge = true;if (b == "N")judge = false;}return 0;}

图书管理系统课程设计相关推荐

  1. c语言课程设计北京电子工业出版社,c语言图书管理系统课程设计报告

    c语言图书管理系统课程设计报告 五.小节: 在这一个星期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性.将理论和实践结合在一起,用先进的计算机工具方便人们的生活.C语言程序的编写首先 ...

  2. c语言课程设计图书管理系统报告,C语言图书管理系统课程设计报告[1]

    C语言图书管理系统课程设计报告[1] 第三章 图书管理系统的设计与实现3.1 系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅.还书的平台.根据系统 ...

  3. 基于java与sqlserver2008的班级信息管理系统源代码,图书管理系统课程设计报告(基于JAVA和SQL.Server).doc...

    可编辑版 PAGE Word完美格式 可编辑版 Word完美格式 课程设计报告 设计名称:<数据库原理与应用>课程设计 设计题目: 图书管理系统的设计与开发 学生学号: 专业班级: 学生姓 ...

  4. 图书借阅管理系统c语言程序设计,图书管理系统课程设计

    c语言图书管理系统附源码是一款由C语言编写的图书管理系统,它是由吾爱论坛网友分享提供的,对于学习C语言的朋友可以借鉴参考学习代码的编写,这也是在大学里初学C语言经常会遇到的课题,欢迎大家下载学习. 系 ...

  5. C语言——小型图书管理系统(课程设计)

    [文末获取资源] 该系统包括以下功能: 01.注册账号 02.登录账号 03.修改密码 04.录入功能 05.添加功能 06.删除功能 07.修改功能 08.浏览功能 09.查询密码 10.排序功能 ...

  6. 图书管理系统python代码课程设计报告_数据结构图书管理系统课程设计报告

    1 一.设计题目与要求 [ 问题描述 ] 设计一个计算机管理系统完成图书管理基本业务. [ 基本要求 ] ( 1) 每种书的登记内容包括书号.书名.著作者.现存量和库存量: ( 2) 对书号建立索引表 ...

  7. 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告

    <C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...

  8. 大一java图书馆管理系统课程设计

    大一java图书馆管理系统课程设计 代码仅供参考!!!仅供参考!!! 效果图如下 管理员用户名:123  密码123 密码错误的话进入项目resources文件夹有个LMS数据库,使用数据库客户端打开 ...

  9. 物资管理系统 c语言,物资管理系统课程设计报告.doc

    物资管理系统课程设计报告 中 国 地 质 大 学 本科生课程论文封面 课程名称 c语 言 课 程 设 计课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构 ...

  10. java成绩管理系统论文总结,JAVA论文成绩管理系统课程设计

    JAVA论文成绩管理系统课程设计 课课 程程 设设 计计 论论 文文 基于基于 JAVAJAVA 的学生成绩管理系统的设计与实现的学生成绩管理系统的设计与实现 学生姓名学生姓名 学学 号号 年级专业年 ...

最新文章

  1. 服务端异步IO配合协程浅析
  2. Python_note6 组合数据类型+jieba库+文本词频统计
  3. 卷积神经网络 卷积的概念
  4. C语言如何在可变参数函数中使用printf?
  5. php 等值线,【地理】攻克等值线的六大法门
  6. Hi Visual Studio for Mac
  7. 服务化改造实践(二)| Dubbo + Kubernetes
  8. JavaScript单线程和浏览器事件循环简述
  9. (一)Java中的HashMap多线程死循环
  10. SSH反向代理转发至内网msf
  11. 横空出世,比Visio快10倍的画图工具来了
  12. JQuery AJAX 的表单提交
  13. 函数调用中的堆栈平衡
  14. B2B、B2C、BOS系统都指哪些?
  15. 在一家公司干多长时间跳槽才合适?值得一读!
  16. 获取驱动失败Java连接数据库,好哀伤,java连接sql数据库加载驱动就是失败了
  17. 代码覆盖率、功能覆盖率分析
  18. 【环境配置】虚拟机中配置C++环境
  19. 学渣的刷题之旅 leetcode刷题 1.两数之和
  20. 究竟什么时候需要用RTOS?

热门文章

  1. 嵌入式 Linux下检索字符串命令grep
  2. 【论文解读】 FPGA实现卷积神经网络CNN(二): Optimizing FPGA-based Accelerator Design for DCNN
  3. linux 移动硬盘 mac,Macbook pro使用原生EFI在移动硬盘安装Windows+Fedora双系统
  4. 【小程序开发】开发一个短信登录验证(后端采用springboot)
  5. Pr 音频效果参考:立体声声像、时间与变调
  6. USB转单串口、多串口芯片选型UART.TTL.RS-232等
  7. 打砖块游戏源文件_2020年10月手游海外买量分析: 多款RPG游戏上新,休闲厂商霸占Top 推广榜...
  8. CSS 查看css兼容性的站点
  9. 【并发编程】CPU cache结构和缓存一致性(MESI协议)
  10. 从面试官的角度聊聊培训班对程序员的帮助,同时给培训班出身的程序员一些建议