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并回车后,按照顺序让用户分别输入:学生编号,学生姓名,性别,生日,专业等内容,格式为:

请输入学生编号:

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

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

请输入学生生日(如: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表数据,并提示删除成功,继续回到“二”等待用户继续操作。

数据库内容:

 实体类:Student.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace ADONET测试.App_Code
{
    public class Student
    {
        //连接数据库
        SqlConnection conn = null;
        SqlCommand comm = null;
        public Student()
        {
            conn = new SqlConnection("server=.;database=ADO;user=sa;pwd=123");
            comm = conn.CreateCommand();
        }


        private string _Code;
        /// <summary>
        /// 学生编号
        /// </summary>
        public string Code
        {
            get { return _Code; }
            set { _Code = value; }
        }
        private string _Name;
        /// <summary>
        /// 学生姓名
        /// </summary>
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        private bool _Sex;
        /// <summary>
        /// 学生性别
        /// </summary>
        public bool Sex
        {
            get { return _Sex; }
            set { _Sex = value; }
        }
        /// <summary>
        /// 学生性别扩展属性
        /// </summary>
        public string SexStr
        {
            get
            {
                return _Sex ? "" : "";
            }
        }

        private DateTime _Birthday;
        /// <summary>
        /// 生日
        /// </summary>
        public DateTime Birthday
        {
            get { return _Birthday; }
            set { _Birthday = value; }
        }
        /// <summary>
        /// 生日扩展属性
        /// </summary>
        public string BirthdayStr
        {
            get
            {
                return _Birthday.ToString("yyyy年MM月dd日");
            }
        }
        /// <summary>
        /// 年龄-生日扩展属性
        /// </summary>
        public int Age
        {
            get
            {
                int dt1 = DateTime.Now.Year;
                int dt2 = DateTime.Parse(_Birthday.ToString()).Year;
                return dt1 - dt2;
            }
        }

        /// <summary>
        /// 科目编号
        /// </summary>
        private string _SubjectCode;

        public string SubjectCode
        {
            get { return _SubjectCode; }
            set { _SubjectCode = value; }
        }
        /// <summary>
        /// 科目名称
        /// </summary>
        public string SubjectName
        {
            get
            {
                string end = "未填写";
                comm.CommandText = "select *from Subject where SubjectCode=@a";
                comm.Parameters.Clear();
                comm.Parameters.AddWithValue("@a",_SubjectCode);
                conn.Open();
                SqlDataReader dr = comm.ExecuteReader();
                if (dr.HasRows)
                {
                    dr.Read();
                    end = dr["SubjectName"].ToString();
                }
                conn.Close();
                return end;
            }
        }
    }

}
View Code

数据访问类:StudentData.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace ADONET测试.App_Code
{
    public class StudentData
    {
        //连接数据库
        SqlConnection conn = null;
        SqlCommand comm = null;
        public StudentData()
        {
            conn = new SqlConnection("server=.;database=ADO;user=sa;pwd=123");
            comm = conn.CreateCommand();
        }
        //查询

        //查询所有学生的数据
        public List<Student> Select()
        {
            List<Student> slist = new List<Student>();
            comm.CommandText = "select *from Student";
            conn.Open();
            SqlDataReader dr = comm.ExecuteReader();
            if (dr.HasRows)
            {
                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);

                }
            }
            conn.Close();
            return slist;
        }

        //根据学生编号查询某个学生的数据
        public List<Student> Select1(string code)
        {
            List<Student> slist = new List<Student>();
            comm.CommandText = "select *from Student where Code=@a";
            comm.Parameters.Clear();
            comm.Parameters.AddWithValue("@a", code);
            conn.Open();
            SqlDataReader dr = comm.ExecuteReader();
            if (dr.HasRows)
            {
                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);

                }
            }
            conn.Close();
            return slist;
        }
        //根据编号查询判断某个学生在数据库中是否存在,存在返回true,不存在返回false
        public bool Select(string code)
        {
            bool has = false;
            comm.CommandText = "select *from Student where code=@a";
            comm.Parameters.Clear();
            comm.Parameters.AddWithValue("@a", code);
            conn.Open();
            SqlDataReader dr = comm.ExecuteReader();
            if (dr.HasRows)
            {
                has = true;
            }
            conn.Close();
            return has;
        }

        //科目名称模糊查询,判断该科目是否存在,存在返回true,不存在返回false
        public bool select1(string suname)
        {
            bool has = false;
            Student st = new Student();
            comm.CommandText = "select SubjectCode from Subject where SubjectName like '%" + suname + "%'";
            conn.Open();
            SqlDataReader dr = comm.ExecuteReader();
            if (dr.HasRows)
            {
                has = true;
            }
            conn.Close();
            return has;
        }
        //科目名称模糊查询,获取对应的科目编号
        public Student select(string suname)
        {
            Student st = new Student();
            comm.CommandText = "select SubjectCode from Subject where SubjectName like '%" + suname + "%'";
            conn.Open();
            SqlDataReader dr = comm.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {

                    st.SubjectCode = dr["SubjectCode"].ToString();


                }
            }
            conn.Close();
            return st;
        }
        

        //添加
        public bool Insert(Student stu)
        {
            bool ok = false;
            int count = 0;
            comm.CommandText = "insert into Student values(@a,@b,@c,@d,@e)";
            comm.Parameters.Clear();
            comm.Parameters.AddWithValue("@a", stu.Code);
            comm.Parameters.AddWithValue("@b", stu.Name);
            comm.Parameters.AddWithValue("@c", stu.Sex);
            comm.Parameters.AddWithValue("@d", stu.Birthday);
            comm.Parameters.AddWithValue("@e", stu.SubjectCode);
            try
            {
                conn.Open();
                count = comm.ExecuteNonQuery();
            }
            catch
            {
                ok = false;
            }
            finally
            {
                conn.Close();
            }
            if (count > 0)
                ok = true;
            else
                ok = false;

            return ok;
        }

        //删除
        public bool Delete(string st)
        {
            bool have = false;
            int count_del = 0;
            comm.CommandText = "delete from Student where Code=@a";
            comm.Parameters.Clear();
            comm.Parameters.AddWithValue("@a", st);
            try
            {
                conn.Open();
                count_del = comm.ExecuteNonQuery();
            }
            catch
            {
                have = false;
            }
            finally
            {
                conn.Close();
            }
            if (count_del > 0)
                have = true;
            return have;
        }


        //修改
        public bool Update(Student user)
        {
            bool ok = false;
            int count = 0;
            comm.CommandText = "update Student set Name=@b,Sex=@c,Birthday=@d,SubjectCode=@e where Code=@a";
            comm.Parameters.Clear();
            comm.Parameters.AddWithValue("@a", user.Code);
            comm.Parameters.AddWithValue("@b", user.Name);
            comm.Parameters.AddWithValue("@c", user.Sex);
            comm.Parameters.AddWithValue("@d", user.Birthday);
            comm.Parameters.AddWithValue("@e", user.SubjectCode);
            try
            {
                conn.Open();
                count = comm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                ok = false;
            }
            finally
            {
                conn.Close();
            }
            if (count > 0)
            {
                ok = true;
            }
            return ok;
        }

    }
}
View Code

