ADO.net商机题目

一.创建数据库

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','工商管理');
View Code

二.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; }
        }
    }
}
View Code
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); }
        }

    }
}
View Code

(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;
        }
    }
}
View Code
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;
        }

    }
}
View Code

(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("编号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "年龄" + "\t" + "生日" + "\t" + "专业");
                List<Student> al = new StudentData().SeleAll();
                foreach (Student s in al)
                {
                    Console.WriteLine(s.Code + "\t" + s.Name + "\t" + s.SexDD + "\t" + s.Age + "\t" + s.BirthdayDD + "\t" + 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("输入有误!");
                    }


                }






            }

        }
    }


}
View Code

三.题目要求

 

第一部分:

新建一个数据库: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表数据,并提示删除成功,继续回到“二”等待用户继续操作。

posted on 2017-04-23 10:26  张鑫4477  阅读(156)  评论(0编辑  收藏  举报