求个学生信息管理系统。
搞了一个多星期没搞出来。。郁闷 那位先生女士帮帮忙。。谢谢了。。我的Q85980847 邮箱 85980847@qq.com
要求如下:
1.新建网站:Student
2.选择视图-》服务器资源管理器-》右击数据连接-》新建SQL server 数据库:Student;
3.新建数据表Class、Administrator、Department、StudentInfo、Speciality、Course、Score、Teacher和Teaching,建好表之后要往表里插入实验性的记录,记录内容自己定:
Class表(班级信息表):
列名 类型 是否主键 是否允许空 说明
classID char(9) 是 班级ID
classname varchar(50) 班级名称
grade char(4) 年级
departmentID char(3) 系部ID
specialityID char(1) 专业ID
monitorname varchar(50) 是 班长姓名
mastername varchar(50) 是 班主任姓名
Administrator表(管理员表,用于登录):
列名 类型 是否主键 是否允许空 说明
userID int,变成自增标识 是 用户ID
username varchar(50) 用户名
password char(10) 密码
Department表:
列名 类型 是否主键 是否允许空 说明
departmentID char(3) 是 系部ID
departmentname varchar(50) 系部名称
departmenthead char(10) 是 系主任姓名
StudentInfo表:
列名 类型 是否主键 是否允许空 说明
studentID char(11) 是 学号
studentname varchar(50) 姓名
易做图 char(2) 性别
birthday smalldatetime 是 出生日期
hometown varchar(50) 是 籍贯
departmentID char(3) 系部ID
specialityID char(1) 专业ID
classID char(9) 班级ID
credit tinyint,默认值设为0 学分
entrancedate smalldatetime 是 入学时间
telephone char(11) 是 电话
address varchar(50) 是 家庭地址
remark varchar(50) 是 备注
Speciality表(专业名称表)
列名 类型 是否主键 是否允许空 说明
specialityID char(1) 是 专业ID
specialityname char(20) 专业名称
departmentID char(3) 系部ID
Course表(课程表)
列名 类型 是否主键 是否允许空 说明
courseID char(6) 是 课程ID,系部ID+专业ID+2位课程码
coursename char(20) 课程名称
credit tinyint,默认值设为2 该课程所占的学分
term tinyint 哪个学期
departmentID char(3) 系部ID
specialityID char(1) 专业ID
Score表(成绩表,记录学期-系部-专业-班级-学生-课程-分数-取得学分)
列名 类型 是否主键 是否允许空 说明
serialID int,变成自增标识 是 序列号
term tinyint 哪个学期
departmentID char(3) 系部ID
specialityID char(1) 专业ID
classID char(9) 班级ID
studentID char(11) 学号
courseID char(6) 课程ID
score tinyint 考试分数
credit tinyint,默认值设为2 该课程所占的学分
查询:1.指定学期、班级、课程
2.指定学期、学号
3.指定学期、课程、教师
4.查不及格名单:指定学期、系部,条件:score<60,按班级排序
Teacher表(教师信息表)
列名 类型 是否主键 是否允许空 说明
teacherID char(5) 是 教师ID
teachername varchar(50) 教师姓名
departmentID char(3) 系部ID
Teaching表(教师授课信息表)
列名 类型 是否主键 是否允许空 说明
serialID int,变成自增标识 是 序列号
term tinyint 哪个学期
courseID char(6) 课程ID
teacherID char(11) 教师ID
classID char(9) 班级ID
4.在服务器资源管理器中右击存储过程-》新建存储过程,
查找学生的:
CREATE PROCEDURE procSelectStudentByName
(
@classname varchar(50),
@studentname varchar(50)
)
AS
select * from StudentInfo,Class where StudentInfo.classID=Class.classID and Class.classname=@classname and studentname like '%' + @studentname +'%'
RETURN
通过学号来查找:
CREATE PROCEDURE procSelectStudentByID
(
@studentID char(11)
)
AS
select * from StudentInfo,Class where StudentInfo.classID=Class.classID and studentID=@studentID
RETURN
5.在web.config文件中添加适合本机的连接字符串:
需要添加加了底纹的部分,原来可能是<connectionStrings/>,把它改成现在这样,另外,Data Source=KEVINXSM82\SQLEXPRESS这句要改成本机的,可以尝试用英文的句点代替主机名,变成这样Data Source=.\SQLEXPRESS。
有个简便的方法,在服务器资源管理器中右击新建的数据库-》修改连接-》点击高级-》在最底下有个灰色的框,里面就是我们要的连接字符串。
<configuration>(这个已经有了,不要再添加)
<appSettings/>(这个已经有了,不要再添加)
<connectionStrings>
<add name="connStr" connectionString="Data Source=KEVINXSM82\SQLEXPRESS;Initial Catalog=Student;Integrated Security=True;Pooling=False"/>
</connectionStrings>
<system.web>。。。。(省略,这些不用加)
6.建立公共类DB.cs,作用是在其他页面来引用相同的数据库连接、执行命令、获取数据等操作,这样可以减少工作量,并且以后若要修改数据库连接,就只需要在这个文件里修改就好了,别的文件可以不用修改,维护起来很方便。
在解决方案资源管理器里右击网站-》添加新项-》类,命名为DB.cs,添加如下代码(以//开头的是注释,可以不用添加):
using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;//数据库操作需引入的命名空间
using System.Configuration;//为引用Web.config文件的内容需要引入该命名空间
/// <summary>
/// DB 的摘要说明
/// </summary>
public class DB
{
public DB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 连接数据库
/// </summary>
/// <returns>返回SqlConnection对象</returns>
public SqlConnection GetCon()
{
return new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString());
}
/// <summary>
/// 执行SQL语句
/// </summary>
///<param name="cmdstr">SQL语句</param>
/// <returns>返回值为int型:成功返1,失败返回0</returns>
public int sqlEx(string cmdstr)
{
SqlConnection con = GetCon();//连接数据库
con.Open();//打开连接
SqlCommand cmd = new SqlCommand(cmdstr, con);
try
{
cmd.ExecuteNonQuery();//执行SQL 语句并返回受影响的行数
return 1;//成功返回1
}
catch (Exception e)
{
return 0;//失败返回0
}
finally
{
con.Dispose();//释放连接对象资源
}
}
/// <summary>
/// 执行SQL查询语句
/// </summary>
/// <param name="cmdstr">查询语句</param>
/// <returns>返回DataTable数据表</returns>
public DataTable reDt(string cmdstr)
{
SqlConnection con = GetCon();
SqlDataAdapter da = new SqlDataAdapter(cmdstr, con);
DataSet ds = new DataSet();
da.Fill(ds);
return (ds.Tables[0]);
}
/// <summary>
/// 执行SQL查询语句
/// </summary>
/// <param name="str">查询语句</param>
/// <returns>返回SqlDataReader对象dr</returns>
public SqlDataReader reDr(string str)
{
SqlConnection conn = GetCon();//连接数据库
conn.Open();//并打开了连接
SqlCommand com = new SqlCommand(str, conn);
SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);
return dr;//返回SqlDataReader对象dr
}
}
7.新建登录页面Login.aspx
注意文本框和按钮的ID
Login.aspx.cs文件的代码(一定要把控件ID改成你自己定的):
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Configuration;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnLogin_Click(object sender, EventArgs e)
{
//实例化公共类对象
DB db = new DB();
string userName = this.txtName.Text.Trim();
string passWord = this.txtPwd.Text.Trim();//对密码进行加密处理
//获取用户信息
SqlDataReader dr = db.reDr("select * from Administrator where username='" + userName + "' and password='" + passWord + "'");
dr.Read();
if (dr.HasRows)//通过dr中是否包含行判断用户是否通过身份验证
{
Session["UserID"] = dr.GetValue(0);//将该用户的ID存入Session["UserID"]中
Response.Redirect("~/index.aspx");//跳转到主页
}
else
lblMessage.Text = "登录失败!";
dr.Close();
}
}
8.新建页面index.aspx,在里面输入一些标识文字,然后运行Login.aspx。
--------------------编程问答-------------------- 都这么详细了!自己写写不就完了! --------------------编程问答-------------------- 这么长差不多了 友情帮顶 --------------------编程问答-------------------- 建实体类model。使用DAL,BLL到51aspx.com里看看。 --------------------编程问答-------------------- 我也是这么认为的。楼主,差不多了。 --------------------编程问答-------------------- 3楼大哥说的对,用工厂模式或者三层都可以,Model(实体类)DAL(数据访问层)BLL(业务逻辑层)Web/窗体(表示层) --------------------编程问答-------------------- 送你个SqlHelper类using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Reflection;
namespace BBSDAL
{
/// <summary>
/// 数据库访问类
/// </summary>
public static class SqlHelper
{
#region 变量
/// <summary>
/// 数据库连接对象
/// </summary>
private static SqlConnection _con = null;
/// <summary>
/// 程序集的名称
/// </summary>
///private static string _assemblyName = "Entity";
// 在web.config配置文件中添加连库字符串
// <connectionStrings>
// <add name="constr" connectionString="Data Source=.\TC2005;uid=sa;pwd=;Initial Catalog=BBSDB" providerName="System.Data.Client"/>
// </connectionStrings>
//public static string constr = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;//从配置文件里读取数据库连库字符串
public static string constr = @"Data Source=.;uid=sa;pwd=;Initial Catalog=bbs";
#endregion
#region 属性
/// <summary>
/// 获取或设置数据库连接对象
/// </summary>
public static SqlConnection Con
{
get
{
if (SqlHelper._con == null)
{
SqlHelper._con = new SqlConnection();
}
if (SqlHelper._con.ConnectionString == "")
{
SqlHelper._con.ConnectionString = SqlHelper.constr;
}
return SqlHelper._con;
}
set
{
SqlHelper._con = value;
}
}
#endregion
#region 方法
/// <summary>
/// 执行返回一行一列的数据库操作
/// </summary>
/// <param name="commandText">SQL语句或存储过程名</param>
/// <param name="commandType">SQL命令类型</param>
/// <param name="param">SQL命令参数数组</param>
/// <returns>第一行第一列的记录</returns>
public static int ExecuteScalar(string commandText,CommandType commandType, params SqlParameter[] param)
{
int count = 0;
using (SqlHelper.Con)
{
using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))
{
try
{
cmd.CommandType = commandType;
cmd.Parameters.AddRange(param);
SqlHelper.Con.Open();
count = Convert.ToInt32(cmd.ExecuteScalar());
}
catch (Exception ex)
{
throw ex;
}
}
}
return count;
}
/// <summary>
/// 执行不查询的数据库操作
/// </summary>
/// <param name="commandText">SQL语句或存储过程名</param>
/// <param name="commandType">SQL命令类型</param>
/// <param name="param">SQL命令参数数组</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string commandText, CommandType commandType, params SqlParameter[] param)
{
int result = 0;
using (SqlHelper.Con)
{
using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))
{
try
{
cmd.CommandType = commandType;
cmd.Parameters.AddRange(param);
SqlHelper.Con.Open();
result = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
}
}
return result;
}
/// <summary>
/// 执行返回一条记录的泛型对象
/// </summary>
/// <typeparam name="T">泛型类型</typeparam>
/// <param name="reader">只进只读对象</param>
/// <returns>泛型对象</returns>
private static T ExecuteDataReader<T>(IDataReader reader)
{
T obj = default(T);
try
{
Type type = typeof(T);
obj = (T)Activator.CreateInstance(type);//从当前程序集里面通过反射的方式创建指定类型的对象
//obj = (T)Assembly.Load(SqlHelper._assemblyName).CreateInstance(SqlHelper._assemblyName + "." + type.Name);//从另一个程序集里面通过反射的方式创建指定类型的对象
PropertyInfo[] propertyInfos = type.GetProperties();//获取指定类型里面的所有属性
foreach (PropertyInfo propertyInfo in propertyInfos)
{
for (int i = 0; i < reader.FieldCount; i++)
{
string fieldName = reader.GetName(i);
if (fieldName.ToLower() == propertyInfo.Name.ToLower())
{
object val = reader[propertyInfo.Name];//读取表中某一条记录里面的某一列信息
if (val != null && val != DBNull.Value)
propertyInfo.SetValue(obj, val, null);//给对象的某一个属性赋值
break;
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return obj;
}
/// <summary>
/// 执行返回一条记录的泛型对象
/// </summary>
/// <typeparam name="T">泛型类型</typeparam>
/// <param name="commandText">SQL语句或存储过程名</param>
/// <param name="commandType">SQL命令类型</param>
/// <param name="param">SQL命令参数数组</param>
/// <returns>实体对象</returns>
public static T ExecuteEntity<T>(string commandText, CommandType commandType, params SqlParameter[] param)
{
T obj = default(T);
using (SqlHelper.Con)
{
using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))
{
cmd.CommandType = commandType;
cmd.Parameters.AddRange(param);
SqlHelper.Con.Open();
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
obj = SqlHelper.ExecuteDataReader<T>(reader);
}
}
}
return obj;
}
/// <summary>
/// 执行返回多条记录的泛型集合对象
/// </summary>
/// <typeparam name="T">泛型类型</typeparam>
/// <param name="commandText">SQL语句或存储过程名</param>
/// <param name="commandType">SQL命令类型</param>
/// <param name="param">SQL命令参数数组</param>
/// <returns>泛型集合对象</returns>
public static List<T> ExecuteList<T>(string commandText, CommandType commandType, params SqlParameter[] param)
{
List<T> list = new List<T>();
using (SqlHelper.Con)
{
using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))
{
try
{
cmd.CommandType = commandType;
cmd.Parameters.AddRange(param);
SqlHelper.Con.Open();
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
T obj = SqlHelper.ExecuteDataReader<T>(reader);
list.Add(obj);
}
}
catch (Exception ex)
{
throw ex;
}
}
}
return list;
}
#endregion
}
}
--------------------编程问答-------------------- 帮顶
--------------------编程问答-------------------- 网上很多的1 --------------------编程问答-------------------- 帮我搞个啊美女。。谢谢了。 --------------------编程问答-------------------- 课程设计都做烂的东西 --------------------编程问答-------------------- 给点钱,我给你做 --------------------编程问答-------------------- 我的QQ 117050774 --------------------编程问答-------------------- http://download.csdn.net/source/2855069
这个资源不错 --------------------编程问答-------------------- 51aspx。。。。http://www.51aspx.com/CV/studentPFSystem/
补充:.NET技术 , 非技术区