哥们傲剑官网你邮箱多少请教一下啊! 现在我JS正在提深当中

站内网址搜索
-按站名搜索-
-按网址搜索-
【昆明鬼手纹身】
网站分类:
网站名称:
网站地址:
网站简介:
鬼手纹身是昆明最早的专业纹身店之一,昆明鬼手纹身创始人――张涛,从业10多年,鬼手纹身不懈努力和对艺术的执着追求,现日益发展壮大,在纹身行业中具有极高的信誉和知名度.鬼手主要是以艺术纹身,人体穿刺,纹身培训,昆明纹身,云南纹身,昆明刺青,纹身器材销售为一体的专业纹身机构.鬼手有最好的经营理念,工作学习环境,有最新,最好的产品,有最优秀的纹身师,最难得的是我们鬼手术有一颗至诚至信的心;有对得起你我的良心,对顾客我们会尽最大的努力,发挥最好的水平;对学员我们会毫无保留的把我们的技术经验,经营理念传授给每一个学员,同时也希望并欢迎 志同道合的朋友加入到我们鬼手纹身来,共同发展,共同打拼!
站长邮箱:
站长QQ:
本站域名:
< 在线导航吧>
收录查询:
统计数据:30分入:0 今日入:0 昨日入:0 总入:0 总出:122 点入时间: 8:24:19
广告推广:
广告推广:
广告联系QQ:
【最新来访网站】
?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&
【相关点出网站】
?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&?&
免责声明:在线导航吧所展示的网站资料、数据、广告等均来自互联网,仅供大家参考。在线导航吧对可能产生的好坏结果均不承担任何责任。
Copyright&
All Right Reserved
强烈建议使用 IE5.0 以上浏览器 分辨率
网址页自动生成哥们,你好,我在网上找到一段JS代码可以读取excel数据,有些地方不懂问一下您_百度知道  本人才疏学浅,望大家多给意见,有更好的做法大加分享分享
下面是题目:
  已知表table_department中有两个字段,分别为d_id,d_name。d_id记录的是部门编码, d_name记录的是部门名称,各部门的组织方式如下:A为顶级部门,A部门的下级部门使用AA、BA、CA&&表示AA的下级部门使用AAA、BAA、CAA&&表示BA的夏季部门使用ABA、BBA、CBA&&表示以此类推。新建一个应用程序,写一个页面或窗体,讲table_department表中的数据,按树状排列显示,如下所示:A总经办-AA生产部--AAA保修部--BAA非保部-BA物流部--ABA物流一部--BBA物流二部--CBA物流三部-CA市场部--ACA市场拓展--BCA营销部---ABCA电器营销部---BBCA电子营销部&&&&&&&&
表table_department用XML实现
===================================================
这个问题我觉得会有比较多的解法,我这里暂且考虑面试的问题,所以给出的解法不会考虑太多严谨的东西首先建库建表添加数据
SQL脚本为=================================================
1 -- 创建数据库
2 if db_id('testdb') is not null
drop database
5 create database
7 -- 使用数据库
9 --创建数据表
10 if object_id('table_department', 'U') is null
11 create table table_department
d_id varchar(10),
d_name nvarchar(50)
17 -- 添加数据
18 insert into table_department(d_id, d_name) values('A', '总经办');
19 insert into table_department(d_id, d_name) values('AA', '生产部');
20 insert into table_department(d_id, d_name) values('BA', '物流部');
21 insert into table_department(d_id, d_name) values('CA', '市场部');
22 insert into table_department(d_id, d_name) values('AAA', '保修部');
23 insert into table_department(d_id, d_name) values('BAA', '非保部');
24 insert into table_department(d_id, d_name) values('ABA', '物流一部');
25 insert into table_department(d_id, d_name) values('BBA', '物流二部');
26 insert into table_department(d_id, d_name) values('CBA', '物流三部');
27 insert into table_department(d_id, d_name) values('ACA', '市场拓展');
28 insert into table_department(d_id, d_name) values('BCA', '经营部');
29 insert into table_department(d_id, d_name) values('ABCA', '电器经营部');
30 insert into table_department(d_id, d_name) values('BBCA', '电子经营部');
========================================
第一种解法
  也是最简单傻瓜式的解法,使用ADO.Net读取数据. 并将读到的数据,根据d_id字段的数据创建TreeView节点,并加载数据
  观察树节点的规律,每个节点只有d_id的现实,只有最后一个节点现实完整的d_id和d_name,并且每个d_id的字符表示一个层次结构
  因此可以写一个方法,根据包含d_id和d_name的字符串创建节点和添加数据
