C#编写街道管理系统
|
项目需求: 一、语言和环境 |
|
|
A、实现语言 |
|
|
C# |
|
|
B、环境要求 |
|
|
Visual Studio 2012 二、功能要求 现使用.NET WinForms技术为居委会开发一个街道管理软件,其中街道管理窗体界面如图-4所示。
要求: 1、读取提供的XML文件(详见 \提供给学员的素材\Address.xml),将其信息动态添加到TreeView控件中。 2、创建表示地址信息的实体类,并使用泛型集合保存XML文件中的信息。 3、选中某子节点,能够将相关信息显示到右侧的文本框中,如图-4所示。 4、窗体标题为“街道管理”。 |
|
XML文件:
<?xml version="1.0" encoding="gb2312"?>
<root name="石牌街道">
<juwei name="瑞华居委">
<jianzhu smid="6" name="瑞华花园1栋">
<fjname>101室</fjname>
<fjname>102室</fjname>
</jianzhu>
<jianzhu smid="7" name="瑞华花园2栋">
<fjname>101室</fjname>
<fjname>102室</fjname>
</jianzhu>
</juwei>
<juwei name="金帝居委">
<jianzhu smid="4" name="金帝花园1栋">
<fjname>101室</fjname>
<fjname>102室</fjname>
</jianzhu>
</juwei>
<juwei name="朝阳居委">
<jianzhu smid="5" name="朝阳花园1栋">
<fjname>101室</fjname>
<fjname>102室</fjname>
</jianzhu>
</juwei>
</root>
项目类图:

