C#基础第五天-作业答案-用DataTable制作名片集

1.DataTable 实现


  DataTable PersonCard = new DataTable(); //创建一个DataTable
            DataTable PersonCardCopy = new DataTable(); 
            PersonCard.Columns.Add("姓名");    //添加列  名称
            PersonCard.Columns.Add("年龄");     //添加列  年龄
            PersonCard.Columns.Add("性别");     //添加列  性别
            PersonCard.Columns.Add("爱好");   //添加列  爱好
            PersonCard.Columns.Add("电话");   //添加列  电话
            PersonCard.Columns.Add("状态");   //添加列  状态  (1新增 2修改)
            string Stop = string.Empty;        //控制循环停止
            do
            {
                Console.WriteLine("请输入您的姓名");
                string name = Console.ReadLine();         //获取输入信息
                Console.WriteLine("请输入您的年龄");
                string age = Console.ReadLine();
                Console.WriteLine("请输入您的性别");
                string sex = Console.ReadLine();
                Console.WriteLine("请输入您的爱好");
                string hobby = Console.ReadLine();
                Console.WriteLine("请输入您的联系方式");
                string phone = Console.ReadLine();

                DataRow PersonRow = PersonCard.NewRow();    //实例化表行
                PersonRow["姓名"] = name;                //给表行按列名增加信息
                PersonRow["年龄"] = age;
                PersonRow["性别"] = sex;
                PersonRow["爱好"] = hobby;
                PersonRow["电话"] = phone;
                PersonRow["状态"] = "1";
                
                Console.WriteLine("是否提交该条信息,t/f");
                string submit=Console.ReadLine();
                if (submit == "t")                   //提交信息,改变行状态
                {
                    PersonRow["状态"] = " ";          //赋值
                }
                else
                {
                    PersonRow["状态"] = "1";          //赋值
                }
                PersonCard.Rows.Add(PersonRow);        //向表中增加行
                Console.WriteLine("是否继续增加人员信息,y/n");
                Stop = Console.ReadLine();
            }
            while (Stop != "n");
            int command=0 ;     //变量 操作指令
            string NameFind = string.Empty;   //查询人员
            string Name= string.Empty;   //修改人员
            string Lie = string.Empty;   //修改的列
            string UpdateMessage = string.Empty;
            do
            {
                try
                {
                    Console.WriteLine("请输入操作指令(1查询全部 2单个查询 3修改信息 4删除信息 5查找已经删除信息)");
                    command = Convert.ToInt32(Console.ReadLine());
                    if (command ==1)  //查询全部
                    {
                        foreach (DataRow dataRows in PersonCard.Rows)   //查询全部
                        {
                            Console.WriteLine(@"姓名:{0}   年龄:{1}   性别:{2}   爱好:{3}   电话:{4}   状态:{5}", dataRows["姓名"].ToString(),
                                dataRows["年龄"].ToString(), dataRows["性别"].ToString(), dataRows["爱好"].ToString(), dataRows["电话"].ToString(), dataRows["状态"].ToString());                         
                        }
                    }
                    if (command ==2)  //单个查询
                    {
                        try
                        {
                            Console.WriteLine("请输入您要查询的人员姓名");
                            NameFind = Console.ReadLine();
                            DataRow[] dataRows = PersonCard.Select("姓名='" + NameFind + "'");  //根据从NameFind中获取的值在DataTable中查询行数据
                            Console.WriteLine(@"姓名:{0}   年龄:{1}   性别:{2}   爱好:{3}   电话:{4}",
                                dataRows[0]["姓名"], dataRows[0]["年龄"], dataRows[0]["性别"], dataRows[0]["爱好"], dataRows[0]["电话"]);//显示获取的第0行“Name”列的值
                        }
                        catch
                        {
                            Console.WriteLine("对不起,没有您要查找的人员!");
                        }
                        Console.ReadLine();
                    }
                    if (command == 3)  //修改信息
                    {
                        //判断是否存在此人
                        Console.WriteLine("请输入您要修改的人员");
                        Name = Console.ReadLine();
                        if (PersonCard.Select("姓名='" + Name + "'").Length == 0)
                        {
                            Console.WriteLine("查询不到您要修改的人员");
                            continue;
                        }
                        //获取人员信息
                        DataRow[] rows = PersonCard.Select("姓名='" + Name.ToString().Trim() + "'");
                        //判断是否存在要修改的列
                        Console.WriteLine("请输入您要修改列");
                        Lie = Console.ReadLine();
                        if (!PersonCard.Columns.Contains(Lie))    //没有这列
                        {
                            Console.WriteLine("查询不到您要修改的列");
                            continue;
                        }
                        //修改内容
                        Console.WriteLine("请输入您修改后的内容");
                        string message = Console.ReadLine();
                        foreach (DataRow row in rows)
                        {
                            row[Lie] = message;
                            row["状态"] = "2";
                        }
                        //获取修改后的人员信息
                        foreach (DataRow row in rows)
                        {
                            Console.WriteLine(@"姓名:{0}   年龄:{1}   性别:{2}   爱好:{3}   电话:{4}",
                               row[0].ToString(), row[1].ToString(), row[2].ToString(), row[3].ToString(), row[4].ToString());//显示获取的第0行“Name”列的值                                                            
                        }
                    }
                    if (command == 4)  //删除信息
                    {
                        //判断是否存在此人
                        Console.WriteLine("请输入您要的删除的人员");
                        string DeleteName = Console.ReadLine();
                        if (PersonCard.Select("姓名='" + DeleteName + "'").Length == 0)
                        {
                            Console.WriteLine("查询不到您要修改的人员");
                            continue;
                        } 
                        //获取要删除人员的行信息,存入到另一个Datatable中
                        DataRow[] rows = PersonCard.Select("姓名='" + DeleteName.ToString().Trim() + "'");
                        PersonCardCopy = PersonCard.Clone();
                        PersonCardCopy.ImportRow(rows[0]);
                        //删除此人
                       foreach(DataRow row in rows )
                       {
                           PersonCard.Rows.Remove(row);  
                       }
                        //显示删除后的数据
                       foreach (DataRow dataRows in PersonCard.Rows)   //查询全部
                       {
                           Console.WriteLine(@"姓名:{0}   年龄:{1}   性别:{2}   爱好:{3}   电话:{4}   状态:{5}", dataRows["姓名"].ToString(),
                               dataRows["年龄"].ToString(), dataRows["性别"].ToString(), dataRows["爱好"].ToString(), dataRows["电话"].ToString(), dataRows["状态"].ToString());
                       }
                    }
                    if (command == 5)  //查找已删除信息
                    {
                        foreach (DataRow dataRows in PersonCardCopy.Rows)   //查询全部
                        {
                            Console.WriteLine(@"姓名:{0}   年龄:{1}   性别:{2}   爱好:{3}   电话:{4}   状态:{5}", dataRows["姓名"].ToString(),
                                dataRows["年龄"].ToString(), dataRows["性别"].ToString(), dataRows["爱好"].ToString(), dataRows["电话"].ToString(), dataRows["状态"].ToString());
                        }
                    }                
                }
                catch 
                {
                    Console.WriteLine("您输入的操作指令有误,请重新输入!");
                }
                Console.ReadLine();
            
            }
            while (command!= 1||command!= 2||command!= 3||command!= 4||command!= 5);
            Console.ReadKey();

 本系列教程:

