Packages.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Examination
{
public class Packages
{
public string Name
{
get;
set;
} public Dictionary<string, Module> Items
{
get;
set;
} public double Price
{
get
{
return Get_Price();
}
} public Packages()
{
Items = new Dictionary<string, Module>();
} public Packages(string n,Dictionary<string,Module> it)
{
Name = n;
Items = it;
} public double Get_Price()
{
double result = ;
if (Items.Count > )
{
foreach(Module mo in Items.Values)
{
result += mo.Price;
} }
return result;
} }
}

Module.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Examination
{
public class Module
{ public string Name
{
get;
set;
} public double Price
{
get;
set;
} public string Remark
{
get;
set;
} public Module()
{ } public Module(string n, double p, string r)
{
Name = n;
Price = p;
Remark = r;
}
}
}

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 Examination
{
public partial class Form1 : Form
{
Module m1, m2, m3, m4, m5, m6, m7, m8;
Packages p1, p2, p3;
Dictionary<string, Module> AllModule;
Dictionary<string, Packages> AllPackages; public Form1()
{
InitializeComponent();
} private void InitDisplay()
{
m1 = new Module("Arduino UNO R3",,"核心板");
m2 = new Module("Arduino面包板",,"做试验用");
m3 = new Module("Arduino面包板线",,"做试验用"); m4 = new Module("16*16点阵模块", , "能显示单个汉字的点阵模块");
m5 = new Module("LCD12864模块", , "大液晶"); m6 = new Module("GPS模块", , "采用ublox模块");
m7 = new Module("SIM900A模块", , "采用SIM900A模块"); AllModule = new Dictionary<string, Module>();
AllModule.Add(m1.Name, m1);
AllModule.Add(m2.Name, m2);
AllModule.Add(m3.Name, m3);
AllModule.Add(m4.Name, m4);
AllModule.Add(m5.Name, m5);
AllModule.Add(m6.Name, m6);
AllModule.Add(m7.Name, m7); Dictionary<string, Module> P1_Module = new Dictionary<string, Module>();
P1_Module.Add(m1.Name, m1);
P1_Module.Add(m2.Name, m2);
P1_Module.Add(m3.Name, m3);
p1 = new Packages("基础版",P1_Module); Dictionary<string, Module> P2_Module = new Dictionary<string, Module>();
P2_Module.Add(m1.Name, m1);
P2_Module.Add(m2.Name, m2);
P2_Module.Add(m3.Name, m3);
P2_Module.Add(m4.Name, m4);
P2_Module.Add(m5.Name, m5);
p2 = new Packages("提高版", P2_Module); Dictionary<string, Module> P3_Module = new Dictionary<string, Module>();
P3_Module.Add(m1.Name, m1);
P3_Module.Add(m2.Name, m2);
P3_Module.Add(m3.Name, m3);
P3_Module.Add(m4.Name, m4);
P3_Module.Add(m5.Name, m5);
P3_Module.Add(m6.Name, m6);
P3_Module.Add(m7.Name, m7);
p3 = new Packages("至尊版", P3_Module); AllPackages = new Dictionary<string, Packages>();
AllPackages.Add(p1.Name, p1);
AllPackages.Add(p2.Name, p2);
AllPackages.Add(p3.Name, p3);
} private void Form1_Load(object sender, EventArgs e)
{
InitDisplay();
cb_taocan.Text = "请选择套餐";
foreach(Packages pk in AllPackages.Values)
{
cb_taocan.Items.Add(pk.Name);
} ListViewItem lvi;
foreach (Module md in AllModule.Values)
{
clb1.Items.Add(md.Name);
} } private void cb_taocan_SelectedIndexChanged(object sender, EventArgs e)
{
if (cb_taocan.Text == p1.Name)
{
DisplayPackage(p1);
}
else if (cb_taocan.Text == p2.Name)
{
DisplayPackage(p2);
}
else if (cb_taocan.Text == p3.Name)
{
DisplayPackage(p3);
}
} private void DisplayPackage(Packages p)
{
lv1.Items.Clear();
ListViewItem lvi;
foreach(Module m in p.Items.Values)
{
lvi = new ListViewItem(m.Name);
lvi.SubItems.Add(m.Price.ToString());
lvi.SubItems.Add(m.Remark); lv1.Items.Add(lvi);
}
lbl_name.Text = p.Name;
lbl_price.Text = p.Price.ToString();
} private void button1_Click(object sender, EventArgs e)
{
if (cb_taocan.Text != "请选择套餐" && clb1.CheckedItems.Count > )
{
Packages pa;
for (int i = ; i < clb1.CheckedItems.Count; i++)
{
pa = AllPackages[cb_taocan.Text];
Module md = AllModule[clb1.CheckedItems[i].ToString()]; if (!pa.Items.ContainsValue(md))
{
pa.Items.Add(md.Name, md);
DisplayPackage(pa);
}
else
{
MessageBox.Show(md.Name + "已经存在了哦!");
} }
}
else
{
MessageBox.Show("别想糊弄我!你就没选择套餐/模块 --!");
}
} private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if(checkBox1.Checked)
{
for (int i = ; i < clb1.Items.Count; i++)
{
clb1.SetItemChecked(i, true);
}
}
else
{
for (int i = ; i < clb1.Items.Count; i++)
{
clb1.SetItemChecked(i, false);
}
}
} private void button2_Click(object sender, EventArgs e)
{ if (lv1.SelectedItems.Count > )
{
Packages pa = AllPackages[cb_taocan.Text]; foreach (ListViewItem lvi in lv1.SelectedItems)
{
Module md = pa.Items[lvi.Text]; if (pa.Items.ContainsValue(md))
{
pa.Items.Remove(md.Name);
}
}
DisplayPackage(pa);
}
else
{
MessageBox.Show("啥都没选,移除毛线啊!");
} }
}
}

