using ConsoleApplication4.App_Code;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
while (true)
{
//学生信息展示
new StudentData().print();
//用户输入操作
Console.Write("请输入您要继续的操作(输入数字1为新增,输入数字2为修改,输入数字3为删除):");
string Do = Console.ReadLine();
//添加
#region 添加
if (Do == "")
{
try
{//用户输入信息
Student sti = new Student();
sti.Code = new StudentData().bianhao();
Console.WriteLine("学生编号为:" + sti.Code);
//循环输入姓名
sti.Name = new StudentData().name();
//循环输入性别
sti.Sex = new StudentData().sex();
//循环输入生日
sti.Birthday = new StudentData().birthday();
//循环输入专业
sti.SubjectCode = new StudentData().subject(); for (; ; )
{
//打印添加内容
Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t专业");
Console.WriteLine(sti.Code + "\t" + sti.Name + "\t" + sti.Sexstr + "\t" + sti.Birthdaystr + "\t" + sti.SubjectName);
Console.Write("以上为新增学生的信息,是否确定添加?(Y/N):");
string yn = Console.ReadLine();
//调用方法添加
if (yn == "Y")
{
new StudentData().insert(sti);
//清空前数据
Console.Clear();
Console.WriteLine("添加成功!");
break;
}
else if (yn == "N")
{
//清空前数据
Console.Clear();
Console.WriteLine("未添加成功!");
break;
}
else
{
Console.WriteLine("请正确输入指令!");
continue;
}
}
continue;
}
catch
{
//清空前数据
Console.Clear();
Console.WriteLine("添加失败,请重新输入!");
continue;
}
}
#endregion
//修改
#region 修改
else if (Do == "")
{
Console.Write("请输入修改学生编号:");
string sc = Console.ReadLine();
Student stupate = new Student();
StudentData stu = new StudentData();
if (stu.codesel(sc))
{
stupate.Code = sc;
try
{
List<Student> ulist = stu.selectcode(sc);
foreach (Student st in ulist)
{
Console.WriteLine(st.Code + "学生当前姓名为:" + st.Name);
stupate.Name = stu.name();
Console.WriteLine(st.Code + "学生当前性别为:" + st.Sexstr);
stupate.Sex = stu.sex();
Console.WriteLine(st.Code + "学生当前生日为:" + st.Birthdaystr);
stupate.Birthday = stu.birthday();
Console.WriteLine(st.Code + "学生当前专业为:" + st.SubjectName);
stupate.SubjectCode = stu.subject();
}
}
catch
{
//清除
Console.Clear();
Console.WriteLine("输入失败,请重新输入!");
continue;
}
}
else
{
//清除
Console.Clear();
Console.WriteLine("输入编号有误,请重新输入!");
continue;
} for (; ; )
{
//打印修改内容
Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t专业");
Console.WriteLine(stupate.Code + "\t" + stupate.Name + "\t" + stupate.Sexstr + "\t" + stupate.Birthdaystr + "\t" + stupate.SubjectName);
Console.Write("以上为查询学生的信息,是否确定修改?(Y/N):");
string yn = Console.ReadLine();
//调用方法修改
if (yn == "Y")
{
new StudentData().update(stupate);
//清空前数据
Console.Clear();
Console.WriteLine("添加成功!");
break;
}
else if (yn == "N")
{
//清空前数据
Console.Clear();
Console.WriteLine("未添加成功!");
break;
}
else
{
Console.WriteLine("请正确输入指令!");
continue;
}
} continue; }
#endregion
//删除
#region 删除
else if (Do == "")
{
Console.Write("请输入学生编号:");
string a = Console.ReadLine();
StudentData std = new StudentData();
if (std.codesel(a))
{
List<Student> dlist = std.selectcode(a);
foreach (Student st in dlist)
{
Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t专业");
Console.WriteLine(st.Code + "\t" + st.Name + "\t" + st.Sexstr + "\t" + st.Birthdaystr + "\t" + st.SubjectName);
} for (; ; )
{
Console.Write("以上为查询学生的信息,是否确定删除?(Y/N):");
string yn = Console.ReadLine();
//调用方法删除
if (yn == "Y")
{
std.delete(a);
//清空前数据
Console.Clear();
Console.WriteLine("删除成功!");
break;
}
else if (yn == "N")
{
//清空前数据
Console.Clear();
Console.WriteLine("删除失败");
break;
}
else
{
Console.WriteLine("请正确输入指令!");
continue;
}
}
continue;
} else
{
Console.Clear();
Console.WriteLine("输入编号有误,请重新输入!");
continue;
}
}
#endregion
//错误提醒
else
{
//清除
Console.Clear();
Console.WriteLine("请正确输入操作数字!!");
continue;
}
Console.ReadLine();
}
}
}
}

