Book.cs文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections; namespace Booklist
{
public class Book
{
/// <summary>
/// 作者
/// </summary>
public string Author
{
get;
set;
} /// <summary>
/// ISBN
/// </summary>
public string Isbn
{
get;
set;
} /// <summary>
/// 书名
/// </summary>
public string Name
{
get;
set;
} /// <summary>
/// 价格
/// </summary>
public double Price
{
get;
set;
} /// <summary>
/// 重载构造函数
/// </summary>
public Book()
{ } /// <summary>
/// 带参数的构造函数
/// </summary>
/// <param name="n">名称</param>
/// <param name="s">ISDN</param>
/// <param name="p">价格</param>
/// <param name="a">作者</param>
public Book(string n, string s, double p, string a)
{
Name = n;
Isbn = s;
Price = p;
Author = a;
}
} public class Store
{
private ArrayList booklist; /// <summary>
/// 图书列表
/// </summary>
public Store()
{
booklist = new ArrayList();
} /// <summary>
/// 获取图书列表
/// </summary>
public ArrayList Booklist
{
get
{
return booklist;
}
set
{
booklist = value;
}
} /// <summary>
/// 从仓库中获取指定书名的书籍
/// </summary>
/// <param name="name">名称</param>
/// <returns>书的信息</returns>
public Book GetBook(string name)
{
Book book = new Book();
foreach(Book b in booklist)
{
if (b.Name == name)
{
book = b;
}
} return book;
} /// <summary>
/// 判断指定书名的书籍是否存在
/// </summary>
/// <param name="n">书名</param>
/// <returns>存在返回true</returns>
public bool Exists(string n)
{
bool s = false;
foreach (Book b in booklist)
{
if (b.Name == n)
{
s = true;
}
}
return s;
} /// <summary>
/// 从列表中增加一个图书
/// </summary>
/// <param name="b">书的对象</param>
/// <returns>列表</returns>
public ArrayList AddBook(Book b)
{
booklist.Add(b);
return booklist;
} /// <summary>
/// 移除指定名称的图书
/// </summary>
/// <param name="b">要移除的图书名称</param>
/// <returns>处理的结果</returns>
public ArrayList Remove(Book b)
{
if (booklist.Contains(b))
booklist.Remove(b);
return booklist;
} /// <summary>
/// 移除指定书名的图书
/// </summary>
/// <param name="n">书名</param>
/// <returns>处理后的结果</returns>
public ArrayList Remove(string n)
{
ArrayList temp = (ArrayList)booklist.Clone(); foreach (Book b in temp)
{
if (b.Name == n)
{
booklist.Remove(b);
}
}
return booklist;
} }
}

form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace Booklist
{
public partial class Form1 : Form
{
Store st; //声明一个仓库的全局变量,作为数据存储的变量
public Form1()
{
InitializeComponent(); Book b = new Book("神秘藏宝室开发板套件基础版","1122-334",134d,"小白");
Book b1 = new Book("神秘藏宝室开发板套件提高版", "1122-335", 134d, "小白");
Book b2 = new Book("神秘藏宝室开发板套件至尊版", "1122-336", 134d, "小白"); st = new Store(); st.AddBook(b);
st.AddBook(b1);
st.AddBook(b2); Bind();
} /// <summary>
/// 填充数据
/// </summary>
private void Bind()
{
cb_list.Items.Clear(); //清空下拉列表
cb_list.Text = "请选择一本书"; //显示一个默认值
foreach(Book b in st.Booklist)
{
cb_list.Items.Add(b.Name);
}
lb_output.Text = "当前仓库中共计" + st.Booklist.Count.ToString() + "本书";
} private void button1_Click(object sender, EventArgs e)
{
//出库
if (st.Exists(cb_list.Text))
{
st.Remove(cb_list.Text);
cb_list.Text = "删除成功";
tb_name.Text = "";
tb_isdn.Text = "";
tb_price.Text = "";
tb_author.Text = "";
} Bind(); //重新填充数据
} private void button2_Click(object sender, EventArgs e)
{
if (st.Exists(cb_list.Text))
{
Book b = st.GetBook(cb_list.Text);
lb_output.Text = string.Format("书名:{0},\n作者:{1},\n价格:{2},\nISBN:{3}", b.Name, b.Author, b.Price, b.Isbn);
}
else
{
lb_output.Text = "不存在的书籍";
}
} private void button3_Click(object sender, EventArgs e)
{
if (tb_name.Text != "" && tb_author.Text != "" && tb_price.Text != "" && tb_isdn.Text != "")
{
Book b = new Book(
tb_name.Text,
tb_isdn.Text,
double.Parse(tb_price.Text),
tb_author.Text
);
st.AddBook(b);
Bind();
}
} private void cb_list_SelectedIndexChanged(object sender, EventArgs e)
{
Book b = st.GetBook(cb_list.Text);
tb_name.Text = b.Name;
tb_isdn.Text = b.Isbn;
tb_price.Text = b.Price.ToString();
tb_author.Text = b.Author;
}
}
}