简单步骤:
1、 首先该方法要往TreeView添加数据,因此该方法一定要有一个TreeNode参数(鉴于根节点只有一个,可以将A添加为根节点,或直接就将"公司"作为根节点) 2、 观察d_id的字符串,根节点在最右边,子节点在左边(估计是为了故意设计的面试题,这样不好排序)
实际这个很简单,将d_id字符串转换成字符数组,从后往左遍历,并在TreeNode中创建节点,如果节点存在就不用创建 3、 因此方法原型可以定义为:
1 private void ShowFromString(string d_id, string id, string d_name, TreeNode tn)
// 实现代码
// d_id创建结构使用
// id记录部门id号
// d_name记录部门名称
// tn表示当前节点
4、 接下来看方法如何实现
  由于TreeNode是有层次显示的,所以这里使用递归最为容易(循环感觉也可以实现)
  4.1 首先将d_id编程字符数组,并得到最后一个字符,这个顶级节点
1 char[] chs = d_id.ToCharArray();
2 string nodeStr = chs[chs.Length - 1].ToString();
  4.2 在TreeNode中检索是否存在这个节点. 检索存在就是看TreeNode的子节点中是否有Tag与nodeStr匹配的(这里可使用Linq,不过既然简单用最原始的)
    写一个方法,由于部门的名字是不会重复的,所以这么写
1 private bool IsExist(string nodeText, TreeNode tn)
bool isTrue = false;
for(int i = 0; i & tn.Nodes.C i++)
if(tn.Nodes[i].Tag as string == nodeText)
isTrue = true;
return isT
    该方法只要找到TreeNode直接子节点中存在与给定字符串相同的节点就返回true,否则返回false
  4.3 判断是否存在节点,如果不存在就创建,如果存在就得到这个节点
    这里需要注意的是,所有节点的逻辑结构均有Tag属性来确认,而Text属性最终使用d_id与d_name替换,因此这里是一个临时的值
TreeNode tnObj = null;
if(!IsExist(nodeStr, tn))
tnObj = tn.Nodes.Add(nodeStr);
tnObj.Tag = nodeS
// 得到这个节点
  4.4 考虑如果存在就得到该节点,但是不要写循环一次了,太麻烦,因此修改IsExist方法
1 private bool IsExist(string nodeText, TreeNode tn, out TreeNode tnObj)
tnObj = null;
bool isTrue = false;
for(int i = 0; i & tn.Nodes.C i++)
if(tn.Nodes[i].Tag as string == nodeText)
isTrue = true;
tnObj = tn.Nodes[i];
// 将找到的节点直接返回
return isT
    因此4.3步的代码可以改为
1 if(!IsExist(nodeStr, tn, out tnObj))
tnObj = tn.Nodes.Add(nodeStr);
tnObj.Tag = nodeS
    这个方法的思路来自int.TryParse方法,如果找到了,那么返回true,那么tnObj中就有了该节点
    如果没有找到那么创建一个,反正tnObj中就有当前子节点
  4.5 这里应该判断是不是最后一个节点,如果是最后一个节点那么就应该将id和d_name加到Text属性上
    由于使用递归完成,因此再次调用这个方法的时候,会将存储d_id的char数组最后一个字符去掉
    因此使用chs.Length == 1即可判断是否为最后一个节点
1 if(chs.Length == 1)
// 将当前节点即为结束节点
tnObj.Text = string.Format("{0} {1}", id, d_name);
// 如果不是最终节点,则递归
ShowFromString(new string(chs, 0, chs.Length - 1), id, d_name, tnObj);
 5、 整合一下方法