C#端代码

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text; namespace ConsoleApplication4.App_Code
{
public class StudentData
{
//数据库定义变量
SqlConnection conn = null;
SqlCommand cmd = null;
//构造函数
public StudentData()
{
conn = new SqlConnection("server=.;database=ADO;user=sa;pwd=123456");
cmd = conn.CreateCommand();
}
//查询全部方法创建
public List<Student> SelectAll()
{
List<Student> slist = new List<Student>();
cmd.CommandText = "select*from Student order by Code asc";
try
{
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Student st = new Student();
st.Code = dr["Code"].ToString();
st.Name = dr["Name"].ToString();
st.Sex = Convert.ToBoolean(dr["Sex"]);
st.Birthday = Convert.ToDateTime(dr["Birthday"]);
st.SubjectCode = dr["SubjectCode"].ToString(); slist.Add(st);
}
}
catch
{
Student st = new Student();
st.Code = "数据加载失败!!";
st.Name = "StudentError500";
slist.Add(st);
}
finally
{
conn.Close();
}
return slist;
}
//查询打印全部方法
public void print()
{
Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t专业");
//遍历数据打印
StudentData st = new StudentData();
List<Student> sd = st.SelectAll();
int count = ;
int sum = ;
foreach (Student s in sd)
{
Console.WriteLine(s.Code + "\t" + s.Name + "\t" + s.Sexstr + "\t" + s.Age + "\t" + s.Birthdaystr + "\t" + s.SubjectName);
count++;
sum += s.Age;
}
double avg = sum / count;
Console.WriteLine("统计:总人数为" + count + "人,平均年龄为" + avg + "岁。");
}
//编号查询打印方法
public List<Student> selectcode(string a)
{
List<Student> slist = new List<Student>();
cmd.CommandText = "select *from Student where Code=@Code";
cmd.Parameters.AddWithValue("@Code", a);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
Student st = new Student();
dr.Read();
st.Code = dr["Code"].ToString();
st.Name = dr["Name"].ToString();
st.Sex = Convert.ToBoolean(dr["Sex"]);
st.Birthday = Convert.ToDateTime(dr["Birthday"]);
st.SubjectCode = dr["SubjectCode"].ToString(); slist.Add(st);
}
conn.Close();
return slist;
}
//查询是否存在编号
public bool codesel(string a)
{
bool end = false;
cmd.CommandText = "select *from Student where Code=@a";
cmd.Parameters.AddWithValue("@a", a);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
end = true;
}
conn.Close();
return end;
}
//添加
public void insert(Student st)
{
cmd.CommandText = "insert into Student values(@a,@b,@c,@d,@e)";
cmd.Parameters.AddWithValue("@a", st.Code);
cmd.Parameters.AddWithValue("@b", st.Name);
cmd.Parameters.AddWithValue("@c", st.Sex);
cmd.Parameters.AddWithValue("@d", st.Birthday);
cmd.Parameters.AddWithValue("@e", st.SubjectCode); conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
//添加条件方法
//姓名判断
public string name()
{
string end = null;
for (; ; )
{
Console.Write("请输入姓名(不能为空):");
string a = Console.ReadLine();
if (a == null)
{
Console.WriteLine("输入姓名有误请重新输入!");
continue;
}
else
{
end = a;
break;
}
}
return end;
}
//性别判断
public bool sex()
{
bool end = false;
for (; ; )
{
Console.Write("请输入性别(男/女):");
string a = Console.ReadLine();
if (a == "男")
{
end = true;
break;
}
else if (a == "女")
{
break;
}
else
{
Console.WriteLine("输入有误请重新输入!");
}
}
return end;
}
//生日判断
public DateTime birthday()
{
DateTime end = new DateTime();
for (; ; )
{
Console.Write("请输入生日(如:2000/12/12):");
string a = Console.ReadLine();
try
{
end = Convert.ToDateTime(a);
break;
}
catch
{
Console.WriteLine("输入生日有误请重新输入!");
}
}
return end;
}
//专业判断
public string subject()
{
string end = null;
for (; ; )
{
Console.Write("请输入专业:");
string a = Console.ReadLine();
//调用方法判断专业s
if (new SubjectData().selectsub(a))
{
end = new SubjectData().selectsubC(a);
break;
}
else
{
Console.WriteLine("没有此专业");
}
}
return end;
}
//编号自动生成方法
public string bianhao()
{
string a = null;
cmd.CommandText = "select Code from Student order by Code desc";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string b = dr[].ToString().Substring();
a = "S" + ((Convert.ToInt32(b) + ).ToString(""));
}
conn.Close();
return a;
}
//修改
public void update(Student st)
{
cmd.CommandText = "update Student set Name=@b,Sex=@c,Birthday=@d,SubjectCode=@e where Code=@uCode";
cmd.Parameters.AddWithValue("@uCode", st.Code);
cmd.Parameters.AddWithValue("@b", st.Name);
cmd.Parameters.AddWithValue("@c", st.Sex);
cmd.Parameters.AddWithValue("@d", st.Birthday);
cmd.Parameters.AddWithValue("@e", st.SubjectCode);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
//删除
public void delete(string a)
{
cmd.CommandText = "delete from Student where Code=@dcode";
cmd.Parameters.AddWithValue("@dcode",a);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
} }
}

