s1考试 图书管理系统 结构体版
#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考试 图书管理系统 结构体版的更多相关文章
- 二叉树的序遍历x(内含结构体与非结构体版x)
3143 codevs 二叉树的序遍历 题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个 ...
- C语言结构体对齐
1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...
- 结构体类型定义(C语言)
结构体的定义形式如下: struct 结构体名 { 结构体成员 }: 结构体变量的定义方式有三种:1.先定义结构体,再定义变量: eg. struct student{ char name[10]; ...
- C/C++(结构体)
结构体(struct) 从某种意义上说,会不会使用struct,如何使用struct是区别一个开发人员是否具备丰富开发经验的试金石. 处理由不同类型成员构成的构造类型,要采用结构体的方式. 定义:关键 ...
- Golang的面向对象编程【结构体、方法、继承、接口】
Golang也支持面向对象编程.但与以前学过传统的面向对象编程语言有区别.1)Golang没有类class,Go语言的结构体struct和类class有相似的特性.2)Golang中不存在继承,方法重 ...
- c# 编程--结构体
结构体:由多种简单类型,组合成一种复杂的类型.使用这种复杂的类型来解决生活中的实际例子. 一.结构体定义:struct 结构体的名子{ public 类型名 变量名; .....} ...
- go 结构体与方法
go 结构体与方法 go 结构体相当于 python 中类的概念,结构体用来定义复杂的数据结构,存储很多相同的字段属性 结构体的定义 1.结构体的定义以及简单实用 package main imp ...
- go结构体与方法
go结构体相当于python中类的概念 结构体用来定义复杂的数据结构,存储很多相同的字段属性 1.结构体的定义以及简单实用 package main import ( "fmt" ...
- Go语言基础六:结构体和方法
结构体 结构体是一个由用户定义的复合类型,它由一系列属性组成,每个属性都有自己的类型和值.Go语言中数组可以存储同一类型的数据,但在结构体中用户可以为不同项定义不同(或相同)的数据类型.结构体是值类型 ...
随机推荐
- /sys/class/gpio 文件接口操作IO端口(s3c2440)
http://blog.csdn.net/mirkerson/article/details/8464231 在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网上大多数的 ...
- AxureRP8 实现时间功能
利用AxureRP8中空间的动态面板的状态改变时间设置文本的值,从而实现时间功能,如下内容. 1.新建index页面,如已有index页面忽略这步即可. 2.拖入一个文本标签,将文本标签的名称命名为: ...
- 微信小程序踩坑之一[thist]使用技巧
刚上手小程序 时,习惯把this当成jquery中的$(this)来用,实际上这两个还是有差别的 在页面方法中调用其他方法,一般是用this.function(),直接调用小程序 的方法或函数则是用w ...
- ASP.NET Core 依赖注入基本用法
ASP.NET Core 依赖注入 ASP.NET Core从框架层对依赖注入提供支持.也就是说,如果你不了解依赖注入,将很难适应 ASP.NET Core的开发模式.本文将介绍依赖注入的基本概念,并 ...
- springboot 启动类启动跳转到前端网页404问题的两个解决方案
前段时间研究springboot 发现使用Application类启动的话, 可以进入Controller方法并且返回数据,但是不能跳转到WEB-INF目录下网页, 前置配置 server: port ...
- Excel文件处理Demo
1.BLL业务逻辑代码 /// <summary> /// 处理“店铺竞品销售数据”导入文件 /// </summary> /// <param name="f ...
- 邁向IT專家成功之路的三十則鐵律 鐵律十一:IT人應對之道-靈活
身為一位優秀的IT專家,不能夠只是在技術面的應對能力強,而必須是在人事的應對能力上也要能夠靈活與彈性,否則就算一天給你48小時,你也會把自己的身心弄垮,再強的專業.技術.能力也會瞬間化為泡影. 坦白說 ...
- MY JAVA-NOTE FIRST DAY
今天是第一天开通博客,我很开心,总算拥有了自己的博客了,以后我会经常在博客里分享一些JAVA的心得.
- HDOJ1071
The area 拿到题的第一想法,又是一道水题,知道P1.P2.P3三点的坐标,就能够确定抛物线的公式.确定抛物线的公式就能够进行积分,然后就没有然后了.纯粹的数学题. #include< ...
- Windows Server 2008R2 设置SMTP邮件转发服务
最近因业务需求在Windows Server 2008R2server上设置SMTP转发服务,主要是在业务审批过程中邮件通知相关人员审批情况, 1.在server上加入服务 2.打开服务 3.新建一个 ...