图书管理系统V1.0

包含数据增删查改,排序,文件输入
1、图书信息包括:书名、出版日期、入库日期等; 加上了剩余书本的数量

2、图书信息录入功能——输入;

3、图书信息浏览(查询)功能——输出;

 按照入库日期查询;

4、图书信息排序功能;

 按照出版日期排序;

5、图书信息的修改;

 已知书名的时候,对其出版或入库日期的修改;

6、图书信息的删除;

 已知书名的时候,删除其个人信息

头文件

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include <string.h>
#include<windows.h>
#include<fstream>
#include<iomanip>
using namespace std;
#define N 100

结构定义及函数声明

struct Book																//结构体变量
{
	char name[50];														//书名
	unsigned long int data_in;											//入库日期
	unsigned long int data_out;											//出版日期
	int left;															//库存
}bk[N];																	//数组

int Numb = 4;															//目前图书总类
unsigned int password=123456;											//管理员密码
int pass = 0;															//初始状态为0,管理员密码输入正确则为1 管理员操作后复位为0

int init();																//初始化函数
int menu(void);															//菜单界面
int add();																//录入图书
int show();																//输出图书信息																
int sort();																//刷新(排序)图书信息
int rewrite();															//修改图书信息
int find();																//查找														
int del();																//删除
int save();																//保存
int administrator();													//管理员模式

主函数部分

int main()

{
	
	int flag;																//菜单选择标记
	init();																	//初始化函数,选择数据如何导入
	while(1)
		 {
		 menu();
		 cout<<"请输入你的选择\n";
		 cin>>flag;
		 if(flag == 1)
			{ 
				administrator();											//判断密码,只有正确输入密码才可以进行后续操作
				if(pass)
				{
					//cout<<"函数进入此处"<<endl;
					add();
					show();
				}
				else
				{
					cout<<"密码输入错误,请重新选择!"<<endl;
				}
			}
		 else if(flag == 2)
			 { 
				 find();
				 cout<<endl<<endl;
			 }
		else if(flag == 3)
			{	
			
				sort();
				show();
				cout<<endl<<endl;
				
			
			 }
		else if(flag == 4)
			{	
				 administrator();
				if(pass)
				{
					rewrite();
					show();
					cout<<endl<<endl;
				}
				else
				{
					cout<<"密码输入错误,请重新选择!"<<endl;
				}
				
				
				
				
			 }
		else if(flag == 5)
			 { 
				 administrator();
				if(pass)
				{
					del();
					show();
				}
				else
				{
					cout<<"密码输入错误,请重新选择!"<<endl;
				}
				
			}
		else if(flag == 6)
			{
			 save();
			 }
		 else if(flag == 7)
			{ 
				cout<<"已退出点菜管理系统"<<endl;
				break;
			}
		 else
		 {
		 cout<<"输入错误选项。"<<endl;
		 }
		}
}
int init()																		//初始化
	{
	 
		 cout<<"**************************************************\n";
		 cout<<" 欢迎进入餐厅菜单管理系统\n";
		 cout<<"**************************************************\n";
		 int choose;
		 cout<<"请选择初始菜单的导入方式: "<<endl;
		 cout<<"1、源码预留数据; 2、文件形式导入"<<endl;
		 cin>>choose;
		 if(choose==1)															//choose选择初始化方式
		 {
		 Book temp[N]=
		 {
			 {"C++PremerPlus",20030506,20030507,3},{"时间简史",20010802,20010805,3},
			 {"从一到无穷大",20020618,20020620,3},{"数学分析",20040127,20040127,2}
		 };
		 for(int i=0;i<Numb;i++)
			 bk[i]=temp[i]; 
	}
		 else if(choose==2)
		 {
			 char filename[35];
			 cout<<"请输入需要导入的文件名"<<endl;
			 cin>>filename;
			 ifstream fin(filename);
			 if(!fin)
			 {
				 cerr<<"Error open the file\n";
				 exit(1);
			 }
			 for(int i=0;i<Numb;i++)
			 {
				 fin>>bk[i].name;
				 fin>>bk[i].data_in;
				 fin>>bk[i].data_out>>bk[i].left;
			 }
			//测试代码 cout<<"函数进入此处"<<endl;
			 fin.close();
		 }
		 show();
	}