StudentData

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication4.App_Code
{
public class Subject
{
private string _SubjectCode; public string SubjectCode
{
get { return _SubjectCode; }
set { _SubjectCode = value; }
}
private string _SubjectName; public string SubjectName
{
get { return _SubjectName; }
set { _SubjectName = value; }
}
}
}

Subject

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text; namespace ConsoleApplication4.App_Code
{
public class SubjectData
{
SqlConnection conn = null;
SqlCommand cmd = null;
public SubjectData()
{
conn = new SqlConnection("server=.;database=ADO;user=sa;pwd=123456;");
cmd = conn.CreateCommand();
}
//由编号查询专业名称
public string SubselectAll(string SubCode)
{
string end = "<暂无>";
cmd.CommandText = "select *from Subject where SubjectCode = @a";
cmd.Parameters.AddWithValue("@a",SubCode);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
try
{
if (dr.HasRows)
{
dr.Read();
end = dr["SubjectName"].ToString();
}
}
catch { }
finally { conn.Close(); }
return end;
}
//由名称查询专业编号
//是否有
public bool selectsub(string bsub)
{
bool end = false;
cmd.CommandText = "select SubjectCode from Subject where SubjectName like '%"+bsub+"%' ";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
end = true;
}
conn.Close();
return end;
}
//返回查询编号
public string selectsubC(string ssub)
{
string end = "暂无";
cmd.CommandText = "select SubjectCode from Subject where SubjectName like '%"+ssub+"%' ";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
end = dr["SubjectCode"].ToString();
}
conn.Close();
return end;
}
}
}

SubjectData

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication4.App_Code
{
public class Student
{
private string _Code; public string Code
{
get { return _Code; }
set { _Code = value; }
}
private string _Name; public string Name
{
get { return _Name; }
set { _Name = value; }
}
private bool _Sex; public bool Sex
{
get { return _Sex; }
set { _Sex = value; }
}
//性别扩展
public string Sexstr
{
get { return _Sex ? "男" : "女"; }
}
private DateTime _Birthday; public DateTime Birthday
{
get { return _Birthday; }
set { _Birthday = value; }
}
//生日扩展
public string Birthdaystr
{
get { return _Birthday.ToString("yyyy年MM月dd日"); }
}
//年龄扩展
public int Age
{
get { return DateTime.Now.Year - _Birthday.Year; }
}
private string _SubjectCode; public string SubjectCode
{
get { return _SubjectCode; }
set { _SubjectCode = value; }
}
//扩展专业名称
public string SubjectName
{
get { return new SubjectData().SubselectAll(_SubjectCode); }
}
}
}