显示效果

C#自己写的第一个小程序,庆祝一下的更多相关文章

  1. Maven的第一个小程序

    这里是介绍关于maven的第一个小程序 关于maven的安装 : Install Maven in your computer 先看看目录结构: 这是本来的项目目录结构,由于maven有自己的目录结构 ...

  2. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  3. 微信小程序-----安装,编写第一个小程序和运行到手机端

    第一步: 微信公众平台注册账号,并选择小程序,网址:mp.weixin.qq.com 填写相关信息,如:主体类型(个人或者企业) AppID  在开发中都是用的到的,服务器域名在网络请求也是用的到的. ...

  4. Struts2学习笔记——Struts2搭建和第一个小程序

    1.新建web项目 2.配置Struts2核心过滤器 (1)打开web.xml文件,做以下配置: <?xml version="1.0" encoding="UTF ...

  5. 自学Android的第一个小程序(小布局、button点击事件、toast弹出)

    因为上班,学习时间有限,昨晚才根据教程写了一个小程序,今天忙里偷闲写一下如何实现的,来加深一下印象. 首先创建一个Android项目, 通过activity_xxx.xml布局文件来添加组件来达到自己 ...

  6. Python3的tkinter写一个简单的小程序

    一.这个学期开始学习python,但是看了python2和python3,最后还是选择了python3 本着熟悉python的原因,并且也想做一些小程序来增加自己对python的熟练度.所以写了一个简 ...

  7. C++写一个排列组合小程序

    今天突然想到一个问题,有时候,针对同一个事件有多种反映,特别是游戏AI当中,这种情况下需要采取最适合的方案,哪种方案最适合,可以将每种方案的结果或影响都计算一遍,从而选择最合适的.最基本就是一个排列组 ...

  8. 人人都可以写的可视化Python小程序第二篇:旋转的烟花

    兴趣是最好的老师 枯燥的编程容易让人放弃,兴趣才是最好的老师.无论孩子还是大人,只有发现这件事情真的有趣,我们才会非常执着的去做这件事,比如打游戏.如果编程能像玩游戏一样变得有趣,我相信很多人就特别愿 ...

  9. 动手搭建第一个小程序音视频Demo

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:小程序音视频产品经理 腾讯云提供了全套技术文档和源码来帮助您快速构建一个音视频小程序,但是再好的源码和文档也有学习成本,为了尽快的能调试起 ...

随机推荐

  1. BZOJ 1012 线段树||单调队列

    非常裸的线段树  || 单调队列: 假设一个节点在队列中既没有时间优势(早点入队)也没有值优势(值更大),那么显然不管在如何的情况下都不会被选为最大值. 既然它仅仅在末尾选.那么自然能够满足以上的条件 ...

  2. 数据存储之iOS断点续传

    iOS里面实现断点续传 第三方框架之AFN 代码实现 一.iOS里面实现断点续传 1⃣️AFN基于NSURL 1.性能和稳定性略差.针对JSON.XML.Plist和Image四种数据结构封装了各自处 ...

  3. mariadb在线热备份做主从

    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noar ...

  4. Selenium3.X 与 Javascript (Nodejs)

    传送门 # 官网网站 http://docs.seleniumhq.org/download/ # API DOC http://goo.gl/hohAut # 慕课网教程http://www.imo ...

  5. IOS开发——Core Graphics &amp; Core Animation

    好久没写过blog了.首先了解下近期苹果和IOS方面的最新消息. 1.WWDC2014在上个月举行了,与2013年一样.今年WWDC没公布硬件产品和新品(假设你懂cook你就会期待今年秋季公布会.估计 ...

  6. poj 2762 Going from u to v or from v to u?(强连通、缩点、拓扑)

    题意:(理解错了)在一个洞穴中有多个room,要求任意选两个room:u.v,都能保证u.v之间有通路,注意洞穴中的路是有向边.. 分析:强连通子图中的点必然两两之间可以互通,两个强连通子图之间有通路 ...

  7. Hdu 5288 OO’s Sequence 2015多小联赛A题

    OO's Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  8. 自定义一个更好用的SwipeRefreshLayout(弹力拉伸效果详解)(转载)

    转自: 自定义一个更好用的SwipeRefreshLayout(弹力拉伸效果详解) 前言 熟悉SwipeRefreshLayout的同学一定知道,SwipeRefreshLayout是android里 ...

  9. Android中应用安装分析

    #1 安装方式 1 安装系统APK和预制APK时,通过PMS的构造函数中安装,即第一次开机时安装应用,没有安装界面. 2 网络下载安装,通过应用商店等,即调用PackageManager.instal ...

  10. 多媒体开发之---H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流

    一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1  MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象 ...