#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
using namespace std;
struct Library
{
long number;//编号
string bookname;//书名
string author;//作者
string press;//出版社
int price;//价格
};
Library book[10000000];//
int size=0;
int count=0;
void welcome();
void increase();//添加图书
void find();
void find_1();//查找图书
void find_2();
void find_3();
void find_4();
void find_all();//查找所有图书
void display(int i);
int main()
{
welcome();
return 0;
}
void welcome()
{
int n;
cout<<"*---------------------------*"<<endl;
cout<<"|--------图书管理系统-------|"<<endl;
cout<<"|---------------------------|"<<endl;
cout<<endl;
cout<<"|---------------------------|"<<endl;
cout<<"|--------1.添加图书---------|"<<endl;
cout<<"|--------2.查找图书---------|"<<endl;
cout<<"|--------3.查找所有图书-----|"<<endl;
cout<<"|--------4.退出系统---------|"<<endl;
cout<<"*---------------------------*"<<endl;
cout<<"请输入指令:";
cin>>n;
switch(n)
{
case 1:
increase();
cout<<endl;
welcome();
break;
case 2:
find();
welcome();
break;
case 3:
find_all();
welcome();
break;
default:
break;
}
}
void increase()
{
char m,n,y;
cout<<"输入图书编号:";
cin>>book[size].number;
cout<<"输入书名:";
cin>>book[size].bookname;
cout<<"输入作者姓名:";
cin>>book[size].author;
cout<<"输入出版社:";
cin>>book[size].press;
cout<<"输入价格:";
cin>>book[size].price;
cout<<"加入成功!"<<endl;
display(size);
size++;
count+=1; cout<<"是否继续加入图书(是y,否n)"<<endl;
cin>>m;
if(m=='y')
increase();
if(m=='n')
welcome();
}
void display(int i)
{
cout<<"+-----------------------------------------------------------------------+"<<endl;
cout<<setiosflags(ios::left)<<"+"<<setw(10)<<"图书编号"<<setw(1)<<'|'<<setw(10)<<"书名"<<setw(1)<<'|'<<setw(20)<<"作者"<<setw(1)<<'|'<<setw(15)<<"出版社"<<setw(1)<<'|'<<setw(10)<<"价格"<<setw(1)<<'|'<<endl;
cout<<"+-----------------------------------------------------------------------------+"<<endl;
cout<<setiosflags(ios::left)<<"+"<<setw(10)<<book[i].number<<setw(1)<<'|'<<setw(10)<<book[i].bookname<<setw(1)<<'|'<<setw(20)<<book[i].author<<setw(1)<<'|'
<<setw(15)<<setiosflags(ios::fixed)<<setprecision(2)<<book[i].press<<setw(9)<<setw(1)<<'|'<<setw(10)<<book[i].price<<setw(1)<<'|'<<endl;
cout<<"+-----------------------------------------------------------------------+"<<endl;
}
void find()
{
int n;
cout<<"*---------------------------------*"<<endl;
cout<<"|--------1.以图书编号查找---------|"<<endl;
cout<<"|--------2.以图书名查找-----------|"<<endl;
cout<<"|--------3.以作者名查找-----------|"<<endl;
cout<<"|--------4.以出版社查找-----------|"<<endl;
cout<<"|--------5.回到主菜单-------------|"<<endl;
cout<<"*---------------------------------*"<<endl;
cout<<"请输入指令:";
cin>>n;
switch(n)
{
case 1:
find_1();
break;
case 2:
find_2();
break;
case 3:
find_3();
break;
case 4:
find_4();
break;
default:
welcome();
break;
}
}
void find_1()
{
long num;
cout<<"输入要查找的图书编号:"<<endl;
cin>>num;
bool flag=false;
int n;
for(n=0; n<=size; n++)
{
if(num==book[n].number)
{ flag=true;
break;
}
}
if(flag)
display(n);
else
cout<<"没有查询结果,或该书不存在!"<<endl;
}
void find_2()
{
string name;
cout<<"输入要查找的图书名:"<<endl;
cin>>name;
bool flag=false;
int n;
for(n=0; n<=size; n++)
{
if(name==book[n].bookname)
{ flag=true;
break;
}
}
if(flag)
display(n);
else
cout<<"没有查询结果,或该书不存在。"<<endl;
}
void find_3()
{
string zuozhe;
cout<<"输入要查找的作者名:"<<endl;
cin>>zuozhe;
bool flag=false;
int n;
for(n=0; n<=size; n++)
{
if(zuozhe==book[n].author)
{ flag=true;
break;
}
}
if(flag)
display(n);
else
cout<<"没有查询结果。或该书不存在!"<<endl;
}
void find_4()
{
string chuban;
cout<<"输入要查找的出版社名:"<<endl;
cin>>chuban;
bool flag=false;
int n;
for(n=0; n<=size; n++)
{
if(chuban==book[n].press)
{ flag=true;
break;
}
}
if(flag)
display(n);
else
cout<<"没有查询结果,或该书不存在! "<<endl;
}
void find_all()
{
for(int n=0; n<size; n++)
{
display(n);
}
}

