问题描述
小弟初学C#,有一道题想问各位高手就是我做了一个WinForms界面,输入完信息之后保存在Customer.txt文件中使用StreamWriter写入文件,写入没问题,但是我想在用户输入一个姓名后点击搜索按钮就能从文本文件中查找相应人的信息,请问各位高手如何实现呢?最好能提供一段简单的代码,谢谢!
解决方案
解决方案二:
所有用户的信息都在Customer.txt文件中吗?一个用户一行纪录?
解决方案三:
是这样的一个客户有如下记录姓名地址电话我想通过文本框输入的姓名搜索客户的信息
解决方案四:
我明白你的意思,我的意思是用户有很多吧,是不是所有的用户信息都存在Customer.txt文件中?你写入文件的时候格式是怎么样的?
解决方案五:
你只能挨行的读取数据然后对比,用个access吧
解决方案六:
一个一个记录的写如
解决方案七:
最好用XML文件,估计会好用些,楼主可以自己去试试privatevoidbtnQuery_Click(objectsender,System.EventArgse){XmlDocumentdoc=newXmlDocument();doc.Load(Server.MapPath(".\db\dbGuest.xml"));lbEmail.Text=doc.SelectSingleNode("//User[Name='"+ddlName.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText;}
解决方案八:
小弟初学,还没有学习过XML谢谢
解决方案九:
如果是文本文件,肯定要逐行搜索,如果是xml文件,可以使用xpath查找
解决方案十:
请问如何逐行搜索呢以下是我添加文本的代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Collections;namespaceTest2{publicpartialclassForm1:Form{privateStreamWritersw;privateHashtableht;publicForm1(){InitializeComponent();}privatevoidbtnAdd_Click(objectsender,EventArgse){if(File.Exists(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt")){sw=File.AppendText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}else{sw=File.CreateText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}//将对象封装在Hashtable中ht=newHashtable();ht.Add("姓名",this.txtName.Text);ht.Add("住址",this.txtAddress.Text);ht.Add("电话",this.txtTel.Text);//写入文本文件foreach(DictionaryEntrydeinht){try{sw.WriteLine("{0}:{1}",de.Key.ToString(),de.Value.ToString());sw.WriteLine();}catch(Exceptionex){MessageBox.Show(ex.Message);}}sw.Close();MessageBox.Show("客户信息添加成功!");}}}
解决方案十一:
StreamReadersr=newStreamReader("文件的路径");while(!sr.EndOfStream){stringname=sr.ReadLine();if(name=="要查询的名字"){tbAddress.Text=sr.ReadLine();tbPhone.Text=sr.ReadLine();}}
解决方案十二:
不行啊,查询不到
解决方案十三:
为什么查询不到?把你的查询代码发上来看看
解决方案十四:
accp现在不是都5.0了么
解决方案十五:
privatevoidbtnSearch_Click(objectsender,EventArgse){MessageBox.Show(this.txtName.Text);StreamReadersr=newStreamReader(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");//获得用户输入的名字while(!sr.EndOfStream){stringname=sr.ReadLine();if(name==this.txtName.Text){this.txtAddress.Text=sr.ReadLine();this.txtTel.Text=sr.ReadLine();}}}
解决方案:
完整版的usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Collections;namespaceTest2{publicpartialclassForm1:Form{privateStreamWritersw;privateHashtableht;publicForm1(){InitializeComponent();}privatevoidbtnAdd_Click(objectsender,EventArgse){if(File.Exists(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt")){sw=File.AppendText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}else{sw=File.CreateText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}//将对象封装在Hashtable中ht=newHashtable();ht.Add("姓名",this.txtName.Text);ht.Add("住址",this.txtAddress.Text);ht.Add("电话",this.txtTel.Text);//写入文本文件foreach(DictionaryEntrydeinht){try{sw.WriteLine("{0}:{1}",de.Key.ToString(),de.Value.ToString());sw.WriteLine();}catch(Exceptionex){MessageBox.Show(ex.Message);}}sw.Close();MessageBox.Show("客户信息添加成功!");}privatevoidbtnExit_Click(objectsender,EventArgse){Application.Exit();}privatevoidbtnSearch_Click(objectsender,EventArgse){StreamReadersr=newStreamReader(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");while(!sr.EndOfStream){stringname=sr.ReadLine();if(name==this.txtName.Text){this.txtAddress.Text=sr.ReadLine();this.txtTel.Text=sr.ReadLine();}}}}}
解决方案:
把if(name==this.txtName.Text)改成if(name.Contains(this.txtName.Text))
解决方案:
为什么没有查找到电话呢?
解决方案:
因为你写的时候多sw.WriteLine()了一次
解决方案:
引用17楼realliuchu的回复:
为什么没有查找到电话呢?
要么把sw.WriteLine()去掉要么在读文件的时候在this.txtAddress.Text=sr.ReadLine();this.txtTel.Text=sr.ReadLine();中间再加一个sr.ReadLine();
解决方案:
usingSystem.Collections.Generic;privatevoidbtnAdd_Click(objectsender,EventArgse){StreamWritersw=null;try{if(File.Exists(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt")){sw=File.AppendText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}else{sw=File.CreateText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}Dictionary<string,string>ht=newDictionary<string,string>();ht.Add("姓名",this.txtName.Text);ht.Add("住址",this.txtAddress.Text);ht.Add("电话",this.txtTel.Text);//写入文本文件foreach(KeyValuePair<string,string>deinht){sw.WriteLine("{0}:{1}",de.Key,de.Value);}}catch(Exceptionex){MessageBox.Show(ex.Message);}sw.Close();MessageBox.Show("客户信息添加成功!");}privatevoidbtnSearch_Click(objectsender,EventArgse){StreamReadersr=newStreamReader(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");stringname=sr.ReadLine();while(!string.IsNullOrEmpty(name)){if(name.Split(':')[1].Trim()==this.txtName.Text.Trim()){this.txtAddress.Text=sr.ReadLine().Split(':')[1].Trim();this.txtTel.Text=sr.ReadLine().Split(':')[1].Trim();}name=sr.ReadLine();}}
解决方案:
我记得是个20分的题,怎么变100分了?
解决方案:
以行为单位存储是关键下面是我做过的一个例子的逐行检索想要的信息frmSelectfs=newfrmSelect();fs.ShowDialog();stringsele=fs.num+"t";StreamReadersr=newStreamReader("E:\Employee.txt");stringa;al=newArrayList();while(true){a=sr.ReadLine();if(a==null){break;}al.Add(a);}sr.Close();stringnam="";for(i=0;i<al.Count;i++){nam=al[i].ToString().Substring(al[i].ToString().IndexOf(":")+1,al[i].ToString().IndexOf("姓名:")-al[i].ToString().IndexOf(":")-1);if(nam==sele){break;}}stringfindinfor=(al[i].ToString());this.txtNum.Text=findinfor.Substring(findinfor.IndexOf(":")+1,findinfor.IndexOf("t姓名:")-findinfor.IndexOf(":")-1);this.txtName.Text=findinfor.Substring(findinfor.IndexOf("姓名:")+3,findinfor.IndexOf("t部门:")-findinfor.IndexOf("姓名:")-3);this.txtPart.Text=findinfor.Substring(findinfor.IndexOf("部门:")+3,findinfor.IndexOf("t工资:")-findinfor.IndexOf("部门:")-3);this.txtPrice.Text=findinfor.Substring(findinfor.IndexOf("工资:")+3,findinfor.Length-findinfor.IndexOf("工资:")-3);this.txtNum.ReadOnly=true;this.btnUpdate.Enabled=true;我这个例子完整了对文本信息的增删改查如果需要其他部分的代码可以联系我我是小菜鸟!说的不好清见谅,希望能够帮到你!
解决方案:
StreamWritersw=null;try{if(File.Exists(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt")){sw=File.AppendText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}else{sw=File.CreateText(@"E:ACCP4.0-S2C#第十二章Test2Customer.txt");}Dictionary<string,string>ht=newDictionary<string,string>();ht.Add("姓名",this.txtName.Text);ht.Add("住址",this.txtAddress.Text);ht.Add("电话",this.txtTel.Text);//写入文本文件foreach(KeyValuePair<string,string>deinht){sw.WriteLine("{0}:{1}",de.Key,de.Value);}}catch(Exceptionex){MessageBox.Show(ex.Message);}sw.Close();
解决方案:
为什么不用INI文件呢???INI文件算文本文件吧!
解决方案:
这么多高手,学习了。
解决方案:
该回复于2008-06-11 15:28:51被版主删除
解决方案:
难道楼主的问题还没解决?