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 == "1") { 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("编号 姓名 性别 年龄 生日 专业"); Console.WriteLine(sti.Code + " " + sti.Name + " " + sti.Sexstr + " " + sti.Birthdaystr + " " + 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 == "2") { 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("编号 姓名 性别 年龄 生日 专业"); Console.WriteLine(stupate.Code + " " + stupate.Name + " " + stupate.Sexstr + " " + stupate.Birthdaystr + " " + 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 == "3") { 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("编号 姓名 性别 年龄 生日 专业"); Console.WriteLine(st.Code + " " + st.Name + " " + st.Sexstr + " " + st.Birthdaystr + " " + 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(); } } } }
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("编号 姓名 性别 年龄 生日 专业"); //遍历数据打印 StudentData st = new StudentData(); List<Student> sd = st.SelectAll(); int count = 0; int sum = 0; foreach (Student s in sd) { Console.WriteLine(s.Code + " " + s.Name + " " + s.Sexstr + " " + s.Age + " " + s.Birthdaystr + " " + 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[0].ToString().Substring(1); a = "S" + ((Convert.ToInt32(b) + 1).ToString("000")); } 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(); } } }
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; } } } }
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; } } }
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); } } } }
题目要求:
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表数据,并提示删除成功,继续回到“二”等待用户继续操作。