C#基础总结之八面向对象知识点总结-继承与多态-接口-http://www.cnblogs.com/spring_wang/p/6113531.html

C#基础总结之七面向对象知识点总结1http://www.cnblogs.com/spring_wang/p/6113526.html

C#基础总结之六 DataTable (临时表/数据源) 和Datatable 名片练习http://www.cnblogs.com/spring_wang/p/6113520.html

C#基础总结之五Dictionary<string, string[]>和while循环http://www.cnblogs.com/spring_wang/p/6113514.html

C#基础总结之四List-Hashtable-冒泡排序http://www.cnblogs.com/spring_wang/p/6113504.html

C#基础总结之三循环控制-for-数组-乘法表-arraylisthttp://www.cnblogs.com/spring_wang/p/6113496.html

C#基础总结之二循环控制-运算符http://www.cnblogs.com/spring_wang/p/6113484.html

C#基础总结之一变量常量-if嵌套语句-witch结构-类型转换http://www.cnblogs.com/spring_wang/p/6113476.html

C#基础课程之六(临时表)DataTable使用方法http://www.cnblogs.com/spring_wang/p/6113454.html

C#基础课程之五集合(HashTable,Dictionary)http://www.cnblogs.com/spring_wang/p/6113404.html

C#基础课程之四集合(ArrayList、List<泛型>)http://www.cnblogs.com/spring_wang/p/6113396.html

