#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. Scrapy学习-15-降低被识别为爬虫的方法

    3种常见的方法 1. 在settings中配置禁用cookies COOKIES_ENABLED = False 2. scrapy限速处理,scrapy为我们提供了扩展模块,它能动态的限制下载速度 ...

  2. Codeforces 404E: Maze 1D(二分)

    题意:指令“R”机器人会向右走一步,“L”是向左.起初机器人在0位置,可以在除了0以外的任何位置放障碍,如果机器人的指令将使它走到障碍上,那这一步他会保持不动.要求让机器人最终结束的那一步一定只走过一 ...

  3. hdu 4632 子字符串统计的区间dp

    题意:查找这样的子回文字符串(未必连续,但是有从左向右的顺序)个数. 简单的区间dp,哎,以为很神奇的东西,其实也是dp,只是参数改为区间,没做过此类型的题,想不到用dp,以后就 知道了,若已经知道[ ...

  4. LeetCode OJ——Validate Binary Search Tree

    http://oj.leetcode.com/problems/validate-binary-search-tree/ 判断一棵树是否为二叉搜索树.key 是,在左子树往下搜索的时候,要判断是不是子 ...

  5. 如何获取MAC的进程数

    参考链接: https://www.cnblogs.com/watchdatalearn2012620/p/3182477.html https://segmentfault.com/q/101000 ...

  6. NEERC15

    2015-2016 ACM-ICPC Northeastern European Regional Contest 再开一个新坑吧 目前姿势有限,C.H.I仍然处于弃坑状态 代码戳这里 Problem ...

  7. 使用一个数组存储一个英文句子"java is an object oriented programing language"

    class fun { public static void main(String[] args) { String str="java is an object oriented pro ...

  8. 解决.NET Core MVC 视图中的中文被html编码的问题

    在  .net core mvc 视图输出 变量的时候 默认使用的是 UnicodeRanges.BasicLatin  进行的编码 所以 输出中文后在查看源码的时候是进过编码了的 . 解决方案 在 ...

  9. docker run 报错——WARNING: IPv4 forwarding is disabled. Networking will not work.

    执行  docker run  时遇到如下WARNING: [root@etcd1 volumes]# docker run -d -p 8080:80 -v /tmp/test_mount http ...

  10. iOS绘图—— UIBezierPath 和 Core Graphics

    前言 iOS系统本身提供了两套绘图的框架,即UIBezierPath 和 Core Graphics.而前者所属UIKit,其实是对Core Graphics框架关于path的进一步封装,所以使用起来 ...