int menu()																			//系统界面,菜单
	{
/***************************************<setiosflags(ios::left)函数-》左对齐***************************************************/
		cout<<"********************************************************************\n";
		cout<<"************************欢迎来到图书管理系统************************"<<endl;
		cout<<"请选择:"<<endl;
		cout<<setiosflags(ios::left)<<"		————————————————\n";
		cout<<setiosflags(ios::left)<<"		|	1.录入图书信息		|	"<<endl;			//图书信息录入功能——输入;
		cout<<setiosflags(ios::left)<<"		|	2.查找图书信息		|	"<<endl;			//按照入库日期查询;
		cout<<setiosflags(ios::left)<<"		|	3.刷新图书信息		|	"<<endl;			//按照出版日期排序
		cout<<setiosflags(ios::left)<<"		|	4.修改图书信息		|	"<<endl;			//已知书名的时候,对其出版或入库日期的修改;
		cout<<setiosflags(ios::left)<<"		|	5.删除图书信息		|	"<<endl;			// 已知书名的时候,删除其个人信息;
		cout<<setiosflags(ios::left)<<"		|	6.菜单信息的保存	|	"<<endl;			
		cout<<setiosflags(ios::left)<<"		|	7.退出系统		|"<<endl;
		cout<<setiosflags(ios::left)<<"		————————————————\n";
		cout<<"*******************************************************************\n";

		return (0);
	}


