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. react-native 项目实战 -- 新闻客户端(7) -- 新闻详情页

    http://c.3g.163.com/nc/article/BUH64L0J00031H2L/full.html 观察这个地址,BUH64L0J00031H2L 就是每条新闻数据里的postid.  ...

  2. PLSQL Developer设置及快捷键设置

    1.登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需 ...

  3. const readonly

    静态常量(compile-time constants)静态常量是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值. 动态常量(runtime constants)而动态常量的值则 ...

  4. asp.net core mvc视频A:笔记3-5.视图数据共享之TempData

    前几节讲的都是单页面数据共享,从本节开始讲跨页面数据共享 创建项目3.5,新建控制器 代码 控制器 设置TempData 另一个视图中读取TempData数据 运行 此时如果刷新页面,页面中的内容“张 ...

  5. Windows2008RC2 IIS配置php执行环境

    1:下载一个php manager,安装.打开IIS管理器后,点击计算机,就能够看到右边PHPManager 静静地躺在那儿了.双击PHPManager    后我们就能够開始对PHP进行配置了. 2 ...

  6. Theme.AppCompat.Light无法找到问题

    使用adt开发新建一个Android app.选择支持的SDK版本号假设小于11(Android3.0)就会报例如以下错误. error: Error retrieving parent for it ...

  7. iOS开发 - 第05篇 - 项目 - 12 - 图文混排

    1.首页微博文字处理 对于之前微博项目中首页:微博文字中的用户名.话题.链接等文字须要高亮显示.表情字符串须要显示相应表情. 思路: 1>之前微博中的文字使用NSString,要达到不同文字的高 ...

  8. python .py .pyc .pyw .pyo .pyd区别

    .py 文件 以 .py 作扩展名的文件是 Python 源代码文件,由 python.exe 解释,可在控制台下运行.当然,也可用文本编辑器进行修改. .pyc 文件 以 .pyc 作扩展名的文件是 ...

  9. 在oracle11g中配置多个DataGuard物理备机

    >> from zhuhaiqing.info 主机配置 alter system set DB_UNIQUE_NAME='starboss' scope=spfile; alter sy ...

  10. instantclient_11_2 连接oracle数据

    (1)首先你要先下载instantclient (解压如下),修改你     instantclient/network/admin/tnsnames.ora 文件,将你oracle的服务器地址写上 ...