C#基础课程之三循环语句http://www.cnblogs.com/spring_wang/p/6113383.html

C#基础课程之二变量常量及流程控制http://www.cnblogs.com/spring_wang/p/6113372.html

C#基础课程之一注释和控制台、一些常识http://www.cnblogs.com/spring_wang/p/6113361.html

C#基础第九天-作业答案-储蓄账户(SavingAccount)和信用账户(CreditAccount) http://www.cnblogs.com/spring_wang/p/6113291.html

C#基础第九天-作业-储蓄账户(SavingAccount)和信用账户(CreditAccount) http://www.cnblogs.com/spring_wang/p/6113285.html

C#基础第八天-作业答案-设计类-面向对象方式实现两个帐户之间转账http://www.cnblogs.com/spring_wang/p/6113274.html

C#基础第八天-作业-设计类-面向对象方式实现两个帐户之间转账http://www.cnblogs.com/spring_wang/p/6113258.html

C#基础第七天-作业答案-利用面向对象的思想去实现名片-动态添加http://www.cnblogs.com/spring_wang/p/6113232.html

C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加http://www.cnblogs.com/spring_wang/p/6113224.html

C#基础第六天-作业-利用面向对象的思想去实现名片http://www.cnblogs.com/spring_wang/p/6113028.html

C#基础第六天-作业答案-利用面向对象的思想去实现名片http://www.cnblogs.com/spring_wang/p/6113033.html

C#基础第五天-作业答案-用DataTable制作名片集http://www.cnblogs.com/spring_wang/p/6113022.html

C#基础第五天-作业-用DataTable制作名片集http://www.cnblogs.com/spring_wang/p/6113013.html

C#基础第四天-作业答案-Hashtable-list<KeyValuePair>泛型实现名片http://www.cnblogs.com/spring_wang/p/6113005.html

C#基础第四天-作业-Hashtable-list<KeyValuePair>泛型实现名片http://www.cnblogs.com/spring_wang/p/6113000.html

C#基础第三天-作业答案-集合-冒泡排序-模拟名片http://www.cnblogs.com/spring_wang/p/6112888.html

C#基础第三天-作业-集合-冒泡排序-模拟名片http://www.cnblogs.com/spring_wang/p/6112885.html

C#基础第二天-作业答案-九九乘法表-打印星星http://www.cnblogs.com/spring_wang/p/6112881.html

C#基础第二天-作业-九九乘法表-打印星星http://www.cnblogs.com/spring_wang/p/6112875.html

C#基础第一天-作业答案http://www.cnblogs.com/spring_wang/p/6112872.html

C#基础第一天-作业http://www.cnblogs.com/spring_wang/p/6112867.html

C#-string.Format对C#字符串格式化http://www.cnblogs.com/spring_wang/p/6077098.html

原文地址:https://www.cnblogs.com/spring_wang/p/6113022.html