Student

题目要求:

ADO.NET测试题

第一部分:

新建一个数据库:ADO测试,包含下面两个数据表,使用代码创建,并保留创建的代码文本。

学生表Student:

编号(Code):nvarchar类型,不能为空,主键

姓名(Name):nvarchar类型,不能为空

性别(Sex):bit类型,不能为空,true为男,false为女

生日(Birthday):datetime类型,不能为空

专业编号(SubjectCode):nvarchar类型,可以为空

Code(主键)

Name

Sex

Birthday

SubjectCode

S001

张三

true

1994/1/12

Z001

S002

李四

true

1995/2/22

Z002

S003

王五

true

1996/8/28

Z002

S004

小花

false

1997/3/6

Z003

专业表Subject:

专业编号(SubjectCode):nvarchar类型,不能为空,主键

专业名称(SubjectName):nvarchar类型,不能为空

SubjectCode(主键)

SubjectName

Z001

商务英语

Z002

软件工程

Z003

旅游

Z004

工商管理

第二部分:

新建一个控制台应用程序:

一、数据显示:

将Student表数据查询显示,显示格式为:

编号   姓名   性别   年龄         生日            专业

001   张三    男     22   1994年1月12日     商务英语

……

……

统计:总人数为xx人,平均年龄为xx岁。

性别显示为男/女(true为男,false为女),自动计算出年龄,生日显示为“XXXX年XX月XX日”,专业显示专业编号对应的专业名称,注意最后一行的统计内容要显示完整。

二、功能操作:

在上面的基础上增加功能,表数据显示完毕后,提示用户可以继续操作:

“请输入您要继续的操作(输入数字1为新增,输入数字2为修改,输入数字3为删除):”,输入其它内容提示输入有误,并回到上面继续等待用户操作。

三、新增:

当用户输入1并回车后,按照顺序让用户分别输入:学生编号,学生姓名,性别,生日,专业等内容,格式为:

学生编号(自动生成):S001

请输入学生姓名(不能为空):

请输入学生性别(男/女):

请输入学生生日(如:2000/12/12):

请输入专业:

每次输入都需要做以下判断,如果输入不正确,则提示输入有误,并让用户重新输入:

1、学生编号不允许重复

2、学生姓名不能为空

3、性别只能输入男/女,并自动转换为true/false

4、生日格式是否是正确

5、专业需要用户输入中文,如:当用户输入“商务英语”或“英语”,自动查到“Z001”专业编号,如果查不到则提示“没有此专业”

当以上内容全部填写完毕并无误后,将此学生信息打印显示出来,并询问用户“以上为新增学生的信息,是否确定添加?(Y/N):”,当用户输入Y确定添加后,才进行添加,如果添加成功,则将控制台程序清空,并刷新显示最新的Student表数据,提示添加成功,并继续回到“二”等待用户继续操作。

四、修改:

当用户输入2并回车时,提示用户输入需要更改的学生编号,如果有此学生,那么除学生编号外,其余的内容全部进行修改,格式为:

S001学生当前姓名为:张三

请输入您的修改:

S001学生当前的性别为:男

请输入您的修改:

……

每次修改后都需要与新增时一样的判断,当全部内容都修改完毕后,将修改后的学生信息打印显示出来,并询问“以上为修改后的学生信息,是否确定修改?(Y/N):”,当用户输入Y并回车才真正确定修改,并提示修改是否成功,如果修改成功,则清空控制台内容,刷新显示最新的Student表数据,并提示修改成功,继续回到“二”等待用户继续操作。

五、删除:

当用户输入3并回车时,提示用户输入需要删除的学生编号,如果有此学生,那么将此学生的信息展示出来,并提示“是否要删除此学生的信息?(Y/N)”,当用户输入Y确定删除后,才进行删除,并提示删除是否成功,如果删除成功,则清空控制台内容,刷新显示最新的Student表数据,并提示删除成功,继续回到“二”等待用户继续操作。