感悟:唉!

!!!

s1考试 图书管理系统 结构体版的更多相关文章

  1. 二叉树的序遍历x(内含结构体与非结构体版x)

    3143 codevs 二叉树的序遍历 题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个 ...

  2. C语言结构体对齐

    1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...

  3. 结构体类型定义(C语言)

    结构体的定义形式如下: struct 结构体名 { 结构体成员 }: 结构体变量的定义方式有三种:1.先定义结构体,再定义变量: eg. struct student{ char name[10]; ...

  4. C/C++(结构体)

    结构体(struct) 从某种意义上说,会不会使用struct,如何使用struct是区别一个开发人员是否具备丰富开发经验的试金石. 处理由不同类型成员构成的构造类型,要采用结构体的方式. 定义:关键 ...

  5. Golang的面向对象编程【结构体、方法、继承、接口】

    Golang也支持面向对象编程.但与以前学过传统的面向对象编程语言有区别.1)Golang没有类class,Go语言的结构体struct和类class有相似的特性.2)Golang中不存在继承,方法重 ...

  6. c# 编程--结构体

    结构体:由多种简单类型,组合成一种复杂的类型.使用这种复杂的类型来解决生活中的实际例子. 一.结构体定义:struct 结构体的名子{    public 类型名 变量名;    .....}    ...

  7. go 结构体与方法

    go 结构体与方法   go 结构体相当于 python 中类的概念,结构体用来定义复杂的数据结构,存储很多相同的字段属性 结构体的定义 1.结构体的定义以及简单实用 package main imp ...

  8. go结构体与方法

    go结构体相当于python中类的概念 结构体用来定义复杂的数据结构,存储很多相同的字段属性 1.结构体的定义以及简单实用 package main import ( "fmt" ...

  9. Go语言基础六:结构体和方法

    结构体 结构体是一个由用户定义的复合类型,它由一系列属性组成,每个属性都有自己的类型和值.Go语言中数组可以存储同一类型的数据,但在结构体中用户可以为不同项定义不同(或相同)的数据类型.结构体是值类型 ...

随机推荐

  1. AC日记——【模板】线段树 1 洛谷 P3372

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...

  2. AC日记——让我们异或吧 洛谷 P2420

    题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...

  3. 微信小程序 wx.navigateTo()传参及多个参数方法

    var workModeAndPriceList = res.data.data.workModeAndPriceList; //var result = JSON.stringify(workMod ...

  4. 洛谷——P1220 关路灯

    P1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉 ...

  5. Xamarin.Forms特殊的视图BoxView

    Xamarin.Forms特殊的视图BoxView   BoxView是Xamarin.Forms比较特殊的视图.该视图构建非常简单,其作用也很单一.它的作用就是构成一个特定颜色的色块.在界面设计中, ...

  6. error错误信息状态码含义

    XMLHttpRequest.status: 200:成功. 401:拒绝访问. 403:禁止访问. 404:找不到. 405:方法不被允许. 407:要求进行代理身份验证. 500:内部服务器错误. ...

  7. JS中原型链中的prototype与_proto_的个人理解与详细总结(**************************************************************)

    一直认为原型链太过复杂,尤其看过某图后被绕晕了一整子,今天清理硬盘空间(渣电脑),偶然又看到这图,勾起了点回忆,于是索性复习一下原型链相关的内容,表达能力欠缺逻辑混乱别见怪(为了防止新人__(此处指我 ...

  8. 支持WEB、Android、IOS的地图解决方案

    转自原文 支持WEB.Android.IOS的地图解决方案 工具链 GIS工具集 OpenGeo Suite 包含PostGIS, GeoServer, GeoWebCache, OpenLayers ...

  9. 手动安装windows的磁盘清理工具

    All you really need to do is copy some files that are already located on your server into specific s ...

  10. andriod 获得应用程序名称

    import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; im ...