1 private void ShowFromString(string d_id, string id, string d_name, TreeNode tn)
char[] chs = d_id.ToCharArray();
string nodeStr = chs[chs.Length - 1].ToString();
TreeNode tnObj = null;
if(!IsExist(nodeStr, tn, out tnObj))
tnObj = tn.Nodes.Add(nodeStr);
tnObj.Tag = nodeS
if(chs.Length == 1)
tnObj.Text = string.Format("{0} {1}", id, d_name);
ShowFromString(new string(chs, 0, chs.Length - 1), id, d_name, tnObj);
20 private bool IsExist(string nodeText, TreeNode tn, out TreeNode tnObj)
tnObj = null;
bool isTrue = false;
for(int i = 0; i & tn.Nodes.C i++)
if(tn.Nodes[i].Tag as string == nodeText)
isTrue = true;
tnObj = tn.Nodes[i];
// 将找到的节点直接返回
return isT
6、 添加窗体的Load事件,并添加代码
1 private void Form1_Load(object sender, EventAges e)
// 添加根节点公司, 就是在公司下面添加节点
TreeNode tn = tvCompany.Nodes.Add("公司");
// 处理数据库,读数据
using(SqlConnection conn = new SqlConnection(@"server=.\database=integrated security=true"))
using(SqlCommand cmd = new SqlCommand("select d_id, d_name from table_department", conn))
conn.Open();
using(SqlDataReader reader = cmd.ExecuteReader())
if(reader.HasRow)
while(reader.Read())
string d_id = reader.GetString(0);
string d_name = reader.GetString(1);
ShowFromString(d_id, d_id, d_name, tn);
7、 最后要用XML存储,递归遍历节点,创建XML数据,就像遍历文件夹一样
  7.1 添加递归方法
1 private void GetXML(TreeNode tn, XElement ele)
// 得到tn下的数据,并加到ele中
for (int i = 0; i & tn.Nodes.C i++)
// 创建对应节点
XElement ele1 = new XElement(tn.Nodes[i].Text.Replace(" ", "_")); // 由于XML中节点名中不允许有空格,所以去掉
ele.Add(ele1);
GetXML(tn.Nodes[i], ele1);
  7.2 添加按钮事件
1 private void createXML_Click(object sender, EventArgs e)
XDocument xDoc = new XDocument();
xDoc.Add(new XElement("Company"));
GetXML(tvCompany.Nodes[0], xDoc.Root);
xDoc.Save("company.xml");
========================================
第二种方法
  第一种方法比较简单,关键在于如何处理d_id结构而已,而且顺序读取和创建   实际上TreeNode与XML结构一致,是可以同样处理的,也就是说先从数据库中取出数据,生成XML数据,在递归遍历XML数据创建TreeNode
1、 从数据库中读取数据,并创建XML文件
  树形结构有一个特点,就是每一个节点只允许有一个父节点和一个子节点,所以可以从数据库中取出所有数据,得到所有数据的节点片段数据
  在根据一定算法将节点连起来
  1.1 添加一个方法,该方法完成从数据库中读取数据,并得到XML集合(数组也行,个人比较喜欢集合)
1 private List&XElement& GetElementByDatabase()
  1.2 读取数据库,创建XML集合