ADO.net之综合演练的更多相关文章

  1. C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 呃 也有半 ...

  2. SILVERLIGHT 应急卫生模拟演练项目之loading界面实现

    第一次在博客园写文章 俺是菜鸟 有不足之处还请大佬们多多指教 第一次也不知道该写啥 俺就拿自己最近做的一个项目 来细说吧 俺们公司是做医疗卫生方面的  其中有一块涉及到应急卫生模拟演练方面 这块分到我 ...

  3. C#与数据库访问技术总结(十八)

    ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库 ...

  4. 大学生IT博客大赛最技术50强与最生活10强文章

    姓名 学校 文章标题 文章地址 刘成伟 井冈山大学 [mystery]-linux黑客之网络嗅探底层原理 http://infohacker.blog.51cto.com/6751239/115511 ...

  5. 【2-23】分支语句(switch…case)及循环语句

    Switch-case分支语句与if语句作用相同,但需将情况都罗列出比较麻烦所以不常用. 其基本结构是: Switch(一个变量值) { Case 值1:要执行的代码段:break; Case 值2: ...

  6. 【2017-2-17】VS基本应用及C#基础第一节(定义变量、输入及输出)

    一VS基本应用 (一)新建项目 新建项目可有多种方法例如: 1.  在VS起始页面建立新项目 2.  在集成环境中,通过"文件"/"新建"/"项目&q ...

  7. 构建微服务开发环境8————Hello 微服务

    [内容指引] 1.用IDEA打开微服务项目; 2.更新Maven依赖: 3.IntelliJ IDEA JDK配置; 4.修改代码: 5.运行微服务: 6.将代码变更提交到Github. 经过前面的努 ...

  8. Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! WebFlux 系列教程大纲 一.背景 大家都知道,Sprin ...

  9. C# 使用Xamarin开发Android应用程序

    C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) 摘要: 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://gi ...

随机推荐

  1. Gradle详细解析***

    前言 对于Android工程师来说编译/打包等问题立即就成痛点了.一个APP有多个版本,Release版.Debug版.Test版.甚至针对不同APP Store都有不同的版本.在以前ROM的环境下, ...

  2. 黄聪:PHP如何实现延迟一定时间后自动刷新当前页面、自动跳转header("refresh:1;url={$url}");

    //1秒后自动跳转 header("refresh:1;url={$url}"); exit; //1秒后自动刷新当前页面header("refresh:1;" ...

  3. Socket.io各个发送消息的含义【发送对象范围】

    Socket.io各个发送消息的含义   // send to current request socket client socket.emit('message', "this is a ...

  4. HP Gen8,9 型号系列服务器更换主板

    更换主板前,记下如下信息,根据具体情况用于更换后的设置用.1.S/N (其实主机箱上会写有,更换后重置)2.ProductID (其实主机箱上会写有,更换后重置)3.iLO IP地址或者MAC地址(根 ...

  5. Tablacus Explorer双心封装版

    Tablacus Explorer双心封装版 http://cloud.189.cn/t/mYj67j7r2Afq (TablacusExplorer17.3.27双心封装版.exe) http:// ...

  6. 【mysql】linux查看mysql配置文件my.conf

    mysql --help|grep 'my.cnf' /etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.my.cnf 这些就是mysq ...

  7. 【mysql】索引优化记录

    基础知识 Innodb存储引擎 支持行锁 支持事务: Myisam存储引擎 只支持表锁: 不支持事务: 常见索引列表 独立的列 前缀索引(索引选择性) 多列索引(并不是多个单列索引,索引顺序很重要) ...

  8. Java学习——Applet菜单

    程序功能:在窗口中添加菜单栏,在菜单栏添加菜单项,并添加下拉菜单和 2 级菜单,通过选择菜单项可以执行不同操作,生成如下图所示窗口. package cys; import java.awt.*; i ...

  9. 学习笔记之The Intelligent Investor, Rev. Ed

    The Intelligent Investor, Rev. Ed https://www.safaribooksonline.com/library/view/the-intelligent-inv ...

  10. 【转】十年你能做的能得到的有多少?一个工科IT男的工作回忆

    https://blog.csdn.net/b5w2p0/article/details/8798989