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

该博客详细介绍了图书信息管理系统的实现,包括顺序表的使用、增删改查功能、图书去重、价格排序等功能。同时,还阐述了基于线性表和二叉排序树的低频词过滤系统,用于统计单词频率并过滤低频词。
摘要由CSDN通过智能技术生成

目录

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

实验内容:

 预习部分(选用顺序表)

相关函数

代码部分

运行截图

  基于线性表和二叉排序树的低频词过滤系统

  实验内容

相关函数 

代码部分:

运行截图 


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

实验内容:

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

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

 预习部分(选用顺序表)

函数申明及用到的部分头文件说明
#include<iostream>//输入输出流
#include <string.h>//针对于字符的各种操作
#define maxsize 100//定义最大值
typedef int status;//定义函数状态(错误,完成,溢出)
#define ERROR 0
#define OVERFLOW -2//溢出
#define OK 1 

定义结构体:

typedef struct 
{
    
    char no[MAXID];
    char name[MAXNAME];
    float price;
}book;
typedef struct 
{
    book *elem;
    int length;
}SqList;

相关函数

1).int IntList(SqList &L)//初始化顺序表

  创建顺序表并开辟长度为30的空间

  if(!L.elem){cout<<"顺序表构造失败!"<<endl;

  if(!L.elem)用来判断,如果申请空间失败,则返回错误;

2).int GetList(SqList &L)//输入相关数据

 先判断图书信息数是否合理,如果输入图书信息数超过最大值,退出

 从键盘输入图书的信息

 if (!strcmp(L.elem[i].no,"0")&&!strcmp(L.elem[i].name,"0"),L.elem[i].price==0) break;//输入结束标 志0 0 0则停止输入

3).void  ShowList(SqList L)//输出

4).bool DeleteSame(SqList &L)//删除相同的图书

 每个图书的书号唯一,所以根据图书的序列号进行去重

5).void PriceJiang(SqList &L)   // 价格降序排列

  对表中图书的价格进行比较,降序排列

  第一个元素即为初始值,然后拿第一个元素去和后面的元素依次比较,最终排列顺序是价格高的    排 在首位,降序排列

  输出经过排序后的顺序表 

6).void Favorite(SqList &L)//最爱图书查找

 输入书名后和表中已有的图书信息依次进行比较

 如果找到某个图书的信息和输入的图书信息相同,输出这本书的所有信息     

 找不到的情况则输出"抱歉,没有你的最爱

7).int InsertList(SqList &L)//图书入库

 输入要插入的位置,判断位置是否合理

 如果插入的位置合法,则从插入点起所有的元素向后移动一个单位 

8).int upprice(SqList &L)//批量提高图书价格

9).int DeleteList(SqList &L) //删除指定图书

  输入需要删除的书号

 所有元素从删除点前移一位

10).bool Expensive(SqList &L)//最贵图书查找 

11).int NumberList(SqList L)//统计图书数量

  顺序表的长度即为表中图书的数量

代码部分

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxsize 100
#define ERROR 0
#define OVERFLOW -2//溢出
#define OK 1 
using namespace std;

typedef struct
{
	char no[20];
	char name[20];
	double price;
}Book;

typedef struct
{
	Book *elem;
	int length;
}SqList;

//顺序表的初始化
int IntList(SqList &L)
{
	L.elem=new Book[30];
	if(!L.elem){cout<<"顺序表构造失败!"<<endl;exit(-1);}
	L.length=0;
	cout<<"顺序表构造成功!"<<endl;
	return 1;
}

//顺序表的取值
int GetList(SqList &L)
{
	int i=1;
	while(1)
	{
		if (i>maxsize) exit(OVERFLOW);//输入图书信息数超过最大值,退出	
		cin>>L.elem[i].no>>L.elem[i].name>>L.elem[i].price;	
		if (!strcmp(L.elem[i].no,"0")&&!strcmp(L.elem[i].name,"0"),L.elem[i].price==0) break;//输入结束标志0 0 0则停止输入	
		i++;
	}
	L.length=i-1;
	return OK;
}
void  ShowList(SqList L)
{
	int i=1;
	cout<<"书号\t\t"<<"书名\t\t"<<"图书价格"<<endl;
	for(i;i<=L.length;i++){
		cout<<L.elem[i].no<<"\t\t"<<L.elem[i].name<<"\t\t"<<L.elem[i].price<<endl;
	}
}

//顺序表的查找
int Favorite(SqList L)
{
	int i=1;
	int x,c;
	char a[20];
	char b[20];
	cout<<"2、按书名查找:"<<endl;

		cout<<"请输入你要查询的书名:";
		cin>>b;
		for(i;i<=L.length;i++)
		{
			if(!strcmp(L.elem[i].name,b))
			{
	          cout<<"书号\t\t"<&
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
I 摘要 随着计算机的普及和网络的出现,对信息的需求日益增加,图书馆业务受到 了强烈的冲击,传统的手工管理方式已不能适应现在的信息化社会。如何利用现 有的科学技术条件提高图书信息的管理效率是我们当下要考虑的问题。图书信息 管理系统是典型的信息管理系统,其开发主要包括前端应用程序的设计和后台数 据库的建立及维护两方面。对于前者,要求应用程序功能完备,易于使用;而对于 后者,则要求数据库具有一致性、完整性、安全性等特点。 本课题的研究方法是采取实地考察,调查本市各高校图书馆和市图书馆的图 书管理系统,同时结合大量的参考资料。在图书信息管理系统中,因为涉及内容 比较多,所以在初步的数据库设计中会存在着遗漏的地方,对于这种问题主要通 过查看参考书来解决问题。另外一个存在问题比较多的地方是数据库的实现,比 如编程,对于这个问题只能通过多练习一些简单的编程,同时积极地利用图书馆 和网络资源,多查阅一些相关资料,多和老师、同学交流讨论。 本文对系统的开发工具Delphi7.0及数据库开发语言MS SQL Server2000、SQL 语言原理等知识进行深入的探讨之后,主要阐述了图书信息管理系统的开发背景 和发展趋势、需求分析、功能模块划分、数据库设计、各功能模块的实现方法及 过程等,并对所开发系统中的用户信息和图书信息的添加、删除、修改、查询等 功能界面的设计实现作了详细阐述。本系统能够满足基本图书信息管理的需求, 保证图书管理的安全性。 但是该系统还有许多不尽人意的地方,比如用户界面设计不够美观,系统实 现的功能安排也不够合理。系统的统计设计也只有单一时间的统计等,这些都有 待改进。从系统维护与运行上讲,该系统不能在线对功能进行升级,只适用于单 机运行。 图书信息管理系统的开发是一项细腻而又复杂的工作,所以它要求设计者要 有总体规划的能力,还要有百倍的耐心去做,在设计方面一点都不能马虎。图书 信息管理系统的发展趋势就是从单机版向网络版发展,逐步进入数字化管理。 关键词:图书信息管理系统,Delphi7.0开发工具,数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值