一.创建数据库
create database ADO1 create table Student (Code nvarchar(200) primary key not null, Name nvarchar(200) not null, Sex bit not null, Birthday datetime not null, SubjectCode nvarchar(200), ) create table Subject (SubjectCode nvarchar(200) primary key not null, SubjectName nvarchar(200) not null, ) select *from Student select *from Subject insert into Student values('S001','张三',1,'1994-1-12','Z001'); insert into Student values('S002','李四',1,'1995-2-22','Z002'); insert into Student values('S003','王五',1,'1996-8-28','Z002'); insert into Student values('S004','小花',0,'1997-3-6','Z003'); insert into Subject values('Z001','商务英语'); insert into Subject values('Z002','软件工程'); insert into Subject values('Z003','旅游'); insert into Subject values('Z004','工商管理');
二.ADO.net
(1)实体类
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1.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.Linq; using System.Text; namespace ConsoleApplication1.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 SexDD { get { return _Sex ? "男" : "女"; } } private DateTime _Birthday; public DateTime Birthday { get { return _Birthday; } set { _Birthday = value; } } public string BirthdayDD { 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 SubjectCodeDD { get { return new SubjectData().Subname(_SubjectCode); } } } }
(2)数据访问类
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; namespace ConsoleApplication1.App_Code { public class SubjectData {//专业课程显示汉字名称 SqlConnection conn = null; SqlCommand cmd = null; public SubjectData() { conn = new SqlConnection("server=.;database=ADO1;user=sa;pwd=123;"); cmd = conn.CreateCommand(); } public string Subname(string s) { cmd.CommandText = "select*from Subject where SubjectCode=@a; "; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", s); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); String a = dr["SubjectName"].ToString(); conn.Close(); return a; } } }
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; namespace ConsoleApplication1.App_Code { public class StudentData { //关联数据库 SqlConnection conn = null; SqlCommand cmd = null; public StudentData() { conn = new SqlConnection("server=.;database=ADO1;user=sa;pwd=123;"); cmd = conn.CreateCommand(); } //查询表中所有数据 public List<Student> SeleAll() { List<Student> ls = new List<Student>(); cmd.CommandText = "select*from Student"; conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Student s = new Student(); s.Code = dr["Code"].ToString(); s.Name = dr["Name"].ToString(); s.Sex = Convert.ToBoolean(dr["Sex"]); s.Birthday = Convert.ToDateTime(dr["Birthday"]); s.SubjectCode = dr["SubjectCode"].ToString(); ls.Add(s); } conn.Close(); return ls; } //查询学生个数 public int SeleCout() { int a; cmd.CommandText = "select count(*) from Student"; conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); if (dr[0].ToString() != "") { a = Convert.ToInt32(dr[0]); } else { a = 0; } conn.Close(); return a; } //对学生编号进行自动排序 public void CodeAsc(int c) { string Code = null; int count = c; conn.Open(); for (int a = 0; a < count; a++) { Code = "S" + (a + 1).ToString("000"); cmd.CommandText = "update Student set Code='" + Code + "'where Name=(select top 1 Name from student where Name not in(select top " + a + " Name from student) );"; cmd.ExecuteNonQuery(); } conn.Close(); } //性别转换bool public bool Sxb(string a) { bool b = false; if (a == "男") { return b = true; } else { return b; } } //学生专业查询 public string SeleSub(string a) { a = "%" + a + "%"; cmd.CommandText = "select SubjectCode from Subject where SubjectName like @a"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", a); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); if (dr[0].ToString() != "") { a = (dr["SubjectCode"]).ToString(); } else { a = ""; } conn.Close(); return a; } //添加学生数据 public int StuAdd(Student a) { cmd.CommandText = "insert into Student values(@a,@b,@c,@d,@e)"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", a.Code); cmd.Parameters.AddWithValue("@b", a.Name); cmd.Parameters.AddWithValue("@c", a.Sex); cmd.Parameters.AddWithValue("@d", a.Birthday); cmd.Parameters.AddWithValue("@e", a.SubjectCode); conn.Open(); int b = cmd.ExecuteNonQuery(); conn.Close(); return b; } //查询有无该学生 public bool SeleStu(string a) { bool b = false; cmd.CommandText = "select Name from Student where Code=@a"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", a); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { b = true; } conn.Close(); return b; } //查询该学生信息 public Student SeleStux(string a) { List<Student> ls = new List<Student>(); cmd.CommandText = "select*from Student where Code=@a"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", a); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); Student s = new Student(); while (dr.Read()) { s.Code = dr["Code"].ToString(); s.Name = dr["Name"].ToString(); s.Sex = Convert.ToBoolean(dr["Sex"]); s.Birthday = Convert.ToDateTime(dr["Birthday"]); s.SubjectCode = dr["SubjectCode"].ToString(); } conn.Close(); return s; } //修改学生信息 public int StuCha(Student a) { cmd.CommandText = "update Student set Name=@a,Sex=@b,Birthday=@c,SubjectCode=@d where Code=@e"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", a.Name); cmd.Parameters.AddWithValue("@b", a.Sex); cmd.Parameters.AddWithValue("@c", a.Birthday); cmd.Parameters.AddWithValue("@d", a.SubjectCode); cmd.Parameters.AddWithValue("@e", a.Code); conn.Open(); int b = cmd.ExecuteNonQuery(); conn.Close(); return b; } //删除学生信息 public int StuDel(string a) { cmd.CommandText = "delete from Student where Code=@a"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@a", a); conn.Open(); int b = cmd.ExecuteNonQuery(); conn.Close(); return b; } } }
(3)主页面
using System; using System.Collections.Generic; using System.Linq; using System.Text; using ConsoleApplication1.App_Code; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string xianshi = ""; while (true) { Console.Clear(); if (xianshi != "") { Console.WriteLine(xianshi); } //查询学生个数 int count = new StudentData().SeleCout(); //调用code排序生成编号 new StudentData().CodeAsc(count); //Student表中数据展示 Console.WriteLine("编号" + " " + "姓名" + " " + "性别" + " " + "年龄" + " " + "生日" + " " + "专业"); List<Student> al = new StudentData().SeleAll(); foreach (Student s in al) { Console.WriteLine(s.Code + " " + s.Name + " " + s.SexDD + " " + s.Age + " " + s.BirthdayDD + " " + s.SubjectCodeDD); } //学生平均年龄 decimal ageall = 0; foreach (Student a in al) { ageall = ageall + a.Age; } Console.WriteLine("统计:总人数为" + count + "人,平均年龄为" + (ageall / count).ToString("00.00") + "岁。"); //提示继续操作 while (true) { Console.Write("请输入您要继续的操作(输入数字1为新增,输入数字2为修改,输入数字3为删除):"); string uu = Console.ReadLine(); //如果选择新增 #region if (uu == "1") { //实例化一个学生数据 Student ut = new Student(); ut.Code = "S" + (count + 1).ToString("000"); Console.WriteLine("学生编号(自动生成):" + ut.Code); //判断学生姓名不能为空 while (true) { Console.Write("请输入学生姓名:"); string n = Console.ReadLine(); if (n != "") { ut.Name = n; break; } else { Console.Write("学生姓名不能为空,"); } } //学生性别 string us; while (true) { Console.Write("请输入学生性别:"); us = Console.ReadLine(); if (us == "男" || us == "女") { ut.Sex = new StudentData().Sxb(us); break; } else { Console.Write("请输入正确的性别(男/女),"); } } //学生生日 while (true) { Console.Write("请输入学生生日:"); string ub = Console.ReadLine(); try { ut.Birthday = DateTime.Parse(ub); break; } catch { Console.Write("请输入正确的生日格式(1990,1,1),"); } } //学生专业 while (true) { Console.Write("请输入学生专业:"); string sz = new StudentData().SeleSub(Console.ReadLine()); if (sz != "") { ut.SubjectCode = sz; Console.WriteLine("已查询到该专业,专业名称为:" + new SubjectData().Subname(ut.SubjectCode) + ",专业编号为:" + ut.SubjectCode + ""); break; } else { Console.Write("没有此专业,"); } } //展示用户要输入的学生信息 Console.WriteLine("新增学生信息为:学生编号[" + ut.Code + "],学生姓名[" + ut.Name + "],学生性别[" + us + "],学生生日[" + ut.BirthdayDD + "],学生专业[" + new SubjectData().Subname(ut.SubjectCode) + "]"); while (true) { Console.WriteLine("以上为新增学生的信息,是否确定添加?(Y/N):"); string xx = Console.ReadLine(); if (xx == "Y") { int row = new StudentData().StuAdd(ut); if (row > 0) { xianshi = "数据添加成功!"; break; } } else if (xx == "N") { xianshi = "已取消数据添加!"; break; } else { Console.Write("请输入正确的操作信息,"); } } if (xianshi != "") { break; } } #endregion //如果选择修改 #region else if (uu == "2") { Console.Write("请输入要修改的学生编号:"); //查询是否存在该学生 string cx = Console.ReadLine(); bool dd = new StudentData().SeleStu(cx); if (dd ) { //查询该学生的所有信息 Student ss = new StudentData().SeleStux(cx); Student ss1 = new Student(); ss1.Code = cx; Console.WriteLine(cx + "学生的当前姓名是:" + ss.Name); //判断学生姓名不能为空 while (true) { Console.Write("请输入您的修改:"); string n = Console.ReadLine(); if (n != "") { ss1.Name = n; break; } else { Console.Write("学生姓名不能为空,"); } } Console.WriteLine(cx + "学生的当前性别是:" + ss.SexDD); //判断学生性别 string us; while (true) { Console.Write("请输入您的修改:"); us = Console.ReadLine(); if (us == "男" || us == "女") { ss1.Sex = new StudentData().Sxb(us); break; } else { Console.Write("请输入正确的性别(男/女),"); } } Console.WriteLine(cx + "学生的当前生日是:" + ss.BirthdayDD); //判断学生生日 while (true) { Console.Write("请输入您的修改:"); string ub = Console.ReadLine(); try { ss1.Birthday = DateTime.Parse(ub); break; } catch { Console.Write("请输入正确的生日格式(1990,1,1),"); } } Console.WriteLine(cx + "学生的当前专业是:" + new SubjectData().Subname(ss.SubjectCode)); //判断学生专业 while (true) { Console.Write("请输入学生专业:"); string sz = new StudentData().SeleSub(Console.ReadLine()); if (sz != "") { ss1.SubjectCode = sz; break; } else { Console.Write("没有此专业,"); } } //询问是否添加 Console.WriteLine("修改学生信息为:学生编号[" + ss1.Code + "],学生姓名[" + ss1.Name + "],学生性别[" + us + "],学生生日[" + ss1.BirthdayDD + "],学生专业[" + new SubjectData().Subname(ss1.SubjectCode) + "]"); while (true) { Console.WriteLine("以上为修改学生的信息,是否确定修改?(Y/N):"); string xx = Console.ReadLine(); if (xx == "Y") { int row = new StudentData().StuCha(ss1); if (row > 0) { xianshi = "数据修改成功!"; break; } } else if (xx == "N") { xianshi = "已取消数据修改!"; break; } else { Console.Write("请输入正确的操作信息,"); } } } else { Console.Write("该学生编号不存在,"); } if (xianshi != "") { break; } } #endregion //若果选择删除 #region else if (uu == "3") { Console.Write("请输入要删除学生信息的学生编号:"); //判断有无该学生编号 string cx = Console.ReadLine(); bool dd = new StudentData().SeleStu(cx); if (dd) { //查询该学生的所有信息 Student ss = new StudentData().SeleStux(cx); Console.WriteLine("删除学生信息为:学生编号[" + ss.Code + "],学生姓名[" + ss.Name + "],学生性别[" + ss.SexDD + "],学生生日[" + ss.BirthdayDD + "],学生专业[" + new SubjectData().Subname(ss.SubjectCode) + "]"); while (true) { Console.WriteLine("以上为删除学生的信息,是否确定删除?(Y/N):"); string xx = Console.ReadLine(); if (xx == "Y") { int row = new StudentData().StuDel(ss.Code); if (row > 0) { xianshi = "数据删除成功!"; break; } } else if (xx == "N") { xianshi = "已取消数据删除!"; break; } else { Console.Write("请输入正确的操作信息,"); } } } else { Console.Write("不存在该学生编号,"); } if (xianshi != "") { break; } } #endregion else { Console.WriteLine("输入有误!"); } } } } } }
三.题目要求
第一部分:
新建一个数据库: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表数据,并提示删除成功,继续回到“二”等待用户继续操作。