1. .DataTable 实现
  2.  
  3. DataTable PersonCard = new DataTable(); //创建一个DataTable
  4. DataTable PersonCardCopy = new DataTable();
  5. PersonCard.Columns.Add("姓名"); //添加列 名称
  6. PersonCard.Columns.Add("年龄"); //添加列 年龄
  7. PersonCard.Columns.Add("性别"); //添加列 性别
  8. PersonCard.Columns.Add("爱好"); //添加列 爱好
  9. PersonCard.Columns.Add("电话"); //添加列 电话
  10. PersonCard.Columns.Add("状态"); //添加列 状态 (1新增 2修改)
  11. string Stop = string.Empty; //控制循环停止
  12. do
  13. {
  14. Console.WriteLine("请输入您的姓名");
  15. string name = Console.ReadLine(); //获取输入信息
  16. Console.WriteLine("请输入您的年龄");
  17. string age = Console.ReadLine();
  18. Console.WriteLine("请输入您的性别");
  19. string sex = Console.ReadLine();
  20. Console.WriteLine("请输入您的爱好");
  21. string hobby = Console.ReadLine();
  22. Console.WriteLine("请输入您的联系方式");
  23. string phone = Console.ReadLine();
  24.  
  25. DataRow PersonRow = PersonCard.NewRow(); //实例化表行
  26. PersonRow["姓名"] = name; //给表行按列名增加信息
  27. PersonRow["年龄"] = age;
  28. PersonRow["性别"] = sex;
  29. PersonRow["爱好"] = hobby;
  30. PersonRow["电话"] = phone;
  31. PersonRow["状态"] = "";
  32.  
  33. Console.WriteLine("是否提交该条信息,t/f");
  34. string submit=Console.ReadLine();
  35. if (submit == "t") //提交信息,改变行状态
  36. {
  37. PersonRow["状态"] = " "; //赋值
  38. }
  39. else
  40. {
  41. PersonRow["状态"] = ""; //赋值
  42. }
  43. PersonCard.Rows.Add(PersonRow); //向表中增加行
  44. Console.WriteLine("是否继续增加人员信息,y/n");
  45. Stop = Console.ReadLine();
  46. }
  47. while (Stop != "n");
  48. int command= ; //变量 操作指令
  49. string NameFind = string.Empty; //查询人员
  50. string Name= string.Empty; //修改人员
  51. string Lie = string.Empty; //修改的列
  52. string UpdateMessage = string.Empty;
  53. do
  54. {
  55. try
  56. {
  57. Console.WriteLine("请输入操作指令(1查询全部 2单个查询 3修改信息 4删除信息 5查找已经删除信息)");
  58. command = Convert.ToInt32(Console.ReadLine());
  59. if (command ==) //查询全部
  60. {
  61. foreach (DataRow dataRows in PersonCard.Rows) //查询全部
  62. {
  63. Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4} 状态:{5}", dataRows["姓名"].ToString(),
  64. dataRows["年龄"].ToString(), dataRows["性别"].ToString(), dataRows["爱好"].ToString(), dataRows["电话"].ToString(), dataRows["状态"].ToString());
  65. }
  66. }
  67. if (command ==) //单个查询
  68. {
  69. try
  70. {
  71. Console.WriteLine("请输入您要查询的人员姓名");
  72. NameFind = Console.ReadLine();
  73. DataRow[] dataRows = PersonCard.Select("姓名='" + NameFind + "'"); //根据从NameFind中获取的值在DataTable中查询行数据
  74. Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4}",
  75. dataRows[]["姓名"], dataRows[]["年龄"], dataRows[]["性别"], dataRows[]["爱好"], dataRows[]["电话"]);//显示获取的第0行“Name”列的值
  76. }
  77. catch
  78. {
  79. Console.WriteLine("对不起,没有您要查找的人员!");
  80. }
  81. Console.ReadLine();
  82. }
  83. if (command == ) //修改信息
  84. {
  85. //判断是否存在此人
  86. Console.WriteLine("请输入您要修改的人员");
  87. Name = Console.ReadLine();
  88. if (PersonCard.Select("姓名='" + Name + "'").Length == )
  89. {
  90. Console.WriteLine("查询不到您要修改的人员");
  91. continue;
  92. }
  93. //获取人员信息
  94. DataRow[] rows = PersonCard.Select("姓名='" + Name.ToString().Trim() + "'");
  95. //判断是否存在要修改的列
  96. Console.WriteLine("请输入您要修改列");
  97. Lie = Console.ReadLine();
  98. if (!PersonCard.Columns.Contains(Lie)) //没有这列
  99. {
  100. Console.WriteLine("查询不到您要修改的列");
  101. continue;
  102. }
  103. //修改内容
  104. Console.WriteLine("请输入您修改后的内容");
  105. string message = Console.ReadLine();
  106. foreach (DataRow row in rows)
  107. {
  108. row[Lie] = message;
  109. row["状态"] = "";
  110. }
  111. //获取修改后的人员信息
  112. foreach (DataRow row in rows)
  113. {
  114. Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4}",
  115. row[].ToString(), row[].ToString(), row[].ToString(), row[].ToString(), row[].ToString());//显示获取的第0行“Name”列的值
  116. }
  117. }
  118. if (command == ) //删除信息
  119. {
  120. //判断是否存在此人
  121. Console.WriteLine("请输入您要的删除的人员");
  122. string DeleteName = Console.ReadLine();
  123. if (PersonCard.Select("姓名='" + DeleteName + "'").Length == )
  124. {
  125. Console.WriteLine("查询不到您要修改的人员");
  126. continue;
  127. }
  128. //获取要删除人员的行信息,存入到另一个Datatable中
  129. DataRow[] rows = PersonCard.Select("姓名='" + DeleteName.ToString().Trim() + "'");
  130. PersonCardCopy = PersonCard.Clone();
  131. PersonCardCopy.ImportRow(rows[]);
  132. //删除此人
  133. foreach(DataRow row in rows )
  134. {
  135. PersonCard.Rows.Remove(row);
  136. }
  137. //显示删除后的数据
  138. foreach (DataRow dataRows in PersonCard.Rows) //查询全部
  139. {
  140. Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4} 状态:{5}", dataRows["姓名"].ToString(),
  141. dataRows["年龄"].ToString(), dataRows["性别"].ToString(), dataRows["爱好"].ToString(), dataRows["电话"].ToString(), dataRows["状态"].ToString());
  142. }
  143. }
  144. if (command == ) //查找已删除信息
  145. {
  146. foreach (DataRow dataRows in PersonCardCopy.Rows) //查询全部
  147. {
  148. Console.WriteLine(@"姓名:{0} 年龄:{1} 性别:{2} 爱好:{3} 电话:{4} 状态:{5}", dataRows["姓名"].ToString(),
  149. dataRows["年龄"].ToString(), dataRows["性别"].ToString(), dataRows["爱好"].ToString(), dataRows["电话"].ToString(), dataRows["状态"].ToString());
  150. }
  151. }
  152. }
  153. catch
  154. {
  155. Console.WriteLine("您输入的操作指令有误,请重新输入!");
  156. }
  157. Console.ReadLine();
  158.  
  159. }
  160. while (command!= ||command!= ||command!= ||command!= ||command!= );
  161. 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. WCF服务引用之后自动生成的泛型代理类名称太长的解决方案

    问题:WCF服务引用之后会将原来的泛型类自动生成一个代理类,但是有时候名称太长怎么办? 解决方案: 1.方案一: 调用客户端同样也引用这个泛型类的类库. 2.方案二: 找到这个泛型类,然后在上面的[D ...

  2. c++10进制转换为任意2-16进制数字

    #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; int m ...

  3. 火狐浏览器flash经常奔溃的

    火狐浏览器flash经常奔溃的 1.首先,在火狐浏览器地址栏在输入:about:config?filter=dom.ipc.plugins.flash.disable-protected-mode,按 ...

  4. Android学习笔记六:六大布局

    六大界面布局方式包括: 线性布局(LinearLayout).帧布局(FrameLayout).表格布局(TableLayout).相对布局(RelativeLayout).绝对布局(Absolute ...

  5. Python接收邮件并保存至MySQL

    转自:http://www.360doc.com/content/14/0103/13/11789990_342303735.shtml 参考了一些网络上的资料,做了个简单程序,使用python接收邮 ...

  6. Mongodb对数据库(DB)的常用操作

    1.查看所有库 show dbs 2.切换数据库/新建数据库 use mydb 3.查看当前库 db 需要注意的是:<use 新库>这个命令并不会马上建立真正的实体库,只有往里面插入数据的 ...

  7. Spring-security-Oauth2.0

    上周,我想开发OAuth 2.0的一个实例.我检查了Spring-security-Oauth2.0的样例,OAuth 2提供商sparklr2和OAuth 2客户端TONR .我探索在互联网上了一下 ...

  8. 编程算法 - 迷宫的最短路径 代码(C++)

    迷宫的最短路径 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 给定一个大小为N*M的迷宫. 迷宫由通道和墙壁组成, 每一步能够向邻接的上下 ...

  9. Oracle用分区表分区交换做历史数据迁移

    一. 说明: OLTP库中有些表数据量大,且每月有持续的大量数据添加.因为历史数据在此库中不再做訪问,而是在另1个OLAP库中做分析.所以会对历史数据迁移至OLAP库中.对这样的历史数据迁移的操作.较 ...

  10. CreateDialog 注意事项

    CreateDialog创建非模态对话框时 其内部 会发送几条消息例如: WM_INITDIALOG,WM_SETFONT  DS_SETFONT , DS_SHELLFONT. 所以如果在另一个Ca ...