数据结构—图书管理系统(顺序表实现)

本文介绍了一个基于数据结构的图书管理系统的设计与实现。系统采用顺序表存储图书信息,包括ID、名称和价格,支持建立、输入、查找、插入、删除和输出等功能。通过C++语言实现,用户可以进行图书信息的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次数据结构作业,好好写写

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int maxn = 1e5+50;

struct book {
	string id;
	string name;
	double price;
	book () {}
	book (string _id,string _name,double _price) { id = _id; name = _name; price = _price;}
};

typedef struct {
	book* elem;
	int length;
} sqtable;

int init(sqtable &s) { //
	s.elem = new book[maxn];
	if ( !s.elem ) exit(-2);
	s.length = 0;
	return 1;
}

int delect(sqtable &s,int pos) {
	if ( s.length <= 0 || s.length < pos ) return 0;
	for (int i = pos ; i <= s.length - 1 ; i ++ ) {
		s.elem[i] = s.elem[i+1];
	} 
	s.length --;
	return 1;
}

int insert(sqtable &s,int pos,book val) {
	if ( s.length + 1 == pos ) {
		s.length ++; s.elem[s.length] = val; return 1;
	}
	if ( s.length >= maxn - 1 || pos > s.length ) return 0;
	for (int i = s.length ; i >= pos ; i -- ) {
		s.elem[i+1] = s.elem[i];
	}
	s.elem[pos] = val;
	++ s.length;
	return 1; 
}

void Print(sqtable &s) {
	if ( s.length == 0 ) printf("-----顺序表为空-----\n");
	else {
		for (int i = 1 ; i <= s.length ; i ++ ) {
			cout << "id = "<<s.elem[i].id << " -- "<< "name = "<< s.elem[i].name << " -- "<< "price = "<< s.elem[i].price<< endl;
		}
	} 
}

int Scanner(int length,sqtable &s) {
	if ( s.length + length > maxn - 1) return 0;
	printf("*************************** 请依次输入 id -- name -- price (每行一个信息) *******************************\n");
	for (int i = s.length + 1 ; i <= s.length + length ; i ++ ) {
		cin >> s.elem[i].id >> s.elem[i].name >> s.elem[i].price ;
	} 
	s.length += length; 
	return 1;
}

int findder(sqtable &s,double price) {
	for (int i = 1 ; i <= s.length ; i ++) {
		if ( s.elem[i].price == price ) return i;
	}
	return 0;
}

int main() {
	int length ,val ; 
	double price;
	book temp; 
	while(true) {
		int choose = -1;
		puts("------------欢迎来到图书管理系统-------------");
		puts("");
		puts("**********************************************");
		puts("*******************1. 建立********************");
		puts("*******************2. 输入********************");
		puts("*******************3. 查找********************");
		puts("*******************4. 插入********************");
		puts("*******************5. 删除********************");
		puts("*******************6. 输出********************");
		puts("*******************0. 退出********************");
		puts("**********************************************");
		puts("");
		sqtable s;
		while(cin >> choose && choose) {
			if ( choose == 1 ) {
				if(!init(s)) printf("-----内存分配失败-----\n");
				else printf("-----内存分配成功-----\n");
			} else if ( choose == 2 ) {
				printf("请输入需要输入的信息的长度 : \n");
				cin >> length;
				if ( Scanner(length ,s ) ) {
					printf("-----输入完毕-----\n");
				} else {
					printf("----- error : 内存超限 -----\n");
				}
			} else if ( choose == 3 ) {
				printf("请输入一个书的价格信息:\n");
				cin >> price;
				val = findder(s ,price );
				if ( val ) {
					printf("该书的信息为: ");
					cout << "id = "<< s.elem[val].id<< " -- "<< "name = "<< s.elem[val].name<< " -- "<< "price = "<< s.elem[val].price<< endl; 
				} else {
					printf("-----对不起:没有该书的消息-----\n");
				}
			} else if ( choose == 4 ) {
				printf("请输入插入的书本位置和信息 (id--name--price):\n");
				cin >> val >> temp.id >> temp.name >> temp.price;
				if ( insert(s ,val ,temp ) ) {
					printf("-----插入成功-----\n");
				} else {
					printf("-----插入失败-----\n");
				}
			} else if ( choose == 5 ) {
				printf("请输入删除书本的位置:\n");
				cin >> val;
				if ( delect(s ,val ) ) {
					printf("-----删除成功-----\n");
				} else {
					printf("-----删除失败-----\n"); 
				}
			} else if ( choose == 6 ) {
				Print(s);
				printf("-----输出完毕-----\n"); 
			} 
		}
		printf("-----谢谢使用-----\n您还需要继续使用吗?(1.继续使用,2.停止使用)");
		cin >> val;
		if ( val == 1 ) continue;
		else if ( val == 2 ) break; 
	}
	return 0;
}
图书管理系统设计” 1、问题描述 定义图书类,属性有:书名、出版社、ISBN 号、作者、库存量、价格等信息和相关的 对属性做操作的行为。 主要完成对图书的销售、统计和图书的简单管理。 2、功能要求 (1)销售功能。购买书籍时,输入相应的 ISBN 号,并在书库中查找该书的相关信息。 如果有库存量,输入购买的册数,进行相应计算。如果库存量不够,给出提示信息,结束购 买。 (2)图书简单管理功能。 添加功能:主要完成图书信息的添加,要求 ISBN 号唯一。当添加了重复的编号时,则 提示数据添加重复并取消添加。 查询功能:可按书名、ISBN 号、作者、出版社进行查询。若存在相应信息,输出所查 询的信息,若不存在该记录,则提示“该标题不存在! ” 。 修改功能:可根据查询结果对相应的记录进行修改,修改时注意 ISBN 号的唯一性。 删除功能:主要完成图书信息的删除。输入要删除的 ISBN 号,根据编号删除该物品的 记录,如果该编号不在物品库中,则提示“该编号不存在” 。 (3)统计功能。 输出当前书库中所有图书的总数及详细信息;可按书的价格、库存量、作者、出版社进 行统计,输出统计信息时,要按从大到小进行排序。 (7)图书存盘:将当前程序中的图书信息存入文件中。 (8)读出信息:从文件中将图书信息读入程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值