代码如下:
using System;
using System.Collections.Generic;
using System.IO;
namespace ConsoleApp1
{
class Person
{
public string name;
public string id;
public string password;
public string state;
public string description;
public Person(string name,string id,string password,string state,string description)
{
this.name = name;
this.id = id;
this.password = password;
this.state = state;
this.description = description;
}
}
class Program
{
static void Main(string[] args)
{
//为了方便查看文件,建议将path改为您的桌面路径,最好用绝对路径,相对路径我没有进行调试可能报错
string path = @"C:\Users\Error\Desktop\test.txt";
string initstr = "姓名,编号,密码,状态,描述";
Person student1 = new Person("张三", "01", "123", "大二再度", "优秀学生");
Person student2 = new Person("李四", "02", "456", "即将毕业", "优秀学生");
Person student3= new Person("王五", "03", "789", "已经毕业", "优秀毕业生");
initFile(path,initstr);
addData(path, student1);
addData(path, student2);
addData(path, student3);
readFile(path);
Console.WriteLine("----------------------------------------");
findDataById(path, "01");
Console.WriteLine("----------------------------------------");
delDataById(path, "02");
//delDataByName(path, "李四");
readFile(path);
Console.WriteLine("----------------------------------------");
reviseDataById(path, "03");
readFile(path);
Console.WriteLine("----------------------------------------");
clearFile(path);
readFile(path);
Console.WriteLine("----------------------------------------");
//删除文件后再此运行会报错,强行终止后再运行又好使了,我不理解。。。
destroyFile(path);
}
public static void initFile(string path,string initstr)
{
if (!File.Exists(path))
{
using (File.Create(path))
{
File.WriteAllText(path, initstr + "\n");
}
}
else
{
File.WriteAllText(path, initstr + "\n");
return;
}
}
public static void clearFile(string path)
{
File.WriteAllText(path, "");
}
public static void destroyFile(string path)
{
File.Delete(path);
}
public static void readFile(string path)
{
string[] strArray = File.ReadAllLines(path);
foreach (string s in strArray)
{
Console.WriteLine(s);
}
}
public static void addData(string path ,Person student)
{
File.AppendAllText(path, student.name+",");
File.AppendAllText(path, student.id + ",");
File.AppendAllText(path, student.password + ",");
File.AppendAllText(path, student.state + ",");
File.AppendAllText(path, student.description+"\n");
}
//name和id一样我只在删除时演示两遍,其他操作只演示id
public static void delDataById(string path,string id)
{
List<string> lines = new List<string>(File.ReadAllLines(path));
int count = 0;
foreach (string line in lines)
{
string[] items = line.Split(",");
if (items[1] == id)
{
lines.RemoveAt(count);
File.WriteAllLines(path, lines.ToArray());
Console.WriteLine("成功删除id为{0}的学生信息", id);
return;
}
count++;
}
Console.WriteLine("无id为{0}的学生,请更换其他id", id);
}
public static void delDataByName(string path, string name)
{
List<string> lines = new List<string>(File.ReadAllLines(path));
int count = 0;
foreach (string line in lines)
{
string[] items = line.Split(",");
if (items[0] == name)
{
lines.RemoveAt(count);
File.WriteAllLines(path, lines.ToArray());
Console.WriteLine("成功删除name为{0}的学生信息", name);
return;
}
count++;
}
Console.WriteLine("无name为{0}的学生,请更换其他姓名", name);
}
public static void findDataById(string path, string id)
{
List<string> lines = new List<string>(File.ReadAllLines(path));
int count = 0;
foreach (string line in lines)
{
string[] items = line.Split(",");
if (items[1] == id)
{
Console.WriteLine("您所需要的学生信息为[姓名:{0},编号:{1},密码:{2},状态:{3},描述:{4}]",items[0],items[1], items[2], items[3], items[4]);
return;
}
count++;
}
Console.WriteLine("无id为{0}的学生,请更换其他id", id);
}
public static string operate(string[] items,string option,int index)
{
Console.Write("输入修改后的{0}-->", option);
items[index] = Console.ReadLine();
string newline = "";
foreach (string i in items)
{
newline += i + ",";
}
return newline.Substring(0,newline.Length-1)+"\n";
}
public static void reviseDataById(string path, string id)
{
List<string> lines = new List<string>(File.ReadAllLines(path));
int count = 0;
foreach (string line in lines)
{
string[] items = line.Split(",");
if (items[1] == id)
{
Console.WriteLine("匹配成功!");
Console.WriteLine("当前学生信息为[姓名:{0},编号:{1},密码:{2},状态:{3},描述:{4}]", items[0], items[1], items[2], items[3], items[4]);
while (true)
{
Console.Write("请输入要修改的项-->");
string item = Console.ReadLine();
switch (item)
{
case "姓名":
lines[count] = operate(items, "姓名", 0);
File.WriteAllLines(path, lines.ToArray());
break;
case "编号":
lines[count] = operate(items, "编号", 1);
File.WriteAllLines(path, lines.ToArray());
break;
case "密码":
lines[count] = operate(items, "密码", 2);
File.WriteAllLines(path, lines.ToArray());
break;
case "状态":
lines[count] = operate(items, "状态", 3);
File.WriteAllLines(path, lines.ToArray());
break;
case "描述":
lines[count] = operate(items, "描述", 4);
File.WriteAllLines(path, lines.ToArray());
break;
default:
Console.WriteLine("无此选项,修改失败");
break;
}
Console.WriteLine("是否继续修改此人信息,回复1->继续,其他->退出");
Console.Write("输入:");
string num=Console.ReadLine();
if (num != "1")
{
break;
}
}
return;
}
count++;
}
Console.WriteLine("无id为{0}的学生,请更换其他id", id);
}
}
}