namespace 体验套餐管理系统
{//项目
public class Project
{
//保存项目的具体内容
public Project(string name, int price, string description)
{
this.proName = name;
this.Description = description;
this.proPrice = price;
}
public string Description { get; set; }
public string proName { get; set; }
public int proPrice { get; set; }
public Project()
{
}
}
}
namespace 体验套餐管理系统
{//套餐
public class Package
{
//保存所有项目(暂未使用)
public List<Project> Allproject;
//保存入学体检中的项目
public List<Project> project;
//构造函数(所有项目)
public Package(List<Project> items)
{
this.Allproject = items;
}
//构造函数(套餐名称和入学体检中的项目)
public Package(string name, List<Project> items)
{
this.pacName = name;
this.project = items;
}
public string pacName { get; set; }
public int pacPrice { get; set; }//套餐总和
//计算套餐总和
public void CalcPrice()
{
int totalPrice = 0;
foreach (Project item in project)
{
totalPrice += item.proPrice;
}
this.pacPrice = totalPrice;
}
}
}
namespace 体验套餐管理系统
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}
//初始化package,Project构造函数
Project height, weight, sight, gan, wei;
Package p1, p2, p3;
//临时保存所有的体检项目
List<Project> AllItems = new List<Project>();
//临时保存套餐中的体检项目
List<Project> items = new List<Project>();
//使用字典保存套餐集合
public Dictionary<string, Package> HealthSet = new Dictionary<string, Package>();
//保存新建套餐中的体检项目
List<Project> newitems = new List<Project>();
public void AddProject()
{
//向临时项目表(AllItems)添加所有的项目
gan = new Project("肝", 20, "检查肝");
wei = new Project("胃", 20, "检查胃");
weight = new Project("体重", 10, "检查体重.");
sight = new Project("视力", 10, "检查视力.");
height = new Project("身高", 10, "检查身高.");
AllItems.Add(height);
AllItems.Add(sight);
AllItems.Add(weight);
AllItems.Add(gan);
AllItems.Add(wei);
p2 = new Package(AllItems);
}
public void AddPackage()
{
//向临时项目表(items)加项目
items = new List<Project>();
items.Add(height);
items.Add(sight);
items.Add(weight);
//将临时项目表(items)传给package的project项目表
p1 = new Package("入学体检", items);
p1.CalcPrice();
//将(入学体检)和package的项目表绑定到Heathset集合
this.HealthSet.Add("入学体检", p1);
}
public void InitHealthSetList()
{
this.cbPackage.Items.Clear();
this.cbPackage.Items.Add("请选择");
//将所有项目的名称绑定到cbProject
foreach (Project item in AllItems)
{
this.cbProject.Items.Add(item.proName);
}
this.cbProject.SelectedIndex = 0;
//将所有套餐的名称绑定到cbPackage
foreach (string key in this.HealthSet.Keys)
{
this.cbPackage.Items.Add(key);
}
this.cbPackage.SelectedIndex = 0;
}
//进行刷新dataGridview的套餐集合
public void Update(Package p)
{
dataGridView1.DataSource = new BindingList<Project>(p.project);
}
// 窗口加载事件
private void Main_Load(object sender, EventArgs e)
{
AddProject();
AddPackage();
InitHealthSetList();
}
//套餐列表改变事件
private void cbPackage_SelectedIndexChanged(object sender, EventArgs e)
{
//判断套餐类别中选中的类型
string setName = this.cbPackage.Text;
if (setName == "请选择")
{
this.dataGridView1.DataSource = new BindingList<Project>();
this.lbPackageName.Text = "";
this.lbPackagePrice.Text = "";
return;
}
lbPackageName.Text = this.HealthSet[setName].pacName;
//设置套餐总价
lbPackagePrice.Text = this.HealthSet[setName].pacPrice.ToString();
//更新套餐检查项目
Update(HealthSet[setName]);
this.btDelete.Enabled = true;
}
//删除套餐中的项目
public void Delete()
{
string xiangmuName = "";
xiangmuName = this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
MessageBox.Show(xiangmuName);
//判断套餐列表选中的套餐
if (cbPackage.Text == "入学体检")
{
foreach (Project item in items)
{
if (item.proName == xiangmuName)
{
items.Remove(item);
break;
}
}
p1 = new Package(this.cbPackage.Text, items);
p1.CalcPrice();
this.lbPackagePrice.Text = p1.pacPrice.ToString();
this.dataGridView1.DataSource = new BindingList<Project>(items);
MessageBox.Show("Test");
}
else
{
foreach (Project item in newitems)
{
if (item.proName == xiangmuName)
{
newitems.Remove(item);
break;
}
}
p3.CalcPrice();
this.dataGridView1.DataSource = new BindingList<Project>(newitems);
this.lbPackagePrice.Text = p3.pacPrice.ToString();
}
}
//点击删除button事件
private void btDelete_Click(object sender, EventArgs e)
{
Delete();
}
//向套餐中添加新的项目
public void AddNewProject()
{
string projectName = "";
projectName = this.cbProject.Text;
MessageBox.Show(projectName);
foreach (Project item in AllItems)
{
if (item.proName == projectName)
{
//判断套餐列表选中的套餐
if (cbPackage.Text == "入学体检")
{
items.Add(item);
break;
}
else
{
newitems.Add(item);
break;
}
}
//判断套餐列表选中的套餐
} if (cbPackage.Text == "入学体检")
{
this.dataGridView1.DataSource = new BindingList<Project>(items);
p1 = new Package(this.cbPackage.Text, items);
p1.CalcPrice();
this.lbPackagePrice.Text = p1.pacPrice.ToString();
}
else
{
p3.CalcPrice();
this.dataGridView1.DataSource = new BindingList<Project>(newitems);
this.lbPackagePrice.Text = p3.pacPrice.ToString();
}
}
//点击添加项目事件
private void btAddProject_Click(object sender, EventArgs e)
{
AddNewProject();
}
//添加新套餐并将新套餐添加至套餐集合HeathSet中
public void AddNewPackage()
{
string NewPackage = "";
NewPackage = this.tbAdd.Text;
if (cbPackage.Items.ToString() == NewPackage)
{
Console.WriteLine("该套餐已存在");
}
this.tbAdd.Clear();
this.cbPackage.Items.Add(NewPackage);
p3 = new Package(NewPackage, newitems);
p3.CalcPrice();
HealthSet.Add(NewPackage, p3);
}
//点击添加套餐button事件
private void btAdd_Click(object sender, EventArgs e)
{
AddNewPackage();
}
}
}