ADO.net之综合演练
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之综合演练的更多相关文章
- C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 呃 也有半 ...
- SILVERLIGHT 应急卫生模拟演练项目之loading界面实现
第一次在博客园写文章 俺是菜鸟 有不足之处还请大佬们多多指教 第一次也不知道该写啥 俺就拿自己最近做的一个项目 来细说吧 俺们公司是做医疗卫生方面的 其中有一块涉及到应急卫生模拟演练方面 这块分到我 ...
- C#与数据库访问技术总结(十八)
ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库 ...
- 大学生IT博客大赛最技术50强与最生活10强文章
姓名 学校 文章标题 文章地址 刘成伟 井冈山大学 [mystery]-linux黑客之网络嗅探底层原理 http://infohacker.blog.51cto.com/6751239/115511 ...
- 【2-23】分支语句(switch…case)及循环语句
Switch-case分支语句与if语句作用相同,但需将情况都罗列出比较麻烦所以不常用. 其基本结构是: Switch(一个变量值) { Case 值1:要执行的代码段:break; Case 值2: ...
- 【2017-2-17】VS基本应用及C#基础第一节(定义变量、输入及输出)
一VS基本应用 (一)新建项目 新建项目可有多种方法例如: 1. 在VS起始页面建立新项目 2. 在集成环境中,通过"文件"/"新建"/"项目&q ...
- 构建微服务开发环境8————Hello 微服务
[内容指引] 1.用IDEA打开微服务项目; 2.更新Maven依赖: 3.IntelliJ IDEA JDK配置; 4.修改代码: 5.运行微服务: 6.将代码变更提交到Github. 经过前面的努 ...
- Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! WebFlux 系列教程大纲 一.背景 大家都知道,Sprin ...
- C# 使用Xamarin开发Android应用程序
C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) 摘要: 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://gi ...
随机推荐
- Gradle详细解析***
前言 对于Android工程师来说编译/打包等问题立即就成痛点了.一个APP有多个版本,Release版.Debug版.Test版.甚至针对不同APP Store都有不同的版本.在以前ROM的环境下, ...
- 黄聪:PHP如何实现延迟一定时间后自动刷新当前页面、自动跳转header("refresh:1;url={$url}");
//1秒后自动跳转 header("refresh:1;url={$url}"); exit; //1秒后自动刷新当前页面header("refresh:1;" ...
- Socket.io各个发送消息的含义【发送对象范围】
Socket.io各个发送消息的含义 // send to current request socket client socket.emit('message', "this is a ...
- HP Gen8,9 型号系列服务器更换主板
更换主板前,记下如下信息,根据具体情况用于更换后的设置用.1.S/N (其实主机箱上会写有,更换后重置)2.ProductID (其实主机箱上会写有,更换后重置)3.iLO IP地址或者MAC地址(根 ...
- Tablacus Explorer双心封装版
Tablacus Explorer双心封装版 http://cloud.189.cn/t/mYj67j7r2Afq (TablacusExplorer17.3.27双心封装版.exe) http:// ...
- 【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 ...
- 【mysql】索引优化记录
基础知识 Innodb存储引擎 支持行锁 支持事务: Myisam存储引擎 只支持表锁: 不支持事务: 常见索引列表 独立的列 前缀索引(索引选择性) 多列索引(并不是多个单列索引,索引顺序很重要) ...
- Java学习——Applet菜单
程序功能:在窗口中添加菜单栏,在菜单栏添加菜单项,并添加下拉菜单和 2 级菜单,通过选择菜单项可以执行不同操作,生成如下图所示窗口. package cys; import java.awt.*; i ...
- 学习笔记之The Intelligent Investor, Rev. Ed
The Intelligent Investor, Rev. Ed https://www.safaribooksonline.com/library/view/the-intelligent-inv ...
- 【转】十年你能做的能得到的有多少?一个工科IT男的工作回忆
https://blog.csdn.net/b5w2p0/article/details/8798989