#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. QQ客服代码,支持临时会话

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=QQ号&site=qq&m ...

  2. hdu 4506(数学,循环节+快速幂)

    小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  3. [ONTAK2010]Peaks

    题目大意: 一个图上有$n(n\leq100000)$个带权点,$m(m\leq500000)$条带权边.有$q(q\leq500000)$组询问,每次询问从点$v$出发,只经过权值小于等于$x$的边 ...

  4. javascript好文---深入理解定位父级offsetParent及偏移大小

    前面的话 偏移量(offset dimension)是javascript中的一个重要的概念.涉及到偏移量的主要是offsetLeft.offsetTop.offsetHeight.offsetWid ...

  5. 【spring boot】注解@SpringBootApplication 相当于 @Configuration、@EnableAutoConfiguration 、 @ComponentScan 三个的作用

    注解@SpringBootApplication 相当于 @Configuration.@EnableAutoConfiguration . @ComponentScan 三个的作用 代码示例:Git ...

  6. 在Dev GridControl中添加颜色可变的ProgressBar z

    在使用DevExpress,GridControl自带的ProgressBarControl的时候 由于无法通过BackColor/ForeColor来改变进度条的颜色所以很多特效是实现不了的.如下面 ...

  7. 简单过下bash/sh脚本基本知识吧

    1.sh/bash要注意空格的使用 2. for循环: for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then if [ &q ...

  8. 很多shell命令后面的单横杠和双横杠,原来这个意思

    原文: https://blog.csdn.net/deyili/article/details/5471023 ------------------------------------------- ...

  9. MySQL主从复制技术与读写分离技术amoeba应用

    MySQL主从复制技术与读写分离技术amoeba应用 前言:眼下在搭建一个人才站点,估计流量会非常大,须要用到分布式数据库技术,MySQL的主从复制+读写分离技术.读写分离技术有官方的MySQL-pr ...

  10. sql的一些知识_函数_汇总数据

    汇总数据 avg()---------求平均数 值得注意的是:avg()只能用于一个列的平均值查询,多个列的平均值请使用多个avg() avg()忽略null值 count()-------计数(指定 ...