包含数据增删查改,排序,文件输入
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);
}