我是C#的新手,现在正忙着使用airTicket预订系统项目。 我必须从文本文件中搜索预订编号并显示预订详细信息。
这将是我在文本文件中的记录。
预订号码:KW2MSMB30
名称:测试
年龄:21
Passport Num:测试
航空公司:马来西亚航空公司
出发地:马来西亚
返回:新加坡
出发日期:2014年2月19日,星期三
退货日期:空
Travaller:1(成人)1(儿童)1(婴儿)
服务类别:商务舱
旅行:一次旅行
在我输入预订编号并单击“确定”按钮后,它将显示标签上的详细信息。
这就是我的代码:
int counter = 0; string line;
bool writeNextLine = false;
StringBuilder sb = new StringBuilder();
// Read the file and display it line by line.
using (System.IO.StreamReader file = new System.IO.StreamReader("record.txt"))
{
while ((line = file.ReadLine()) != null)
{
if (line.Contains(txt_SearchBooking.Text))
{
// This append the text and a newline into the StringBuilder buffer
sb.AppendLine(line.ToString());
lbl_result.Text += sb.ToString();
}
}
}
但这仅显示我的第一行,即预订号码。 我该怎么做才能显示所有细节?
抱歉我的英语很差,希望你们明白这一点。
答案 0 :(得分:1)
这是因为第一行包含您的预订编号,而if子句无法帮助您获取更多详细信息。
while ((line = file.ReadLine()) != null)
{
if (line.Contains(txt_SearchBooking.Text)) //Will always match line Booking Number :KW2MSMB30
{
// This append the text and a newline into the StringBuilder buffer
sb.AppendLine(line.ToString());
lbl_result.Text += sb.ToString();
}
}
如果您想要做的是在找到预订编号后循环上线,然后打破下一个预订编号。
bool isBookingRecordFound = false;
while ((line = file.ReadLine()) != null)
{
if (line.Contains(txt_SearchBooking.Text)) //Will always match line Booking Number :KW2MSMB30
{
isBookingRecordFound = true; //True here will ensure there was a record found
sb.AppendLine(line.ToString());
while ((line = file.ReadLine()) != null)
{
if (line.Contains("Booking Number :"))
break;
sb.AppendLine(line.ToString());
}
}
lbl_result.Text = sb.ToString();
}
if (!isBookingRecordFound)
MessageBox.Show("There was no matching booking number");
恕我直言,你应该避免使用文件存储数据和访问它的方式。 为什么不考虑使用SQL?
恕我直言,它不是关于C#或SQL。如果您正在编程,首先要了解您的要求,然后检查您是否处理了大量复杂数据,选择正确的工具如SQL,学习并开始。除非这只是学习C#,否则你仍然可以做到这一点,但不是一个优选的良好过程。
更新:为了更多地了解C#和SQL的使用情况,有许多在线文章。您可以从这开始:http://www.codeproject.com/Articles/4416/Beginners-guide-to-accessing-SQL-Server-through-C
答案 1 :(得分:0)
正如其他一些人所说,你真的应该研究一下数据库解决方案。 C#可以使用LINQ轻松地从数据库中提取数据。 LINQ将返回您的数据库查询作为可以轻松操作和显示的对象。
我将从LINQ开始。 http://msdn.microsoft.com/en-us/library/bb397926.aspx
有很多资源可用于如何获得简单的数据库。
答案 2 :(得分:0)
使用Files存储数据不是一个好习惯,我建议您使用DataBase
来存储数据,因为它可以让您以高效的方式存储它,并为您提供{ {1}}您可以毫不费力地获取所需信息。
如果您的文件只包含一个预订信息,您可以尝试以下代码:
试试这个:
SQL
答案 3 :(得分:0)
我认为没有必要告诉你有关数据库的信息。因此,如果我们有一个文本文件,让我们使用它:
while ((line = file.ReadLine()) != null)
{
if (line.Contains(txt_SearchBooking.Text))
{
lbl_result = ReadBooking(file);
}
}
然后添加一个新方法:
string ReadBooking(StreamReader file)
{
StringBuilder sb = new StringBuilder();
while ((line = file.ReadLine()) != null) || (line.Contains("Booking Number :"))
{
sb.AppendLine(line.ToString());
}
return sb.ToString();
}