项目需求:

一、语言和环境

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#编写街道管理系统的更多相关文章

  1. python 编写名字管理系统

    1 #打印功能提示 2 print('='*50) 3 print(' 名字管理系统 v1.1') 4 print('1.添加新的名字') 5 print('2.删除一个名字') 6 print('3 ...

  2. 桌面轻量级数据库的选择:Access、SQLite、自己编写?

    1. Access我们做小项目的时候特别是小的MIS系统一般也都要用数据库来保存数据.经观察大部分的小系统都是用Access数据库,有的系统为了掩盖数据库的类型,把数据文件后缀名改了,其实只要改回到m ...

  3. Objective-C中的类目,延展,协议

    Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词 ...

  4. Python---函数的相关知识点总结一:

    1:定义函数 def printInfo(): print("I love Python!") #调用函数 #注意:函数定义完毕并不会被默认执行,只能通过调用的方式来让它执行 pr ...

  5. Daily Scrumming* 2015.12.16(Day 8)

    一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1036 https://github.com/buaaclubs-team/temp-front/com ...

  6. 走 进 java 的 四 个 基 本 特 性

    赶上明天就还是五一c小长假了,准备在这几天写几篇原创文章,供大家一起学习. 首先今天就来好好地唠一唠,到底java的那几个特性都是什么呢?到底怎么用呢?相信一定有一些小白对此会有些懊恼,没关系的,谁还 ...

  7. JYadmin-react-antd react+antd封装的优秀后台模板集成方案("^1.0.0")

    版本:[ "JYadmin-react-antd": "^1.0.0"] 版权所有:微信公众号[微新悦] 原文链接:https://www.weixinyue. ...

  8. Java核心技术卷阅读随笔--第4章【对象与类】

    对 象 与 类 4.1 面向对象程序设计概述 面向对象程序设计(简称 OOP) 是当今主流的程序设计范型, 它已经取代了 20 世纪 70 年代的" 结构化" 过程化程序设计开发技 ...

  9. 从零开始编写自己的C#框架(8)——后台管理系统功能设计

    还是老规矩先吐下槽,在规范的开发过程中,这个时候应该是编写总体设计(概要设计)的时候,不过对于中小型项目来说,过于规范的遵守软件工程,编写太多文档也会拉长进度,一般会将它与详细设计合并到一起来处理,所 ...

随机推荐

  1. Sql 的 RAISERROR用法

    http://www.yesky.com/imagesnew/software/tsql/ts_ra-rz_5ooi.htm RAISERROR 返回用户定义的错误信息并设系统标志,记录发生错误.通过 ...

  2. C# 全选中数字文本框内容

    /// <summary>        /// 全选中数字文本框内容        /// </summary>        /// <param name=&quo ...

  3. IOC的总结

    今天趁着空闲总结一下自己IOC的一些理解,希望可以帮助到有需要的人,请大牛们多多指教. (一)IOC IOC就是控制反转,给程序解耦等等,有很多博客都对它做了一些很好的讲解.在这里我也不说太多文字,直 ...

  4. SegmentFault错误汇总

    在三个月的工作中,经常碰到SegmentFault的错误,有时候是因为计算集群问题导致,更多的时候是程序本身的问题,我计划将之后碰到的SegmentFault整合起来,一来方便日后查看,二来如果能帮助 ...

  5. JavaWeb一小时急速入门总结反思

    0.条件一个可以开发javaee的开发工具1.配置首先需要下载tomcat,用来跑javaweb的服务器,下载后自行百度配置.然后需要servlet.jar包,其实就是一个java网络层api包2.基 ...

  6. k8s 核心功能 - 每天5分钟玩转 Docker 容器技术(116)

    本节带领大家快速体验 k8s 的核心功能:应用部署.访问.Scale Up/Down 以及滚动更新. 部署应用 执行命令: kubectl run kubernetes-bootcamp \ --im ...

  7. Linux : screen 工具详解

    转自:http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html [ Screen 官方站点 ] 背景 系统管理员经常需要SSH 或者t ...

  8. MySQL优化四 索引优化

    索引为什么能提高数据访问性能? 很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以用一个生活中的示例来理解. 我们让一位不太懂计算机的朋友去图书馆确认一本叫做<MySQL ...

  9. Hibernate学习笔记(5)---Query接口

    Hibernate中具有三种检索方式(HQL,QBC,SQL) Query接口 一个查询接口,用于向数据库中查询对象.并控制执行查询的过程.Query接口内封装了一个HQL查询语句. 举个栗子 //查 ...

  10. 强化学习之Q-learning ^_^

    许久没有更新重新拾起,献于小白 这次介绍的是强化学习 Q-learning,Q-learning也是离线学习的一种 关于Q-learning的算法详情看 传送门 下文中我们会用openai gym来做 ...