存储街道数据类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Street_Management_System
{
public class Street
{
public Street()
{
}
public Street(string streets, string jwh, string dong, string s)
{
Streets = streets;
Jwh = jwh;
Dong = dong;
S = s;
}
//街道
public string Streets { get; set; }
//居委会
public string Jwh { get; set; }
//楼房(栋)
public string Dong { get; set; }
//厅室
public string S { get; set; }
}
}
读取XML类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace Street_Management_System
{
public class ReadXML
{
public ReadXML()
{
dic = new Dictionary<string, Street>();
}
public ReadXML(Dictionary<string, Street> dic)
{
this.dic = dic;
}
//存储xml文件的双列集合
public Dictionary<string, Street> dic { get; set; }
public Dictionary<string, Street> Read()
{
XmlDocument doc = new XmlDocument();
/*
* 读取xml文件
* */
doc.Load("Address.xml");
//获取xml文件的根节点
XmlNode xml = doc.DocumentElement;
/*
* 解析xml文件的各个接点并存入集合
* */
foreach (XmlNode item in xml.ChildNodes)
{
string street = item.ParentNode.Attributes["name"].InnerText;
string jwh = item.Attributes["name"].InnerText;
string dong = null;
string s = null;
foreach (XmlNode items in item.ChildNodes)
{
dong = items.Attributes["name"].InnerText;
foreach (XmlNode itemss in items.ChildNodes)
{
s = itemss.InnerText;
Street aaa = new Street(street,jwh,dong,s);
dic.Add(dong+"|"+s,aaa);
}
}
}
return dic;
}
}
}
主窗体类:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Street_Management_System
{
public partial class 街道管理系统 : Form
{
public 街道管理系统()
{
InitializeComponent();
}
public Dictionary<string, Street> dic = new Dictionary<string, Street>();
private void Form1_Load(object sender, EventArgs e)
{
AddTree();
}
/*
* 接收ReadXML类中存储xml信息的集合
* */
public void AddTree()
{
ReadXML xml = new ReadXML();
dic = xml.Read();
string street = null;
string jwh = null;
string dong = null;
TreeNode sTree = null;
TreeNode streetTree = null;
TreeNode jwhTree = null;
TreeNode dongTree = null;
/*
*拆解集合中的数据并赋值到TreeView控件的相应接点中
* */
foreach (KeyValuePair<string, Street> item in dic)
{
if (street != item.Value.Streets)
{
streetTree = new TreeNode();
streetTree.Text = item.Value.Streets;
tvStreet.Nodes.Add(streetTree);
}
if (jwh != item.Value.Jwh)
{
jwhTree = new TreeNode();
jwhTree.Text = item.Value.Jwh;
streetTree.Nodes.Add(jwhTree);
}
if (dong != item.Value.Dong)
{
dongTree = new TreeNode();
dongTree.Text = item.Value.Dong;
jwhTree.Nodes.Add(dongTree);
}
sTree = new TreeNode();
sTree.Text = item.Value.S;
sTree.Tag = item.Key;
dongTree.Nodes.Add(sTree);
street = item.Value.Streets;
jwh = item.Value.Jwh;
dong = item.Value.Dong;
}
}
private void tvStreet_AfterSelect(object sender, TreeViewEventArgs e)
{
/*
* 当点击节点时,读取选中节点的信息赋值到文本框中显示
* */
)
{
textBox1.Text = tvStreet.SelectedNode.Text;
}
)
{
textBox2.Text = tvStreet.SelectedNode.Text;
}
)
{
textBox3.Text = tvStreet.SelectedNode.Text;
}
)
{
textBox4.Text = tvStreet.SelectedNode.Text;
}
}
}
}
C#编写街道管理系统的更多相关文章
- python 编写名字管理系统
1 #打印功能提示 2 print('='*50) 3 print(' 名字管理系统 v1.1') 4 print('1.添加新的名字') 5 print('2.删除一个名字') 6 print('3 ...
- 桌面轻量级数据库的选择:Access、SQLite、自己编写?
1. Access我们做小项目的时候特别是小的MIS系统一般也都要用数据库来保存数据.经观察大部分的小系统都是用Access数据库,有的系统为了掩盖数据库的类型,把数据文件后缀名改了,其实只要改回到m ...
- Objective-C中的类目,延展,协议
Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词 ...
- Python---函数的相关知识点总结一:
1:定义函数 def printInfo(): print("I love Python!") #调用函数 #注意:函数定义完毕并不会被默认执行,只能通过调用的方式来让它执行 pr ...
- Daily Scrumming* 2015.12.16(Day 8)
一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1036 https://github.com/buaaclubs-team/temp-front/com ...
- 走 进 java 的 四 个 基 本 特 性
赶上明天就还是五一c小长假了,准备在这几天写几篇原创文章,供大家一起学习. 首先今天就来好好地唠一唠,到底java的那几个特性都是什么呢?到底怎么用呢?相信一定有一些小白对此会有些懊恼,没关系的,谁还 ...
- JYadmin-react-antd react+antd封装的优秀后台模板集成方案("^1.0.0")
版本:[ "JYadmin-react-antd": "^1.0.0"] 版权所有:微信公众号[微新悦] 原文链接:https://www.weixinyue. ...
- Java核心技术卷阅读随笔--第4章【对象与类】
对 象 与 类 4.1 面向对象程序设计概述 面向对象程序设计(简称 OOP) 是当今主流的程序设计范型, 它已经取代了 20 世纪 70 年代的" 结构化" 过程化程序设计开发技 ...
- 从零开始编写自己的C#框架(8)——后台管理系统功能设计
还是老规矩先吐下槽,在规范的开发过程中,这个时候应该是编写总体设计(概要设计)的时候,不过对于中小型项目来说,过于规范的遵守软件工程,编写太多文档也会拉长进度,一般会将它与详细设计合并到一起来处理,所 ...
随机推荐
- copy&deepcopy
import copy 字典参照列表结论,看是否有深层嵌套. a = {'name':1,'age':2} b = a a['name'] = 'ff' print(a) print(b) print ...
- MySQL 优化实施方案
1.1 前言 在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已.更多关于MySQL查询相关参照 ...
- 快速开发基于 HTML5 网络拓扑图应用--入门篇(一)
计算机网络的拓扑结构是引用拓扑学中研究与大小,形状无关的点.线关系的方法.把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构.网络的拓扑结构 ...
- Java使用RSA加密算法对内容进行加密
什么是RSA加密算法 RSA是一种典型的非对称性加密算法,具体介绍可参考阮一峰的日志 RSA算法原理 下面是使用RSA算法对传输内容进行加密的一个简要Java案例,主要用到了三个类,大体实现如下: 对 ...
- python键盘读入的input方法
今天了解了一下python,学了一些小东西,便存下了: input函数(raw_input在3.0版本没有,所以就不说了!) num = input ("输入一个数:") |备注 ...
- 地址总线、数据总线、寻址能力、字长及cpu位数等概念之间的关系
地址总线决定了CPU的寻址能力:数据总线的宽度与字长及CPU位数一致. 详细解释见下文: 1.地址总线与寻址能力 要存取数据或指令就要知道数据或指令存放的位置,地址寄存器存储的就是CPU当前要存取的数 ...
- 自学Aruba1.4-WLAN厂家魔力象限
点击返回:自学Aruba之路 1.4 自学Aruba1.4-WLAN厂家魔力象限 以下为2017<有线和无线局域网接入基础设施的魔力象限>报告: Aruba.cisco为无线领域 ...
- IO多路复用
1.事件驱动模型 上一篇写的协程仅仅是切换,本身不能实现并发,什么时候切换也不知道 那么什么时候切回去呢?怎么确定IO操作完了?通过回调函数 对于事件驱动型程序模型,它的流程大致如下: 开始---& ...
- python 浅析类方法与静态方法
类方法,静态方法的定义 Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即 ...
- 【转载】LINUX上MYSQL优化三板斧
现在MySQL运行的大部分环境都是在Linux上的,如何在Linux操作系统上根据MySQL进行优化,我们这里给出一些通用简单的策略.这些方法都有助于改进MySQL的性能. 闲话少说,进入正题. 一. ...