winform界面

最终运行界面:

C#编写图书列表winform的更多相关文章

  1. Django(五)1 - 4章实战:从数据库读取图书列表并渲染出来、通过url传参urls.py path,re_path通过url传参设置、模板语法

    一.从数据库读取图书数据并渲染出来 1)app1/views.py函数books编写 [1]从模型下导入bookinfo信息 [2]从数据库获取图书对象列表 [3]把获取到的图书对象赋值给books键 ...

  2. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  3. Vue+koa2开发一款全栈小程序(8.图书列表页)

    1.图书列表页获取数据 1.在server/routes/index.js中新增路由 router.get('/booklist',controllers.booklist) 2.在server/co ...

  4. 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(4) - 图书列表界面

    在前三章中我们完成了登录窗口, 并掌握了使用Conductor来切换窗口, 但这些其实都是在为我们的系统打基础. 而本章中我们就要开始开发系统的核心功能, 即图书管理功能了. 通过本章, 我们会接触到 ...

  5. [ABP教程]第二章 图书列表页面

    Web应用程序开发教程 - 第二章: 图书列表页面 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开 ...

  6. 全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

    通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看 ...

  7. 微信小程序之小豆瓣图书

    最近微信小程序被炒得很火热,本人也抱着试一试的态度下载了微信web开发者工具,开发工具比较简洁,功能相对比较少,个性化设置也没有.了解完开发工具之后,顺便看了一下小程序的官方开发文档,大概了解了小程序 ...

  8. php大力力 [016节] 兄弟连高洛峰php教程(2014年 14章数据库章节列表)

    2015-08-25 php大力力016 兄弟连高洛峰php教程(2014年 14章数据库章节列表) [2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库  15:58 [2014]兄弟连高洛 ...

  9. XML DOM 循环(foreach)读取PHP数据 和 PHP 编写 XML DOM 【转载】

    用 PHP 读取和编写可扩展标记语言(XML)看起来可能有点恐怖.实际上,XML 和它的所有相关技术可能是恐怖的,但是用 PHP 读取和编写 XML 不一定是项恐怖的任务.首先,需要学习一点关于 XM ...

随机推荐

  1. Linux管理员必须知道的sudo命令

    "Sudo"是Unix/Linux平台上的一个很实用的工具,它同意系统管理员分配给普通用户一些合理的"权利",让他们执行一些仅仅有超级用户或其它 特许用户才干完 ...

  2. 2B01-View-Switcher

    Gallery和swithcer联合使用 /* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the ...

  3. SGDMA-----Scatter-gather DMA

    Scatter-gather DMA 使用一个链表描述物理上不连续的存储空间,然后把链表首地址告诉DMA master.DMA master在传输完一块物理连续的数据后,不用发起中断,而是根据链表来传 ...

  4. C++程序设计(第4版)读书笔记_C++概览:基础知识

    变量赋值 常用的变量赋值都是用“=”去赋值的 ; 但是如果把一个浮点数赋值给i的话,就会造成精度损失,在C++中最好使用初始化列表的方式“{}”给变量赋值,这样可以保证不会发生某些可能导致信息丢失的类 ...

  5. html 标签 链接

    <a href="http://www.baidu.com">百度</a> <a href="#here">here< ...

  6. linux用户密码生成

    linux账户保存在/etc/passwd,密码保存在/etc/shadow. 通过man 5 passwd,man 5 shadow可查看文件中各字段含义. encrypted password   ...

  7. go开启多进程——拆分多个进程同时处理(分而治之)

    使用了goroutine实现了多线程,使用chan来控制多线程. runtime.GOMAXPROCS(3)来设置最大的原生线程. runtime.Gosched() 显式地让出CPU时间给其他gor ...

  8. 第一百九十六节,jQuery EasyUI,Tooltip(提示框)组件

    jQuery EasyUI,Tooltip(提示框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Tooltip(提示框)组件的使用方法, ...

  9. python 爬虫3 异常处理

    1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的服务器 服务器不存在 在代码中,我们需要用try-except语句来包围并捕获相应的异常.下 ...

  10. hdu5334(2015多校4)--Virtual Participation(构造)

    题目链接:pid=5334">点击打开链接 题目大意:给出一个数字k,要求做出一个长度小于等于10^5的序列.该序列中不同样的连续子序列有k个. 构造啊,.,,,,一点辙都没有 使用连 ...