第一部分:

新建一个数据库: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;
}
}
} }

数据访问类: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 = ;
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 > )
ok = true;
else
ok = false; return ok;
} //删除
public bool Delete(string st)
{
bool have = false;
int count_del = ;
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 > )
have = true;
return have;
} //修改
public bool Update(Student user)
{
bool ok = false;
int count = ;
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 > )
{
ok = true;
}
return ok;
} }
}

业务逻辑层: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 = , sum = ;
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 == "")
{
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 == "")
{
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 == "")
{
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();
}
}
}

ADO.NET测试题的更多相关文章

  1. ADO.net之综合演练

    using ConsoleApplication4.App_Code; using System; using System.Collections.Generic; using System.Lin ...

  2. ADO.NET对象的详解

    1. Connection 类 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能 ...

  3. WebForm获取GET或者POST参数到实体的转换,ADO.NET数据集自动转换实体

    最近在修改维护以前的webform项目(维护别人开发的.....)整个aspx没有用到任何的控件,这个我也比较喜欢不用控件所以在提交信息的时候需要自己手动的去Request.QueryString[] ...

  4. ADO.NET编程之美----数据访问方式(面向连接与面向无连接)

    最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美&g ...

  5. ADO.NET一小记-select top 参数问题

    异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 最近使用ADO.NET的时候,发现select top @count xxxx 不 ...

  6. .NET基础拾遗(6)ADO.NET与数据库开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  7. 升讯威ADO.NET增强组件(源码):送给喜欢原生ADO.NET的你

    目前我们所接触到的许多项目开发,大多数都应用了 ORM 技术来实现与数据库的交互,ORM 虽然有诸多好处,但是在实际工作中,特别是在大型项目开发中,容易发现 ORM 存在一些缺点,在复杂场景下,反而容 ...

  8. ADO.NET Entity Framework 在哪些场景下使用?

    在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的 ...

  9. ADO.NET 核心对象简介

    ADO.NET是.NET中一组用于和数据源进行交互的面向对象类库,提供了数据访问的高层接口. ADO.NOT类库在System.Data命名空间内,根据我们访问的不同数据库选择命名空间,System. ...

随机推荐

  1. 直接拿来用!最火的Android开源项目(完结篇)(转)

    摘要:截至目前,在GitHub“最受欢迎的开源项目”系列文章中我们已介绍了40个Android开源项目,对于如此众多的项目,你是Mark.和码友分享经验还是慨叹“活到老要学到老”?今天我们将继续介绍另 ...

  2. codeforce ABBYY Cup 3.0 - Finals (online version) B2. Shave Beaver! 线段树

    B2. Shave Beaver!   The Smart Beaver has recently designed and built an innovative nanotechnologic a ...

  3. Windows7系统主题制作全程教程

    jpg 改 rar

  4. 非旋转Treap及可持久化[Merge,Split]

    http://memphis.is-programmer.com/posts/46317.html http://fanhq666.blog.163.com/blog/static/819434262 ...

  5. 【criteria CascadeType】级联的不同情况

    使用criteria进行增删改查操作,可能会发生级联删除的情况,例如对员工表进行删除,可能会级联删除掉部门表中的某一条信息[类似这样的情况] 对此,我们可以在实体类中对级联的关系进行管理: 对于cri ...

  6. POJ 1182 食物链 (经典带权并查集)

    第三次复习了,最经典的并查集 题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们 ...

  7. 在CSDN中添加友情连接

    <a bref='http://www......'>友情连接</a><br/> <a bref='http://www......'>友情连接2< ...

  8. HTTP基础10--web(2)

    因输出值转义不完全引发的安全漏洞 实施 Web 应用的安全对策可大致分为以下两部分. 客户端的验证 Web 应用端(服务器端)的验证: 输入值验证 / 输出值转义 客户端允许篡改数据或关闭 JavaS ...

  9. JavaScript 笔记 ( Prototype )

    这阵子实在好忙 ( 这样说好像也不是一两个月了... ),然后因为工作伙伴都是 JavaScript 神之等级的工程师,从中也学到不少知识,毕竟就是要和强者工作才会成长呀!为了想好好瞭解他们写的程式码 ...

  10. iris数据集

    iris以鸢尾花的特征作为数据来源,数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性,是在数据挖掘.数据分类中非常常用的测试集.训练集. 链接地址