.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["状态"] = ""; Console.WriteLine("是否提交该条信息,t/f");
string submit=Console.ReadLine();
if (submit == "t") //提交信息,改变行状态
{
PersonRow["状态"] = " "; //赋值
}
else
{
PersonRow["状态"] = ""; //赋值
}
PersonCard.Rows.Add(PersonRow); //向表中增加行
Console.WriteLine("是否继续增加人员信息,y/n");
Stop = Console.ReadLine();
}
while (Stop != "n");
int command= ; //变量 操作指令
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 ==) //查询全部
{
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 ==) //单个查询
{
try
{
Console.WriteLine("请输入您要查询的人员姓名");
NameFind = Console.ReadLine();
DataRow[] dataRows = PersonCard.Select("姓名='" + NameFind + "'"); //根据从NameFind中获取的值在DataTable中查询行数据
Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4}",
dataRows[]["姓名"], dataRows[]["年龄"], dataRows[]["性别"], dataRows[]["爱好"], dataRows[]["电话"]);//显示获取的第0行“Name”列的值
}
catch
{
Console.WriteLine("对不起,没有您要查找的人员!");
}
Console.ReadLine();
}
if (command == ) //修改信息
{
//判断是否存在此人
Console.WriteLine("请输入您要修改的人员");
Name = Console.ReadLine();
if (PersonCard.Select("姓名='" + Name + "'").Length == )
{
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["状态"] = "";
}
//获取修改后的人员信息
foreach (DataRow row in rows)
{
Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4}",
row[].ToString(), row[].ToString(), row[].ToString(), row[].ToString(), row[].ToString());//显示获取的第0行“Name”列的值
}
}
if (command == ) //删除信息
{
//判断是否存在此人
Console.WriteLine("请输入您要的删除的人员");
string DeleteName = Console.ReadLine();
if (PersonCard.Select("姓名='" + DeleteName + "'").Length == )
{
Console.WriteLine("查询不到您要修改的人员");
continue;
}
//获取要删除人员的行信息,存入到另一个Datatable中
DataRow[] rows = PersonCard.Select("姓名='" + DeleteName.ToString().Trim() + "'");
PersonCardCopy = PersonCard.Clone();
PersonCardCopy.ImportRow(rows[]);
//删除此人
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 == ) //查找已删除信息
{
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!= ||command!= ||command!= ||command!= ||command!= );
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

C#基础第五天-作业答案-用DataTable制作名片集的更多相关文章

  1. C#基础第七天-作业答案-利用面向对象的思想去实现名片-动态添加

    class Card { private string name; public string Name { get { return name; } set { name = value; } } ...

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

    1.用DataTable集合去实现名片集.(增加,修改,删除,查询,查询全部)需求:根据人名去(删除/查询).指定列:姓名,年龄,性别,爱好,电话. 本系列教程: C#基础总结之八面向对象知识点总结- ...

  3. C#基础第四天-作业答案-Hashtable-list<KeyValuePair>泛型实现名片

    .Hashtable 实现 Hashtable table = new Hashtable(); while (true) { Console.WriteLine("------------ ...

  4. C#基础第三天-作业答案-集合-冒泡排序-模拟名片

    .冒泡排序 Console.WriteLine("对集合里的数进行排序,请输入第一个数:"); int a = int.Parse(Console.ReadLine()); Con ...

  5. C语言基础第五次作业

    题目7-2 统计一行文本的单词个数 1.实验代码 #include <stdio.h> int main() { char a; ,countword=; ){ scanf("% ...

  6. 前端-JavaScript2-1——JavaScript基础复习及上次作业答案

    昨天讲解的JS是编程最最简单的一些基础知识,复习一下: JavaScript书写环境,<script>标签 1    <script type=”text/javascript”&g ...

  7. C#基础第九天-作业答案-储蓄账户(SavingAccount)和信用账户(CreditAccount)

    class Bank { //Dictionary<long,Account> dictionary=new Dictionary<long,Account>(); DataT ...

  8. C#基础第八天-作业答案-设计类-面向对象方式实现两个帐户之间转账

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. C#基础第六天-作业答案-利用面向对象的思想去实现名片

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

随机推荐

  1. vmware备份

    http://wenku.baidu.com/view/fc317dcc050876323112128d.html vmware vcb文档 http://www.docin.com/p-423555 ...

  2. 忘记MySQL root密码重置MySQL root密码

    (1)停止mysql# /etc/init.d/mysql stop(2)以不检查权限的方式启动# mysqld --skip-grant-tables &(3)登录mysql修改root用户 ...

  3. linux 新进程的创建

    慕课18原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.背景知识: 1. ...

  4. C语言操作Redis总结

    #include "hiredis.h" #define NO_QFORKIMPL #pragma comment(lib,"hiredis.lib") #pr ...

  5. JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134851.html 在开发过程中,经常做的一件事,也是最基本的事,就是从数据库中查询数据,然后在客户端显示出 ...

  6. java 线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告

    线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告.下面是一个自定义的终止策略类,继承了ThreadPoolExecutor.AbortPolicy类并覆盖了rejectedExecution方法把 ...

  7. uva 1658 Admiral (最小费最大流)

    uva 1658 Admiral 题目大意:在图中找出两条没有交集的线路,要求这两条线路的费用最小. 解题思路:还是拆点建图的问题. 首先每一个点都要拆成两个点.比如a点拆成a->a'.起点和终 ...

  8. 通过Navicat Premium迁移Oracle到EDB迁移实战

    1.1 DB migration analysis   在从Oracle向EDB迁移数据之前,须要做非常多准备工作.比方须要分析源数据库数据量大小.数据是否稳定.异构数据库兼容.编码方式.业务逻辑(存 ...

  9. vmware中的 CentOS7 虚机磁盘动态扩容

    0.在vmware的配置项中,将虚机的磁盘大小调大,步骤简单,此处略 查看当前状态 文件系统状态 df -h 磁盘状态 lsblkfdisk   -l  1.首先要再创建一个物理分区 (使用fdisk ...

  10. Android 百度鹰眼轨迹SDK(v2.1.6)

    闲聊 看过<鹰眼追击>这部电影的读者一定对"鹰眼"这台巨无霸计算机印象深刻,如今我们能够实现自己的鹰眼. 效果图 本篇为百度地图SDK第三篇博文 第一篇实现:Andro ...