业务逻辑层:Program.cs

 

using ADONET测试.App_Code;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ADONET测试
{
    class Program
    {
        static void Main(string[] args)
        {
            //查询所有学生的数据,统计总人数count,统计平均年龄
            int count = 0, sum = 0;
            List<Student> slist = new StudentData().Select();//调用StudentData类中的Select()方法查询所有学生的数据
            Console.Clear();
            Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业");
            foreach (Student sss in slist)
            {
                Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName);
                count++;
                sum += sss.Age;
            }
            Console.WriteLine("统计:总人数为" + count + "人,平均年龄为" + (sum / count) + "岁。");


            for (; ; )
            {
                Console.Write("请输入您要继续的操作(输入数字1为新增,输入数字2为修改,输入数字3为删除):");
                string operate = Console.ReadLine();
                if (operate == "1")
                {
                    Student stu = new Student();
                    for (; ; )
                    {

                        Console.Write("请输入学生编号:");
                        stu.Code = Console.ReadLine();
                        if (stu.Code.Trim() == "")//判断编号是否为空
                        {
                            Console.WriteLine("编号不能为空!");
                        }
                        else
                        {
                            if (new StudentData().Select(stu.Code))//判断编号是否存在
                            {
                                Console.WriteLine("此编号已存在!");
                            }
                            else
                            {
                                break;
                            }
                        }
                    }

                    for (; ; )
                    {
                        Console.Write("请输入学生姓名(不能为空):");
                        stu.Name = Console.ReadLine();
                        if (stu.Name.Trim() == "")//判断学生姓名是否为空
                        {
                            Console.WriteLine("姓名不能为空!");
                        }
                        else
                        {
                            break;
                        }
                    }
                    for (; ; )
                    {
                        Console.Write("请输入学生性别(男/女):");
                        string Sex = Console.ReadLine();
                        if (Sex == "")//性别只能输入男或女
                        {
                            stu.Sex = true;
                            break;
                        }
                        else if (Sex == "")
                        {
                            stu.Sex = false;
                            break;
                        }
                        else
                        {
                            Console.WriteLine("性别必须为男女!");
                        }
                    }
                    for (; ; )
                    {
                        Console.Write("请输入学生生日(如:2000/12/12):");
                        string Birthday = Console.ReadLine();
                        try//判断日期格式是否正确
                        {
                            stu.Birthday = Convert.ToDateTime(Birthday);
                            break;
                        }
                        catch
                        {
                            Console.WriteLine("日期格式错误!");
                            continue;
                        }


                    }
                    for (; ; )
                    {
                        Console.Write("请输入专业:");
                        string SubjectName = Console.ReadLine();
                        if (SubjectName == "")//若科目名称不输入任何信息,则不赋给科目编号任何信息(值为空)
                        {
                            stu.SubjectCode = "";
                            break;
                        }
                        else
                        {
                            if (new StudentData().select1(SubjectName))//调用StudentData类中的select1(科目名称)方法,判断是否存在该科目
                                                                        //若存在返回true
                            {
                                Student st = new StudentData().select(SubjectName);//调用StudentData类中的select(科目名称)方法获取该科目的所有信息
                                stu.SubjectCode = st.SubjectCode;
                                break;

                            }
                            else
                            {
                                Console.WriteLine("没有此专业!");
                            }
                        }
                    }
                    Console.WriteLine("编号\t姓名\t性别\t生日\t\t专业");//输出新增学生的信息
                    Console.WriteLine(stu.Code + "\t" + stu.Name + "\t" + stu.SexStr + "\t" + stu.BirthdayStr + "\t" + stu.SubjectName);

                    Console.Write("以上为新增学生的信息,是否确定添加?(Y/N):");//用户操作
                    string yn = Console.ReadLine();
                    if (yn.ToUpper() == "Y")
                    {
                        if (new StudentData().Insert(stu))//调用StudentData类中的Insert(Student 名称)方法
                        {
                            Console.Clear();
                            List<Student> stlist = new StudentData().Select();//泛型集合,调用StudentData类中的Select()方法查询所有学生的数据
                            Console.Clear();
                            Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t专业");
                            foreach (Student sss in stlist)//打印添加后所有学生的信息
                            {
                                Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName);
                            }
                            Console.WriteLine("添加成功!");

                        }
                        else
                        {
                            Console.WriteLine("添加失败!");

                        }
                    }
                    else
                    {
                        Console.WriteLine("取消添加!");
                        continue;
                    }
                }
                else if (operate == "2")
                {
                    Console.Write("输入要修改的学生编号:");
                    string operate_update = Console.ReadLine();
                    if (new StudentData().Select(operate_update))//调用StudentData类中的Select(学生编号)方法,判断是否存在该编号
                    {
                        //泛型集合,调用StudentData类中的Select1(学生编号)方法,查询当前学生的信息
                        List<Student> stlist = new StudentData().Select1(operate_update);
                        Console.Clear();
                        Student stu = new Student();
                        stu.Code = operate_update;
                        foreach (Student sss in stlist)
                        {
                            Console.WriteLine(sss.Code + "学生当前姓名为:" + sss.Name);

                            for (; ; )
                            {
                                Console.Write("请输入您的修改:");
                                stu.Name = Console.ReadLine();
                                if (stu.Name.Trim() == "")//姓名不能为空
                                {
                                    Console.WriteLine("姓名不能为空!");
                                }
                                else
                                {
                                    break;
                                }
                            }

                            Console.WriteLine(sss.Code + "学生当前性别为:" + sss.SexStr);
                            for (; ; )
                            {
                                Console.Write("请输入您的修改:");
                                string sex = Console.ReadLine();
                                if (sex == "")//性别只能输入男或女
                                {
                                    stu.Sex = true;
                                    break;
                                }
                                else if (sex == "")
                                {
                                    stu.Sex = false;
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("性别必须为男女!");
                                }
                            }

                            Console.WriteLine(sss.Code + "学生当前生日为:" + sss.BirthdayStr);
                            for (; ; )
                            {
                                Console.Write("请输入您的修改:");
                                string birthday = Console.ReadLine();
                                try//判断日期格式是否正确
                                {
                                    stu.Birthday = Convert.ToDateTime(birthday);
                                    break;
                                }
                                catch
                                {
                                    Console.WriteLine("日期格式错误!");
                                    continue;
                                }
                            }
                            Console.WriteLine(sss.Code + "学生当前专业为:" + sss.SubjectName);
                            for (; ; )
                            {
                                Console.Write("请输入您的修改:");
                                string subjectcode = Console.ReadLine();

                                if (subjectcode == "")//若科目名称不输入任何信息,则不赋给科目编号任何信息(值为空)
                                {
                                    stu.SubjectCode = "";
                                    break;
                                }
                                else
                                {
                                    if (new StudentData().select1(subjectcode))//调用StudentData类中的select1(科目名称)方法,判断是否存在该科目
                                                                              //若存在返回true
                                    {
                                        Student st = new StudentData().select(subjectcode);//调用StudentData类中的select(科目名称)方法获取该科目的所有信息
                                        stu.SubjectCode = st.SubjectCode;
                                        break;

                                    }
                                    else
                                    {
                                        Console.WriteLine("没有此专业!");
                                    }
                                }
                            }
                        }
                        //List<Student> stulist = new StudentData().Select1(operate_update);//泛型集合调用StudentData类中的Select1(学生编号)方法
                        Console.Clear();
                        Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业");//打印该学生修改后的所有信息

                        Console.WriteLine(stu.Code + "\t" + stu.Name + "\t" + stu.SexStr + "\t" + stu.Age + "\t" + stu.BirthdayStr + "\t" + stu.SubjectName);

                        Console.Write("以上为修改后的学生信息,是否确定修改?(Y/N):");
                        string yn = Console.ReadLine();
                        if (yn.ToUpper() == "Y")
                        {
                            if (new StudentData().Update(stu))//调用StudentData类中的Updata(Student 名称)方法,返回True表示添加成功
                            {
                                List<Student> studlist = new StudentData().Select();//泛型集合调用StudentData类中的Select()方法,获取所有学生的信息
                                Console.Clear();
                                Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业");
                                foreach (Student sss in studlist)//打印修改后所有学生的信息
                                {
                                    Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName);
                                }
                                Console.WriteLine("修改成功!");
                            }
                            else
                            {
                                Console.WriteLine("修改失败!");
                                continue;
                            }
                        }
                        else
                        {
                            Console.WriteLine("取消修改!");
                        }
                    }
                    else
                    {
                        Console.WriteLine("无此学生!");
                        continue;
                    }

                }
                else if (operate == "3")
                {
                    Console.Write("输入要删除的学生编号:");
                    string operate_delete = Console.ReadLine();
                    if (new StudentData().Select(operate_delete))////调用StudentData类中的Select(学生编号)方法,返回True表示存在该学生
                    {
                        List<Student> stlist = new StudentData().Select1(operate_delete);//泛型集合调用StudentData类中的Select1(学生编号)方法
                                                                                        //获取当前学生的信息
                        Console.Clear();
                        Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业");
                        foreach (Student sss in stlist)//打印当前学生的信息
                        {
                            Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName);
                        }
                        Console.Write("是否删除(Y/N)");
                        string yn = Console.ReadLine();
                        if (yn.ToUpper() == "Y")
                        {
                            if (new StudentData().Delete(operate_delete))//调用StudentData类中的Delete(学生编号)方法,返回True便是删除成功
                            {
                                Console.Clear();
                                List<Student> stulist = new StudentData().Select();//泛型集合调用StudentData类中的Select()方法,获取所有学生的信息
                                Console.Clear();
                                Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业");
                                foreach (Student sss in stulist)//打印删除后的所有学生信息
                                {
                                    Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName);
                                }
                                Console.WriteLine("删除成功!");

                            }
                            else
                            {
                                Console.WriteLine("删除失败!");

                            }
                        }
                        else
                        {
                            Console.WriteLine("取消删除!");
                            continue;
                        }
                    }
                    else
                    {
                        Console.WriteLine("无此学生!");
                        continue;
                    }


                }
                else
                {
                    Console.WriteLine("输入有误!");
                }


            }
            Console.ReadKey();
        }
    }
}
View Code

 

posted @ 2016-12-03 09:21  浆糊033  阅读(706)  评论(0编辑  收藏  举报