1 private List&XElement& GetElementByDatabase()
List&XElement& list = new List&XElement&();
using (SqlConnection conn = new SqlConnection(@"server=.\database=integrated security=true"))
using (SqlCommand cmd = new SqlCommand("select d_id, d_name from table_department", conn))
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
if (reader.HasRows)
while (reader.Read())
string d_id = reader[0].ToString();
string d_name = reader[1].ToString();
// 开始生成XML数据
list.Add(new XElement("department",
new XAttribute("d_id", d_id),
new XAttribute("d_name", d_name)
2、 处理XML片段集合的结构,这个结构没有构成树状结构,因此写一个方法将这个XML片段集合变成一个XML树片段
  这里算法有很多,也可以使用Linq查询,但是我不打算详细描述算法,因为有些比较抽象
  这里用一个不一定最快,但是很直观的算法
  2.1 添加一个方法
1 public XElement GetXMLTree(List&XElement& listXML)
  2.2 了解到XML每一个节点至多只有一个父节点和子节点,因此只要将处理好节点的去掉即可
    同时每一个节点都是通过d_id分层次,而这个层次很有规律,父节点刚好比子节点多一个字符,也就是说
    父节点的d_id与子节点的d_id.Substring(1)相同
    所以就可以从最长的节点开始找,依次为每一个节点找父节点即可
1 public XElement GetXMLTree(List&XElement& listXML)
// 先为listXML降序排序,因为d_id越长,节点越深
listXML.Sort((XElement x1, XElement x2) =& { return x2.Attribute("d_id").Value.Length - x1.Attribute("d_id").Value.L });
// 从左开始为每一个节点找父节点,很显然,最长的节点最深
// 一旦找到父节点,添加进去,就可以将该节点从集合中移除
for (int i = 0; i & listXML.C i++)
XElement curr = listXML[i];
for (int j = i + 1; j & listXML.C j++)
// 判断是否为父子关系
if (curr.Attribute("d_id").Value.Substring(1) == listXML[j].Attribute("d_id").Value)
listXML[j].Add(curr);
return listXML[listXML.Count - 1];
3、 XML结构有了,那么就可以保存该数据了
  另外遍历XML结构,加载到TreeView控件中
1 private void ShowTreeNode(TreeNode tn, XElement ele)
foreach (XElement item in ele.Elements())
TreeNode tn1 = tn.Nodes.Add(string.Format("{0} {1}", item.Attribute("d_id").Value, item.Attribute("d_name").Value));
if (item.HasElements)
ShowTreeNode(tn1, item);
4、 添加Load方法
1 XElement element = null; // 记录要保存的XML数据
2 private void Form1_Load(object sender, EventArgs e)
List&XElement& xelements = GetElementByDatabase();
element = GetXMLTree(xelements);
ShowTreeNode(tvCompany.Nodes.Add("公司"), element);
5、 添加保存XML的代码(添加XElement字段)
1 private void btnSave_Click(object sender, EventArgs e)
XDocument xDoc = new XDocument(element);
xDoc.Save("xml.xml");
MessageBox.Show("OK");
第三种方法   写了第二种方法就不太想写第三种方法了,介绍一下基本思想吧
  为数据表创建一个对象模型,但是多出一个字段,就是记录反序的d_id
  那么就可以利用排序等手段创建对象集合
  同时解析每一个字符创建TreeView节点了
=================================================
好了,就给出成型的两个算法吧!如果有时间在慢慢看. 本人见识有限,还请大家多提意见,如果有更好的思路,借鉴一下啊!!!
Views(...) Comments()&有朋友推荐金斯波格KF128和三益JS122MB,请高手帮忙分析一下!& 的相关文章
有朋友推荐金斯波格KF128和三益JS122MB,请高手帮忙分析一下!说是配置,材料还有音色都很不错!金斯波 ...&&
作者:im828 &&回复数:24 &&标签:
赞助商链接
今天我去琴行买琴,然后琴行给我推荐了这一型号的钢琴,琴行人员说这款钢琴在音质音色方面都特别好,性价比也比较高,建议我买这款钢琴,我想咨询一下大家的意见&&
作者:圣者无名 &&回复数:22
最新想买架钢琴,预计25000元以内,看了几款感觉不错,金斯波格KG122价格22500、三益122MD24800、卡哇伊KU左右,女儿还小,我自己弹也听不出好坏,至于工艺什么的更是不了解,求大师指教,这几个牌子怎样,这个价格哪款性价比最高,感谢&&
作者:山豆根儿 &&回复数:34
请大家帮帮忙,施特劳斯122,16500,金斯波格KG120,17000,手感和音色我也听不出来,但是在网上看到信息,很多也看不明白,我想问下论坛里有经验的人,应该选哪一款,价格还能降吗?&&
作者:天津市哥们 &&回复数:21
再请教专家,韦伯49和金斯波格KF128选哪个呢?论坛好多专家推荐韦伯49,英昌这个牌子我也比较喜欢。再请教专家们,如果是韦伯49和金斯波格KF128选哪个呢?韦伯49我还没有试过琴,先来听听专家意见,打算明天抽空再去看看琴。&&
作者:hebe84 &&回复数:35
我的一架二手的南韩三益钢琴,整体声音还说得过去,但是那个高音区大概c2-f3声音显得很单薄,不丰满,没劲,有的像古钢琴的声音,强奏很不给力,但最高音g3以上又有所改善。另:大字组#C的声音好像是震动不充分,有点像古筝的声音。以上问题请行家高手不吝赐教。谢谢!&&
作者:meizs &&回复数:14
基本确定金斯波格,但是是KG125还是KF128呢?琴行在我家对面,凭个人音色喜好,决定金斯波格。就是不知道选KF128还是KG125?128的样子我是一眼就看中了,本人外貌协会的,音色很喜欢。同一首歌换了几架钢琴,还是更喜欢金斯波格的柔和和饱和感。回来看攻略,大家主推KG125,想在这两款中选一个,请专家们给点意见。没问 ...&&
作者:hebe84 &&回复数:24
接触钢琴多了,说说韩国的两大品牌:英昌和三益过手这么些台三益和英昌,各种琴型:从111到131,从真正的雕花古典到现代抽象的定制琴.个人感觉不论外型杂样,三益的音色就是比英昌好.从做工方面讲,总体上英昌的确要好过三益,但细节上还是三益要更胜一酬.原厂英昌的血统音色太亮了,太炸了.手感真的一般.原厂三益声音很内敛,很 ...&&
作者:音乐情感 &&回复数:29
金斯波格KF128,KF126,KF123,KG133,KG125都什么价位?再麻烦高手详细介绍一下:琴弦,外壳,琴键,音板,是否真空铸铁支架,中盘什么材料等等等等!优点,缺点,售后服务等等等等!北京和武汉有哪几家琴行在代理?KG133和KF133究竟有何区别??KG125和KF126究竟有何区别??KG122和KF123究竟有何区别??价格能站内发给我吗?&&
作者:im828 &&回复数:22
凯撒堡UH123和三益JS122排除价格和品牌的因素,就做工音色和材质来说哪个好&&
作者:gaoxiangrong &&回复数:33
女儿学琴2年多了,一直在学习班,最近想给他买架琴,在网上看了看,品牌、配置搞的我非常凌乱,老师推荐金斯波格KG125、三益Es121,请问这两个牌子怎么样,麻烦大家给点意见,谢谢&&
作者:简单的我~ &&回复数:36
你好,想买钢琴看中了珠江TA和金斯波格KG122还有斯特曼126,请帮忙看看,哪款更好?斯特曼126是老师介绍的,没有去琴行看,老师说可以拿的到货,价格也便宜13800,我还是想在珠江TA金斯波格KG122考虑,哪个音色更好些?&&
作者:飞舞世界 &&回复数:21
卡哇依KUA120000元,三益ES121MD18800元。两款钢琴应该选哪款?老师说卡哇依的品牌较深入人心,音色好,适合专业用,三益的性价比高。非常纠结中。&&
作者:inventic &&回复数:38
犹豫了半天,终于选择了上海三益的SAMICKSC121MD,感觉这琴做工相当不错,音色非常好,共鸣的感觉超出了一般的琴,还是一款值得购买的品牌.本帖最后由chris-2-2523:33编辑&&
作者:chris5918 &&回复数:14
纠结三益JS300NSTD与JS122MD这两款琴,从音色、售价、进价、综合性能等,究竟哪款琴好些?请行家指点迷津,说真话,不说行话。&&
作者:森林传说 &&回复数:8
我是新手,想给自己孩子买,也想自己能业余学学,我去看过此琴音色还不错,国产的我不喜欢,但是原装进口的现在又是初学,觉得买好琴还为时过早。不知道三益300SS二手的琴,好不好哦,谢谢。)&&
作者:caminae &&回复数:35
三益JS122MD24000,里特米勒20000以下,哪个音色好,性价比高值得买&&
作者:gaoxiangrong &&回复数:39
周末和同事一起去看琴,我俩都打算给孩子买琴,看好了两款,琴行介绍这两款琴从内到外都挺不错的,尤其是音色特别好,因此想征询一下大家的意见&&
作者:冷雨~ &&回复数:24
去年就计划买琴,一直拖到现在,后悔买晚了,都涨了不少,现在看中了几款琴,大家给个参考英昌YP123L223800红棕色音色挺好三益JS124000两款有什么区别吗?欧米勒大家帮提个建议&&
作者:信轻一言 &&回复数:40
女儿七岁,长的不高,太高的琴怕驾驭不了,老公说120的琴就可以,周末转了一圈,结合网上评价,购买的金斯波格KG120,16800买的,送到家音色我感觉也可以,发现KG120的黑键不是木质的,可我看介绍是乌木做的,有点奇怪。&&
作者:白云相伴 &&回复数:20
原本打算买卡哇伊Ku120P,今天又看了一款琴行的钢琴,三益Es118D,说是印尼进口,感觉音色各方面也不错,不开发票说年底1。8万,卡哇伊这款是商场卖,价格1。9万,各位大侠,哪个好呢,各有什么特点,请指教,谢谢!&&
作者:meir523 &&回复数:92
查看相关关键词:&&求英语教程!朋友们帮帮忙,我很想学英语但是时间有点紧,谁能提供一些资料 谢谢邮箱:df__百度知道

我要回帖

更多关于 哥们傲剑官网 的文章

 

随机推荐