int add()																			//增加一组书本信息
{
	 int i=Numb;																	//(属于敏感操作须核对管理员密码)
	 cout<<"输入第"<<i+1<<"本书:书名 入库日期 出版日期 剩余数量"<<endl;
 
	 cin>>bk[i].name;
	 cin>>bk[i].data_in;
	 cin>>bk[i].data_out;
	 cin>>bk[i].left;
	 cout<<endl;
	 Numb++;
	 pass = 0;
	return (0);
}
int show()																			//依次输出书本信息
{
	int i;
	cout<<"当前图书库存如下:"<<endl;
	cout<<'\t'<<"书名"<<'\t'<<"        入库日期"<<'\t'
	<<"出版日期"<<'\t'<<"剩余数量"<<endl;
	for(i=0;i<Numb;i++)
		cout<<'\t'<<bk[i].name<<'\t'<<bk[i].data_in
		<<'\t'<<bk[i].data_out<<'\t'<<" "<<bk[i].left<<endl;

	return (0);
}
int sort()																			//刷新函数,进行书本排序,可以按照入库日期以及图书库存数量进行排序
{
	 int i, j, choose;
	 Book t;
	 cout<<"请输入您的排序方式: 1.按出版日期排序; 2.按数量排序; "<<endl;
	 cin>>choose;
	 while(choose!=1&&choose!=2)
	 {
		 cout<<"输入了错误的选项"<<endl;
		 cout<<"请再次输入您的排序方式: 1.按出版日期排序; 2.按数量排序; "<<endl;
		 cin>>choose;
	 }
	 if(choose==1)																	//按出版日期日期排序
	 {
	 for(i=0;i<Numb-1;i++)
	  for(j=i+1;j<Numb;j++)
		{
			 if(bk[i].data_out>bk[j].data_in)
			{
				t=bk[i];
				bk[i]=bk[j];
				bk[j]=t;
			}
		}
	 }
	 else if(choose==2)																//按数量排序
	 {
	 for(i=0;i<Numb-1;i++)
	  for(j=i+1;j<Numb;j++)
		{
			if(bk[i].left>bk[j].left)
			{
				 t=bk[i];
				 bk[i]=bk[j];
				 bk[j]=t;
			}
		}
	 }
	return (0);
}
int rewrite()																		//修改图书信息,可修改内容:图书入库日期:图书库存数量。
{
	 int i;																			//(属于敏感操作须核对管理员密码)
	 char flag1;
	 char str[35];
	 cout<<"进入按照书名查找并修改"<<endl;
	 cout<<"请输入你想查找的书名: "<<endl;
	 cin>>str;
	 for(i=0;i<Numb;i++)
	 if(strcmp(bk[i].name,str)==0)
	 {
	 cout<<"您想查找的书是: "<<endl;
	 cout<<bk[i].name<<'\t'<<bk[i].data_in
	 <<'\t'<<bk[i].data_out<<'\t'<<" "<<bk[i].left<<endl;
	 cout<<"确定要修改该书吗?(Y/N) "<<endl;
	 cin>>flag1;
	 break;
	 }
	 if(flag1=='Y'||flag1=='y')
	 {
	 cout<<"请输入该书本的新信息:入库日期,数量"<<endl;
	 cin>>bk[i].data_in;
	 cin>>bk[i].left;
	 }
	 else if(flag1=='n'||flag1=='N')
	 {
	 cout<<"图书信息没有改变"<<endl;
	 }
	 pass = 0;
	return (0);
}
int find()																			//查找图书信息,提供两种方式1.按书名  2.按入库日期
{
	int i, choose, flag=0;
    int num;
    char str[35];
    cout<<"请输入您的查找方式: 1.按书名; 2.按入库日期; "<<endl;
    cin>>choose;
    while(choose>2)
    {
    cout<<"输入了错误的选项"<<endl;
    cout<<"请再次输入您的查找方式: 1.按书名; 2.按入库日期; "<<endl;
    cin>>choose;
    }
    if(choose==1)																	//choose 1 按照书名查询
 	{
		cout<<"请输入你想查找的书名: "<<endl;
		cin>>str;
		for(i=0;i<Numb;i++)
			if(strcmp(bk[i].name,str)==0)
			{
				flag=1;
				cout<<"您想查找的书本是: "<<endl;
				cout<<'\t'<<"书名"<<'\t'<<"入库日期"<<'\t'<<'\t'<<"出库日期"<<'\t'<<"数量"<<endl;
				cout<<'\t'<<bk[i].name<<'\t'<<bk[i].data_in
				<<'\t'<<bk[i].data_out<<'\t'<<" "<<bk[i].left<<endl;
				break;
			}
		if(flag==0)
		{
			cout<<"找不到您想查找的书本"<<endl;
		}
	}
    else if(choose==2)																//choose 2 按照入库日期查询
		{
			cout<<"检测: "<<endl;
			cout<<"请输入查找书本入库日期: "<<endl;
			cin>>num;
			for(i=0;i<Numb;i++)
			if(bk[i].data_in==num)
			{
			flag=1;
			cout<<"您想查找的书本是: "<<endl;
			cout<<'\t'<<bk[i].name<<'\t'<<bk[i].data_in
			<<'\t'<<bk[i].data_out<<'\t'<<" "<<bk[i].left<<endl;
			break;
			 }
			if(flag==0)
				{
				cout<<"找不到您想查找的书本"<<endl;
				} 
		}
	
	return (0);
}
int del()																			//删除书本信息
{
	 int i;																			//(属于敏感操作须核对管理员密码)
	 char ch1;
	 char str[20];
	 cout<<"进入按照书名查找并对其删除的功能"<<endl;
	 cout<<"请输入你想查找的书名: "<<endl;
	 cin>>str;
	 for(i = 0;i<Numb;i++)
	 if(strcmp(bk[i].name,str)==0)
	 {
		 cout<<"您想删除的书本信息是: "<<endl;
		 cout<<bk[i].name<<'\t'<<bk[i].data_in
		 <<'\t'<<bk[i].data_out<<'\t'<<" "<<bk[i].left<<endl;
		 cout<<"确定要删除该书本信息吗?(Y/N) "<<endl;
		 cin>>ch1;
		 break;
	 }
	 if(ch1=='Y'||ch1=='y')
	 {
		 for(;i<Numb-1;i++)
		 bk[i]=bk[i+1];
		 Numb--;
	 }
	 else if(ch1=='n'||ch1=='N')
	 {
		cout<<"书本信息没有删除"<<endl;
	 }
	 pass = 0;
	return (0);
}

int save()																			//保存书本信息
	 {
	 ofstream f1;
	 char filename[35];
	 cout<<"请输入你要保存的文件名(含.txt 后缀) "<<endl;
	 cin>>filename;					
	 f1.open(filename);
	 for(int i=0;i<	Numb;i++)
		 f1<<bk[i].name<<'\t'
		 <<bk[i].data_in<<'\t'
		 <<bk[i].data_out<<'\t'
		 <<" "<<bk[i].left<<endl;
		 f1.close();
	return (0);
	 }

int administrator()		
{
	unsigned int admin = 0;
	 cout<<"敏感操作!输入管理员密码!"<<endl;
	 cin>>admin;
	 while(admin==password)
	 {
		 pass = 1;
		 break;
	 }
	return (0);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值