??? 本文介紹了在ASP.net環境下采用“自上而下地總體規劃,自下而上地應用開發”的策略開發一個管理信息系統的過程。通過分析某一學校學生管理的不足,創建了一套行之有效的計算機管理學生的方案。文章介紹了學生管理信息系統的系統分析部分,包括可行性分析、業務流程分析等;系統設計部分主要介紹了系統功能設計和數據庫設計及代碼設計;系統實現部分說明了幾個主要模塊的算法,?? 本系統界面友好,操作簡單,比較實用。
【關鍵字】:管理信息系統、學生管理、ASP.net應用
3.3系統功能模塊分析
SMS主要的功能包括以下幾個方面:用戶管理(管理員,老師管理和學生管理),課程管理,班級管理,成績管理選課管理。設計圖如5--3所示,除此之外,系統還包含了教師管理,班級管理等輔助功能模塊,用于協調4個主模塊。
用戶管理模塊:該模塊由兩個子模塊構成,分別示管理員與教師管理模塊和學生管理模塊。主要負責管理員與教師以及學生信息的管理功能,具體參看管理員與教師管理子模塊和學生管理子模塊的模塊功能描述。
管理員與教師管理子模塊:該模塊主要負責管理系統管理員的信息。它為用戶管理模塊的一個子模塊。主要功能是將本校的教師權限設為管理員。管理員課添加新教師信息,每個教師有唯一的編號,之后通過把教師加為管理員,而令此教師具有管理員的權限,從而教師可以登陸系統進行管理員的相關操作。
學生管理子模塊:該模塊主要負責管理所有在校注冊學生的個人信息。它為用戶管理模塊的一個子模塊。主要功能包括添加,刪除,修改,查找學生信息。每個學生有唯一的學號,管理員添加新生后,新生即可登陸此系統瀏覽個人信息,登陸此系統的用戶名和密碼默認都是此學生的學號。
課程管理模塊:該模塊負責管理本校所有的課程信息。主要功能包括添加,刪除,修改,查找課程信息。只有管理員才具有對課程信息進行維護的權限,課程的類型分三種:公共課,專業課和選修課。課程管理模塊是選課管理模塊的基礎,只有在課程管理中添有選修課的信息,學生才能進行選課。
選課管理模塊:該模塊負責選課的管理。主要功能包括刪除,統計學生選課信息。它以在課程管理系統中維護號的信息作為基礎,既可以對選修課程進行管理,也可以對統計選課人數,并根據學生選課時間先后決定最終選修此課的同學。
成績管理模塊:學生學的每一門課顯然最后要有成績,查詢的內肉包括課程名稱,學分,成績等。只有管理員可以錄入學生每一門課的成績,并能進行修改,學生只能查詢自己所學課程的成績,并且可以查詢每一學期學生所學課程所獲總學分,前提是成績必須及格,否則將沒有此課的成績。
班級管理模塊:該模塊負責班級的管理。主要功能包括添加,刪除和修改班級信息,以及對班級信息的查詢。只有管理員才具有對班級管理信息進行維護的權限。學生信息的添加是建立在班級信息維護的基礎上,每個學生必然屬于特定的班級。并且在管理員對學生成績查詢統計時,可以統計各個班級的平均分,最高分。
8.1學生管理系統首頁
學生管理系統首頁具有自動導航功能,不同用戶登陸時將根據不同的身份進入不同的系統功能頁。
代碼入下
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? public class _default : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.TextBox Tbx_userid;
???????? protected System.Web.UI.WebControls.TextBox Tbx_userpwd;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.Button Btn_enter;
??? ???? private void Page_Load(object sender, System.EventArgs e)
???????? {
???????????? // 在此處放置用戶代碼以初始化頁面
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
???????? private void InitializeComponent()
???????? {???
???????????? this.Btn_enter.Click += new System.EventHandler(this.Btn_enter_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? private void Btn_enter_Click(object sender, System.EventArgs e)
???????? {
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? SqlConnection cn=new SqlConnection(strconn);?
???????????? cn.Open();
???????????? string strsql="select * from users where User_id='"+Tbx_userid.Text+"'and User_password='"+Tbx_userpwd.Text+"'";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? SqlDataReader dr=cm.ExecuteReader();
???????????? if(dr.Read())
???????????? {?? Session["User_id"]=dr["User_id"];
????????????????? Session["user_power"]=dr["User_power"];??????????
????????????????? if((int)Session["User_power"]==0)
????????????????? {
????????????????????? Response.Redirect("query.aspx");
????????????????? }
????????????????? else
????????????????? {
????????????????????? Response.Redirect("student.aspx");
????????????????? }
???????????? }
???????????? else
???????????? {
????????????????????? Lbl_note.Text="對不起,登陸失敗!";
???????????? ? }
???????????? cn.Close();
???????? }
????????
??? }
}
8.2學生信息維護頁面
? 學生信息維護模塊時SMS重管理學生學籍的部分。頁面采用DataGrid控件的Dgd_student與DataSet數據集的綁定返回所有學生信息,可以對學生信息進行修改和刪除。
代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? /// <summary>
??? /// student 的摘要說明。
??? /// </summary>
??? public class student : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.LinkButton Lbtn_course;
???????? protected System.Web.UI.WebControls.LinkButton Lbtn_sortcourse;
???????? protected System.Web.UI.WebControls.DataGrid Dgd_student;
???????? protected System.Web.UI.WebControls.Button Btn_all;
???????? protected System.Web.UI.WebControls.Panel Pnl_sort;
???????? protected System.Web.UI.WebControls.TextBox Tbx_sortid;
???????? protected System.Web.UI.WebControls.Button Btn_ok;
???????? SqlConnection cn;
???????? protected System.Web.UI.WebControls.Button Btn_search;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.LinkButton Lbtn_add;
???????? protected System.Web.UI.WebControls.TextBox Tbx_name;
???????? protected System.Web.UI.WebControls.Button Btn_exit;
???????? protected System.Web.UI.WebControls.LinkButton Lbtn_grade;
???????? protected System.Web.UI.WebControls.LinkButton Lbtn_addclass;
???????? protected System.Web.UI.WebControls.LinkButton Lbtn_addteacher;
???????? protected System.Web.UI.WebControls.LinkButton Lbtn_student;
???????? string strsql;
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? cn=new SqlConnection(strconn);?
???????????? if(!IsPostBack)
???????????? Bindgrid();
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
????????
???????? private void InitializeComponent()
???????? {???
???????????? this.Lbtn_addclass.Click += new System.EventHandler(this.Lbtn_addclass_Click);
???????????? this.Lbtn_addteacher.Click += new System.EventHandler(this.Lbtn_addteacher_Click);
???????????? this.Lbtn_course.Click += new System.EventHandler(this.Lbtn_course_Click);
???????????? this.Lbtn_sortcourse.Click += new System.EventHandler(this.Lbtn_sortcourse_Click);
???????????? this.Lbtn_grade.Click += new System.EventHandler(this.Lbtn_grade_Click);
???????????? this.Btn_search.Click += new System.EventHandler(this.Btn_search_Click);
???????????? this.Btn_ok.Click += new System.EventHandler(this.Btn_ok_Click);
???????????? this.Lbtn_add.Click += new System.EventHandler(this.Lbtn_add_Click);
???????????? this.Btn_all.Click += new System.EventHandler(this.Btn_all_Click);
???????????? this.Btn_exit.Click += new System.EventHandler(this.Btn_exit_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? private void Btn_search_Click(object sender, System.EventArgs e)
???????? {?
???????????? Pnl_sort.Visible=true;
???????? }
???????? private void Btn_all_Click(object sender, System.EventArgs e)
???????? {?
????????????
???????????? Pnl_sort.Visible=false;
???????????? Bindgrid();
????????????
??? }
???????? public void DataGrid_Page(object sender,DataGridPageChangedEventArgs e)
???????? {
???????????? Dgd_student.CurrentPageIndex=e.NewPageIndex;
???????????? Bindgrid();
???????? }
???????? public void DataGrid_cancel(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? Dgd_student.EditItemIndex=-1;
???????????? Bindgrid();
????????????
???????? }
???????? public void DataGrid_edit(object sender,DataGridCommandEventArgs e)
???????? {
????????????
????????????????? Dgd_student.EditItemIndex=(int)e.Item.ItemIndex;
????????
????????????????? Bindgrid();
????????????
???????? }
???????? public void DataGrid_update(object sender,DataGridCommandEventArgs e)
???????? {
???????????? string strsql="update student set Student_name=@Student_name,Student_sex=@Student_sex,Student_nation=@Student_nation,Student_birthday=@Student_birthday,Student_time=@Student_time,Student_classid=@Student_classid,Student_home=@Student_home,Student_else=@Student_else where Student_id=@Student_id";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? try
???????????? {
???????????? cm.Parameters.Add(new SqlParameter("@Student_name",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Student_sex",SqlDbType.Char,10));
???????? ??? cm.Parameters.Add(new SqlParameter("@Student_nation",SqlDbType.Char,10));
???????????? cm.Parameters.Add(new SqlParameter("@Student_birthday",SqlDbType.DateTime,8));
???????????? cm.Parameters.Add(new SqlParameter("@Student_time",SqlDbType.DateTime,8));
???????????? cm.Parameters.Add(new SqlParameter("@Student_classid",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Student_home",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Student_else",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Student_id",SqlDbType.VarChar,50));
???????????? string colvalue=((TextBox)e.Item.Cells[1].Controls[0]).Text;
???????????? cm.Parameters["@Student_name"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[2].Controls[0]).Text;
???????????? cm.Parameters["@Student_sex"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[3].Controls[0]).Text;
???????????? cm.Parameters["@Student_nation"].Value=colvalue;
???????? colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text;
???????????? cm.Parameters["@Student_birthday"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[5].Controls[0]).Text;
???????????? cm.Parameters["@Student_time"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[6].Controls[0]).Text;
???????????? cm.Parameters["@Student_classid"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[7].Controls[0]).Text;
???????????? cm.Parameters["@Student_home"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[8].Controls[0]).Text;
???????????? cm.Parameters["@Student_else"].Value=colvalue;????????
???????? ??? cm.Parameters["@Student_id"].Value=Dgd_student.DataKeys[(int)e.Item.ItemIndex];
???????????? cm.Connection.Open();??????????
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="編輯成功";
????????????????? Dgd_student.EditItemIndex=-1;
???????????? }
???????????? catch
???????????? {
????????????????? Lbl_note.Text="編輯失敗,請檢查輸入!";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? cm.Connection.Close();????
???????????? Bindgrid();
????????????
???????? }
????????????????? public void DataGrid_delete(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? string strsql="delete from student where Student_id=@userid";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@userid",SqlDbType.VarChar,50));
???????????? cm.Parameters["@userid"].Value=Dgd_student.DataKeys[(int)e.Item.ItemIndex];
???????????? cm.Connection.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="刪除成功";
?????????????????
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="刪除失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? cm.Connection.Close();?????????
???????????? Bindgrid();
???????? }
???????? public void Bindgrid()
???????? {? ? strsql="select * from student";
???????????? SqlDataAdapter da=new SqlDataAdapter(strsql,cn);
???????????? DataSet ds=new DataSet();
???????????? da.Fill(ds);
???????????? Dgd_student.DataSource=ds;
???????????? Dgd_student.DataBind();
???????? }????????????????
???????? private void Btn_ok_Click(object sender, System.EventArgs e)
???????? {?
????????????
???????? ??? strsql="select * from student? where Student_id='"+Tbx_sortid.Text+"'or Student_name='"+Tbx_name.Text+"'";
???????????? SqlDataAdapter da=new SqlDataAdapter(strsql,cn);
???????????? DataSet ds=new DataSet();
???????????? da.Fill(ds);
???????????? Dgd_student.DataSource=ds;
???????????? Dgd_student.DataBind();
???????? }
???????? private void Lbtn_course_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("course.aspx");
???????? }
???????? private void Lbtn_sortcourse_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("student_course.aspx");
???????? }
???????? private void Lbtn_add_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("addstudent.aspx");
???????? }
???????? private void Btn_exit_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("default.aspx");
???????? }
???????? private void Lbtn_grade_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("grade_manage.aspx");
???????? }
???????? private void Lbtn_addclass_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("classes.aspx");
???????? }
???????? private void Lbtn_addteacher_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("teacher.aspx");
???????? }
???????? private void Lbtn_student_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("student.aspx");
???????? }
??? }
}
8.3學生信息添加頁面
學生信息添加頁面主要負責往數據庫里添加數據。后臺支持事件主要為Btn_ok_Click()事件負責當用戶單擊“確定”按鈕后的數據庫添加操作。利用RequiredFieldValidator控件可以用來驗證用戶輸入信息是否為空。若輸入學號存在,利用CustomValidator驗證控件,觸發ServerValidator事件,判斷是否存在此學號的學生。“重置”按鈕的click事件將完成刷新此頁面的功能。
代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? /// <summary>
??? /// addstudent 的摘要說明。
??? /// </summary>
??? public class addstudent : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.TextBox Tbx_id;
???????? protected System.Web.UI.WebControls.TextBox Tbx_name;
???????? protected System.Web.UI.WebControls.TextBox Tbx_nation;
???????? protected System.Web.UI.WebControls.TextBox Tbx_birthday;
???????? protected System.Web.UI.WebControls.TextBox Tbx_time;
???????? protected System.Web.UI.WebControls.TextBox Tbx_home;
???????? protected System.Web.UI.WebControls.TextBox Tbx_else;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_sex;
???????? protected System.Web.UI.WebControls.Button Btn_ok;
???????? protected System.Web.UI.WebControls.CustomValidator Cv_id;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.Button Btn_reset;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_name;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_id;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_nation;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_birthday;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_time;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_class;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_home;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_class;
??? ??? SqlConnection cn;
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {//班級名稱下拉列表框綁定
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? SqlConnection cn0=new SqlConnection(strconn);
???????????? if(!IsPostBack)
???????????? {
????????????????? cn0.Open ();
????????????????? string mysql="select * from class";
????????????????? SqlCommand cm1=new SqlCommand? (mysql,cn0);
????????????????? SqlDataReader dr1=cm1.ExecuteReader ();
????????????????? while(dr1.Read ())
????????????????? {
????????????????????? Ddl_class.Items .Add (new ListItem(dr1["Class_name"].ToString() ,dr1["Class_id"].ToString()) );
????????????????? }
????????????????? cn0.Close ();
???????????? }
???????????? // 在此處放置用戶代碼以初始化頁面
???????????? cn=new SqlConnection(strconn);?
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
????????
??? ??? private void InitializeComponent()
???????? {???
???????????? this.Cv_id.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(this.Cv_id_ServerValidate);
???????????? this.Btn_ok.Click += new System.EventHandler(this.Btn_ok_Click);
???????????? this.Btn_reset.Click += new System.EventHandler(this.Btn_reset_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? private void Btn_ok_Click(object sender, System.EventArgs e)
???????? {
????????????
???????????? SqlCommand cm=new SqlCommand("insert_student_1",cn);
???????????? cm.CommandType=CommandType.StoredProcedure;
???????????? try
???????????? {
???????????? cm.Parameters.Add(new SqlParameter("@Student_id",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Student_id"].Value=Tbx_id.Text;
???????????? cm.Parameters.Add(new SqlParameter("@Student_name",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Student_name"].Value=Tbx_name.Text;
???????????? cm.Parameters.Add(new SqlParameter("@Student_sex",SqlDbType.Char,10));
???????????? cm.Parameters["@Student_sex"].Value=Ddl_sex.SelectedItem.Value;
???????????? cm.Parameters.Add(new SqlParameter("@Student_nation",SqlDbType.Char,10));
???????????? cm.Parameters["@Student_nation"].Value=Tbx_nation.Text;
???????????? cm.Parameters.Add(new SqlParameter("@Student_birthday",SqlDbType.DateTime,8));
???????????? cm.Parameters["@Student_birthday"].Value=Tbx_birthday.Text;
???????????? cm.Parameters.Add(new SqlParameter("@Student_time",SqlDbType.DateTime,8));
???????????? cm.Parameters["@Student_time"].Value=Tbx_time.Text;
???????????? cm.Parameters.Add(new SqlParameter("@Student_classid",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Student_classid"].Value=Ddl_class.SelectedItem.Value;
???????????? cm.Parameters.Add(new SqlParameter("@Student_home",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Student_home"].Value=Tbx_home.Text;
???????????? cm.Parameters.Add(new SqlParameter("@Student_else",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Student_else"].Value=Tbx_else.Text;
???????????? cm.Connection.Open();
???????????? cm.ExecuteNonQuery();
???????????? cm.Connection.Close();
???????????? insert();
???????????? }
???????????? catch
???????????? {
????????????????? Lbl_note.Text="添加失敗,請檢查輸入!";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????? }
???????????? public void insert()
???????????? {
???????????? string strsl="insert into users(User_id,User_password,User_power) values(@User_id,@User_pwd,0)";
???????????? SqlCommand cm=new SqlCommand(strsl,cn);
???????????? cm.Parameters.Add(new SqlParameter("@User_id",SqlDbType.VarChar,50));
???????????? cm.Parameters["@User_id"].Value=Tbx_id.Text;
???????????? cm.Parameters.Add(new SqlParameter("@User_pwd",SqlDbType.VarChar,50));
???????????? cm.Parameters["@User_pwd"].Value=Tbx_id.Text;
???????????? cm.Connection.Open();
????????????????? try
????????????????? {
????????????????????? cm.ExecuteNonQuery();
????????????????????? Response.Redirect("student.aspx");
????????????????? }
????????????????? catch(SqlException)
????????????????? {
????????????????????? Lbl_note.Text="添加失敗";
????????????????????? Lbl_note.Style["color"]="red";
????????????????? }
???????????? cm.Connection.Close();
???????? }
???????? private void Btn_reset_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("addstudent.aspx");
???????? }
???????? private void Cv_id_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
???????? {
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? cn=new SqlConnection(strconn);
???????????? cn.Open();
???????????? SqlCommand cm=new SqlCommand("select_student_1",cn);
???????????? cm.CommandType=CommandType.StoredProcedure;
???????????? cm.Parameters.Add("@Student_id",SqlDbType.VarChar,50);
???????????? cm.Parameters["@Student_id"].Value=Tbx_id.Text;
???????????? SqlDataReader dr=cm.ExecuteReader();
???????????? if(dr.Read())
???????????? {
????????????????? args.IsValid=false;
???????????? }
???????????? else
???????????? {
????????????????? args.IsValid=true;
???????????? }
???????????? cn.Close();
???????? }
??? }
}
8.4課程信息管理頁面
課程信息管理頁面與學生信息維護頁面非常相似,進行DataGrid控件Dgd-course的綁定操作,管理員可以在此頁面進行課程信息的編輯和刪除。
主要相關代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? /// <summary>
??? /// course 的摘要說明。
??? /// </summary>
??? public class course : System.Web.UI.Page
??? {
??? ??? SqlConnection cn;
???????? protected System.Web.UI.WebControls.TextBox Tbx_name;
???????? protected System.Web.UI.WebControls.TextBox Tbx_id;
???????? protected System.Web.UI.WebControls.Button Btn_search;
???????? protected System.Web.UI.WebControls.DataGrid Dgd_course;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.Button Btn_exit;
???????? string strsql;
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {
???????????? // 在此處放置用戶代碼以初始化頁面
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? cn=new SqlConnection(strconn);?
???????????? if(!IsPostBack)
????????????????? Bindgrid();
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
????????
???????? /// <summary>
???????? /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
???????? /// 此方法的內容。
???????? /// </summary>
???????? private void InitializeComponent()
???????? {???
???????????? this.Btn_search.Click += new System.EventHandler(this.Btn_search_Click);
???????????? this.Btn_exit.Click += new System.EventHandler(this.Btn_exit_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? public void DataGrid_Page(object sender,DataGridPageChangedEventArgs e)
???????? {
???????????? Dgd_course.CurrentPageIndex=e.NewPageIndex;
???????????? Bindgrid();
???????? }
???????? public void DataGrid_edit(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? Dgd_course.EditItemIndex=(int)e.Item.ItemIndex;
???????????? Bindgrid();
????????????
???????? }
???????? public void DataGrid_cancel(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? Dgd_course.EditItemIndex=-1;
???????????? Bindgrid();
????????????
???????? }
???????? public void DataGrid_delete(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? string strsql="delete from course where Course_id=@course_id";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@course_id",SqlDbType.VarChar,50));
???????????? cm.Parameters["@course_id"].Value=Dgd_course.DataKeys[(int)e.Item.ItemIndex];
???????????? cm.Connection.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="刪除成功";
?????????????????
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="刪除失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? cm.Connection.Close();?????????
???????????? Bindgrid();
???????? }
???????? public void DataGrid_update(object sender,DataGridCommandEventArgs e)
???????? {
???????? ??? string strsql="update course set Course_name=@Course_name,Course_period=@Course_period,Course_credit=@Course_credit,Course_kind=@Course_kind where Course_id=@Course_id";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@Course_name",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Course_period",SqlDbType.Int,4));
???????????? cm.Parameters.Add(new SqlParameter("@Course_credit",SqlDbType.Int,4));
???????????? cm.Parameters.Add(new SqlParameter("@Course_kind",SqlDbType.Int,4));
???????????? cm.Parameters.Add(new SqlParameter("@Course_id",SqlDbType.VarChar,50));
???????????? string colvalue=((TextBox)e.Item.Cells[1].Controls[0]).Text;
???????????? cm.Parameters["@Course_name"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[2].Controls[0]).Text;
???????????? cm.Parameters["@Course_period"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[3].Controls[0]).Text;
???????????? cm.Parameters["@Course_credit"].Value=colvalue;
???????????? colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text;
???????????? cm.Parameters["@Course_kind"].Value=colvalue;
???????? ??? cm.Parameters["@Course_id"].Value=Dgd_course.DataKeys[(int)e.Item.ItemIndex];
???????????? cm.Connection.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="編輯成功";
????????????????? Dgd_course.EditItemIndex=-1;
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="編輯失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? cm.Connection.Close();????
???????????? Bindgrid();
????????????
???????? }
???????? public void Bindgrid()
???????? {
???????????? strsql="select * from course";
???????????? SqlDataAdapter da=new SqlDataAdapter(strsql,cn);
???????????? DataSet ds=new DataSet();
???????????? da.Fill(ds);
??? ???????? Dgd_course.DataSource=ds;
???????????? Dgd_course.DataBind();
???????? }
???????? private void Lbtn_addcourse_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("addcourse.aspx");
???????? }
???????? private void Btn_exit_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("default.aspx");
???????? }
????????
???????? private void Btn_search_Click(object sender, System.EventArgs e)
???????? {
???????????? strsql="select * from course? where Course_id='"+Tbx_id.Text+"'or Course_name='"+Tbx_name.Text+"'";
???????????? SqlDataAdapter da=new SqlDataAdapter(strsql,cn);
???????????? DataSet ds=new DataSet();
???????????? da.Fill(ds);
???????????? Dgd_course.DataSource=ds;
???????????? Dgd_course.DataBind();
???????? }
???????? private void Lbtn_assign_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("assigncourse.aspx");
???????? }
??? }
}
8.5錄入成績頁面
? 在錄入成績頁面的初始化事件Page_Load()事件對“課程”下拉列表框控件Ddl_course進行初始綁定,使其顯示該學生已選的所有課程信息。“錄入”按鈕的Click事件調用數據庫操作語句,對數據庫中相應學生,成績關系表中的成績信息進行更新。
主要相關代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? /// <summary>
??? /// addgrade 的摘要說明。
??? /// </summary>
??? public class addgrade : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.TextBox Tbx_studentid;
???????? protected System.Web.UI.WebControls.Button Btn_add;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.Button Btn_exit;
???????? protected System.Web.UI.WebControls.TextBox Tbx_term;
???????? protected System.Web.UI.WebControls.CustomValidator Cv_id;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_course;
???????? protected System.Web.UI.WebControls.TextBox Tbx_grade;
??? ??? SqlConnection cn;
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? // 在此處放置用戶代碼以初始化頁面
???????????? cn=new SqlConnection(strconn);?
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
????????
???????? /// <summary>
???????? /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
???????? /// 此方法的內容。
???????? /// </summary>
???????? private void InitializeComponent()
???????? {???
???????????? this.Tbx_studentid.TextChanged += new System.EventHandler(this.Tbx_studentid_TextChanged);
???????????? this.Cv_id.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(this.Cv_id_ServerValidate);
???????????? this.Btn_add.Click += new System.EventHandler(this.Btn_add_Click);
???????????? this.Btn_exit.Click += new System.EventHandler(this.Btn_exit_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? private void Btn_add_Click(object sender, System.EventArgs e)
???????? {
???????????? string strsql="update student_course set Student_grade=@Student_grade where Student_id=@Student_id and? Course_id=@Course_id and Course_year=@Course_year";
???????????? ?SqlCommand cm=new SqlCommand(strsql,cn);
???????????? ?cm.Parameters.Add(new SqlParameter("@Student_id",SqlDbType.VarChar,50));
???????????? ?cm.Parameters["@Student_id"].Value=Tbx_studentid.Text;
???????????? ?cm.Parameters.Add(new SqlParameter("@Course_id",SqlDbType.VarChar,50));
???????????? ?cm.Parameters["@Course_id"].Value=Ddl_course.SelectedItem.Value;
???????????? ?cm.Parameters.Add(new SqlParameter("@Course_year",SqlDbType.Char,10));
???????????? ?cm.Parameters["@Course_year"].Value=Tbx_term.Text;
???????????? cm.Parameters.Add(new SqlParameter("@Student_grade",SqlDbType.Int,4));
???????????? cm.Parameters["@Student_grade"].Value=Tbx_grade.Text;
???????????? ?cm.Connection.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
???????????? ??? Response.Redirect("grade_manage.aspx");
?????????????????
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="添加失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? ?cm.Connection.Close();????????
???????? ???
???????? }
????????
???????? private void Btn_exit_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("grade_manage.aspx");
???????? }
???????? private void Cv_id_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
???????? {
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? cn=new SqlConnection(strconn);
???????????? cn.Open();
???????????? string strsql="select * from student where Student_id='"+Tbx_studentid.Text+"'";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? SqlDataReader dr=cm.ExecuteReader();
???????????? if(dr.Read())
???????????? {
????????????????? args.IsValid=true;
???????????? }
???????????? else
???????????? {
????????????????? args.IsValid=false;
???????????? }
???????????? cn.Close();
????????
???????? }
???????? private void Tbx_studentid_TextChanged(object sender, System.EventArgs e)
???????? {??????? //課程名稱下拉列表框綁定
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? SqlConnection cn0=new SqlConnection(strconn);
????????????????? cn0.Open ();
????????????????? string mysql1="select course.* from student_course,course where student_course.Student_id='"+Tbx_studentid.Text+"'and student_course.Course_id=course.Course_id";
????????????????? SqlCommand cm1=new SqlCommand? (mysql1,cn0);
????????????????? SqlDataReader dr1=cm1.ExecuteReader ();
????????????????? while(dr1.Read ())
????????????????? {
????????????????????? Ddl_course.Items .Add (new ListItem(dr1["Course_name"].ToString() ,dr1["Course_id"].ToString()) );
????????????????? }
????????????????? cn0.Close ();
????????????
???????? }
????????
??? }
}
8.6添加學生必修課頁面
?? ??在添加學生必修課頁面初始化事件Page_Load事件中將數據庫中的所有課程及班級信息分別綁定到DropDownList控件的Ddl_course和Ddl_class控件中,“確定”按鈕Btn_ok控件的Click()事件完成往數據庫學生-課程信息表中添加所選班級范圍下所有學生的相應課程選課記錄的任務。
主要相關代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace sms
{
??? /// <summary>
??? /// addstudentcourse 的摘要說明。
??? /// </summary>
??? public class addstudentcourse : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.DropDownList Ddl_course;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_class;
???????? protected System.Web.UI.WebControls.TextBox Tbx_year;
???????? protected System.Web.UI.WebControls.Button Btn_ok;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.Button Btn_back;
??? ???
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {
???????????? // 在此處放置用戶代碼以初始化頁面
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? //連接本地計算機的sms數據庫
???????????? SqlConnection cn0= new SqlConnection (strconn);
???????????? if(!IsPostBack)
???????????? {
????????????????? //課程名稱下拉列表框綁定
????????????????? cn0.Open ();
????????????????? string mysql1="select * from course where Course_kind='0'or Course_kind='1'";
????????????????? SqlCommand cm1=new SqlCommand? (mysql1,cn0);
????????????????? SqlDataReader dr1=cm1.ExecuteReader ();
????????????????? while(dr1.Read ())
????????????????? {
????????????????????? Ddl_course.Items .Add (new ListItem(dr1["Course_name"].ToString() ,dr1["Course_id"].ToString()) );
????????????????? }
????????????????? cn0.Close ();
????????????????? //班級名稱下拉列表框綁定
????????????????? cn0.Open ();
????????????????? string mysql2="select * from class";
????????????????? SqlCommand cm2=new SqlCommand? (mysql2,cn0);
????????????????? SqlDataReader dr2=cm2.ExecuteReader ();???????????????
????????????????? while(dr2.Read ())
????????????????? {
????????????????????? Ddl_class.Items .Add (new ListItem(dr2["Class_name"].ToString() ,dr2["Class_id"].ToString()) );
????????????????? }
????????????????? cn0.Close ();
???????????? }
???????? }
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
????????
???????? /// <summary>
???????? /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
???????? /// 此方法的內容。
???????? /// </summary>
???????? private void InitializeComponent()
???????? {???
???????????? this.Btn_ok.Click += new System.EventHandler(this.Btn_ok_Click);
???????????? this.Btn_back.Click += new System.EventHandler(this.Btn_back_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? private void Btn_ok_Click(object sender, System.EventArgs e)
???????? {
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? SqlConnection cn= new SqlConnection (strconn);
???????????? cn.Open();
???????????? string strsql="insert into student_course(Student_id,Course_id,Course_year) (select Student_id,@Course_id,@Course_year from student where Student_classid=@classid) ";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@classid",SqlDbType.VarChar,50));
???????????? cm.Parameters["@classid"].Value=Ddl_class.SelectedItem.Value;
???????????? cm.Parameters.Add(new SqlParameter("@Course_id",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Course_id"].Value=Ddl_course.SelectedItem.Value;
???????????? cm.Parameters.Add(new SqlParameter("@Class_id",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Class_id"].Value=Ddl_class.SelectedItem.Value;
???????????? cm.Parameters.Add(new SqlParameter("@Course_year",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Course_year"].Value=Tbx_year.Text;?????????
???????????? try
??? ???????? {
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="添加成功,請返回";
?????????????????
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="添加失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }??
???????????? cn.Close();
???????? }
???????? private void Btn_back_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("course.aspx");
???????? }
??? }
}
8.7成績管理頁面
成績管理頁面完成的功能比較多,包括按選定的條件進行限定條件的成績查詢。同時,也可以根據成績范圍對包含在該范圍中的學生成績作一統計,具體統計這門課的平均分,最高分,參加考試總人數以及優秀人數和不及格人數。此頁面的關鍵就在于根據條件生成SQL語句。當“查詢”“統計”操作被觸發,系統將完成對數據庫中多個表 的操作。
主要相關代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? /// <summary>
??? /// grade_manage 的摘要說明。
??? /// </summary>
??? public class grade_manage : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.DropDownList Ddl_way;
???????? protected System.Web.UI.WebControls.TextBox Tbx_name;
???????? protected System.Web.UI.WebControls.Button Btn_search;
???????? protected System.Web.UI.WebControls.DataGrid Dgd_grade;
???????? protected System.Web.UI.WebControls.LinkButton Link_addgrade;
??? ??? SqlConnection cn;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_stat;
???????? protected System.Web.UI.WebControls.TextBox Tbx_area;
???????? protected System.Web.UI.WebControls.TextBox Tbx_classid;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_content;
???????? protected System.Web.UI.WebControls.Button Btn_count;
???????? protected System.Web.UI.WebControls.TextBox Tbx_year;
???????? protected System.Web.UI.WebControls.Label Lbl_average;
???????? protected System.Web.UI.WebControls.Label Lbl_high;
???????? protected System.Web.UI.WebControls.Label Lbl_a;
???????? protected System.Web.UI.WebControls.Label Lbl_unpass;
???????? protected System.Web.UI.WebControls.Label Lbl_all;
???????? protected System.Web.UI.WebControls.TextBox Tbx_term;
???????? string strsql;
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {
???????????? // 在此處放置用戶代碼以初始化頁面
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? cn=new SqlConnection(strconn);?
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
????????
???????? /// <summary>
???????? /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
???????? /// 此方法的內容。
???????? /// </summary>
???????? private void InitializeComponent()
???????? {???
???????????? this.Btn_count.Click += new System.EventHandler(this.Btn_count_Click);
???????????? this.Btn_search.Click += new System.EventHandler(this.Btn_search_Click);
???????????? this.Link_addgrade.Click += new System.EventHandler(this.Link_addgrade_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
????????
???????? private void Link_addgrade_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("addgrade.aspx");
???????? }
???????? private void Btn_search_Click(object sender, System.EventArgs e)
???????? {
???????????? Bindgrid();
???????? }
???????? public void DataGrid_Page(object sender,DataGridPageChangedEventArgs e)
???????? {
???????????? Dgd_grade.CurrentPageIndex=e.NewPageIndex;
???????????? Bindgrid();
???????? }
???????? public void Bindgrid()
???????? {
???????????? if(Ddl_way.SelectedItem.Text=="按學號")
???????????? {
????????????????? if(Tbx_term.Text=="所有")
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where student_course.Student_id='"+Tbx_name.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????????? }
????????????????? else
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where student_course.Student_id='"+Tbx_name.Text+"' and Course_year='"+Tbx_term.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????????? }
???????????? }
???????????? else if(Ddl_way.SelectedItem.Text=="按課號")
???????????? {
????????????????? if(Tbx_term.Text=="所有")
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where student_course.Course_id='"+Tbx_name.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????????? }
????????????????? else
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where student_course.Course_id='"+Tbx_name.Text+"' and student_course.Course_year='"+Tbx_term.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????????? }
???????????? }
???????????? else if(Ddl_way.SelectedItem.Text=="按課程名")
???????????? {
????????????????? if(Tbx_term.Text=="所有")
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where course.Course_name='"+Tbx_name.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????
????????????????? }
????????????????? else
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where course.Course_name='"+Tbx_name.Text+"' and student_course.Course_year='"+Tbx_term.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????????? }
???????????? }
???????????? else if(Ddl_way.SelectedItem.Text=="按班級")
???????????? {
????????????????? if(Tbx_term.Text=="所有")
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where student.Student_classid='"+Tbx_name.Text+"'and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????
????????????????? }
????????????????? else
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where student.Student_classid='"+Tbx_name.Text+"' and student_course.Course_year='"+Tbx_term.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????????? }
???????????? }
???????????? else if(Ddl_way.SelectedItem.Text=="按教師號")
???????????? {
????????????????? if(Tbx_term.Text=="所有")
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where teacher.Teacher_id='"+Tbx_name.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????
????????????????? }
????????????????? else
????????????????? {
????????????????????? strsql="select student_course.ID,student_course.Student_id,student.Student_name,student.Student_classid,student_course.Course_id,course.Course_name,teacher.Teacher_name,student_course.Student_grade from course,student,teacher,student_course,teacher_course where teacher.Teacher_id='"+Tbx_name.Text+"' and student_course.Course_year='"+Tbx_term.Text+"' and student_course.Course_id=course.Course_id and student_course.Student_id=student.Student_id and student_course.Course_id=teacher_course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher_course.Class_id=student.Student_classid";
????????????????? }
???????????? }
????????????
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cn.Open();
???????????? SqlDataReader dr=cm.ExecuteReader();
???????????? if(dr.Read())
???????????? {
????????????????? Dgd_grade.Visible=true;
????????????????? cn.Close();
????????????????? cn.Open();
????????????????? SqlDataAdapter da=new SqlDataAdapter(strsql,cn);
????????????????? DataSet ds=new DataSet();
????????????????? da.Fill(ds);
????????????????? Dgd_grade.DataSource=ds;
????????????????? Dgd_grade.DataBind();
???????????? }
???????????? else
???????????? {
????????????????? Dgd_grade.Visible=false;
????????????????? Lbl_note.Text="無紀錄!";
???????????? }
???????????? cn.Close();
???????? }
???????? public void DataGrid_cancel(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? Dgd_grade.EditItemIndex=-1;
???????????? Bindgrid();
????????????
???????? }
???????? public void DataGrid_edit(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? Dgd_grade.EditItemIndex=(int)e.Item.ItemIndex;
???????????? Bindgrid();
????????????
???????? }
???????? public void DataGrid_update(object sender,DataGridCommandEventArgs e)
???????? {
???????????? string strsql="update student_course set Student_grade=@Student_grade where Student_id=@Student_id and Course_id=@Course_id and ID=@id";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@Student_grade",SqlDbType.Int,4));
???????????? cm.Parameters.Add(new SqlParameter("@Course_id",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Student_id",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@id",SqlDbType.Char,10));
???????????? string colvalue=((TextBox)e.Item.Cells[7].Controls[0]).Text;
???????????? cm.Parameters["@Student_grade"].Value=colvalue;
???????????? cm.Parameters["@Student_id"].Value=e.Item.Cells[1].Text;
???????????? cm.Parameters["@Course_id"].Value=e.Item.Cells[4].Text;
???????????? cm.Parameters["@Student_grade"].Value=colvalue;
???????????? cm.Parameters["@id"].Value=Dgd_grade.DataKeys[(int)e.Item.ItemIndex];
???????????? cm.Connection.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="編輯成功";
????????????????? Dgd_grade.EditItemIndex=-1;
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="編輯失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? cm.Connection.Close();????
???????????? Bindgrid();
????????????
???????? }
????????
???????? public void DataGrid_delete(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? string strsql="delete from student_course where ID=@id";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@id",SqlDbType.Char,10));???????????
??????????? cm.Parameters["@id"].Value=Dgd_grade.DataKeys[(int)e.Item.ItemIndex];
???????????? cm.Connection.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="刪除成功";
?????????????????
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="刪除失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? cm.Connection.Close();?????????
???????????? Bindgrid();
???????? }
???????? private void Btn_count_Click(object sender, System.EventArgs e)
???????? {
???????????? if(Ddl_stat.SelectedItem.Value=="系別")
???????????? {
?????????????????????
???????????? ?? if(Ddl_content.SelectedItem.Text=="總人數")
???????????? ?? {
????????????????? ?? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_department='"+Tbx_area.Text+"' ";
???????????? ?? }
???????????? ?? else if(Ddl_content.SelectedItem.Text=="優秀人數")
???????????? ?? {
????????????????? ?? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_department='"+Tbx_area.Text+"'and Student_grade>=85 ";
???????????? ?? }
???????????? ?? else if(Ddl_content.SelectedItem.Text=="不及格人數")
???????????? ?? {
????????????????? ?? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_department='"+Tbx_area.Text+"'and Student_grade<60 ";
???????????? ?? }
????????????????? else
???????????? ?? {
????????????????? ?strsql="select AVG(Student_grade),MAX(Student_grade) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_department='"+Tbx_area.Text+"' ";
???????????? ?? }
???????????? }
???????????? else if(Ddl_stat.SelectedItem.Value=="學院")
???????????? {
????????????????? if(Ddl_content.SelectedItem.Text=="總人數")
????????????????? {
????????????????????? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_college='"+Tbx_area.Text+"' ";
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="優秀人數")
????????????????? {
????????????????????? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_college='"+Tbx_area.Text+"'and Student_grade>=85 ";
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="不及格人數")
????????????????? {
????????????????????? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_college='"+Tbx_area.Text+"'and Student_grade<60 ";
????????????????? }
????????????????? else
????????????????? {
????????????????????????? strsql="select AVG(Student_grade),MAX(Student_grade) from student_course,student,class where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"'and student_course.Student_id=student.Student_id and student.Student_classid=class.Class_id and class.Class_college='"+Tbx_area.Text+"' ";
????????????????? }
?????????????????
?????????????????
???????????? }
???????????? else if(Ddl_stat.SelectedItem.Value=="班級")
???????????? {
????????????????? if(Ddl_content.SelectedItem.Text=="總人數")
????????????????? {
????????????????????? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"' and student_course.Student_id=student.Student_id and student.Student_classid='"+Tbx_area.Text+"'";
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="優秀人數")
????????????????? {
????????????????? strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"' and student_course.Student_id=student.Student_id and student.Student_classid='"+Tbx_area.Text+"'and Student_grade>=85";
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="不及格人數")
?????????????????? {strsql="select AVG(Student_grade),MAX(Student_grade),COUNT(*) from student_course,student where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"' and student_course.Student_id=student.Student_id and student.Student_classid='"+Tbx_area.Text+"'and Student_grade<60";
????????????????? }
????????????????? else
????????????????? {
??????????????????? strsql="select AVG(Student_grade),MAX(Student_grade) from student_course,student where Course_id='"+Tbx_classid.Text+"' and student_course.Course_year='"+Tbx_year.Text+"' and student_course.Student_id=student.Student_id and student.Student_classid='"+Tbx_area.Text+"'";
????????????????? }
?????????????????????
?????????????????
???????????? }
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cn.Open();
???????????? SqlDataReader dr=cm.ExecuteReader();
???????????? if(dr.Read())
???????????? {
????????????????? if(Ddl_content.SelectedItem.Text=="均分")
????????????????? {
????????????????????? Lbl_average.Visible=true;
????????????????????? Lbl_average.Text="平均分為:"+dr[0].ToString();
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="最高分")
????????????????? {
????????????????????? Lbl_high.Visible=true;
????????????????????? Lbl_high.Text="最高分為:"+dr[1].ToString();
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="總人數")
????????????????? {
????????????????????? Lbl_all.Visible=true;
????????????????????? Lbl_all.Text="總人數為:"+dr[2].ToString();
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="優秀人數")
????????????????? {
????????????????????? Lbl_a.Visible=true;
????????????????????? Lbl_a.Text="優秀人數為:"+dr[2].ToString();
????????????????? }
????????????????? else if(Ddl_content.SelectedItem.Text=="不及格人數")
????????????????? {
????????????????????????? Lbl_unpass.Visible=true;
????????????????????? Lbl_unpass.Text="不及格人數為:"+dr[2].ToString();
????????????????? }
????????????????? else
????????????????? {Lbl_note.Text="無此信息";
????????????????? }
????????????????? cn.Close();
???????????? }
???????????? ?
???????? }
????????
??? }
}
8.8學生選課管理頁面
學生選課管理頁面窗體所示,學生選課后需要管理員進一步確認管理,來確定最終選課信息。
主要相關代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? /// <summary>
??? /// student_course 的摘要說明。
??? /// </summary>
??? public class student_course : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.Button Btn_student;
???????? protected System.Web.UI.WebControls.DataGrid Dgd_sort;
???????? protected System.Web.UI.WebControls.Label Lbl_all;
???????? protected System.Web.UI.WebControls.TextBox Tbx_year;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.Button Btn_exit;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_course;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_teacher;
??? ??? SqlConnection cn;
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {?? //教師名稱下拉列表框綁定
???????????? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? //連接本地計算機的sms數據庫
???????????? SqlConnection cn0= new SqlConnection (strconn);
???????????? if(!IsPostBack)
???????????? {
????????????????? cn0.Open ();
????????????????? string mysql="select * from teacher";
????????????????? SqlCommand cm0=new SqlCommand? (mysql,cn0);
????????????????? SqlDataReader dr0=cm0.ExecuteReader ();
????????????????? while(dr0.Read ())
????????????????? {
????????????????????? Ddl_teacher.Items .Add (new ListItem(dr0["Teacher_name"].ToString(),dr0["Teacher_id"].ToString()) );
????????????????? }
????????????????? cn0.Close ();
????????????????? //課程名稱下拉列表框綁定
????????????????? cn0.Open ();
????????????????? string mysql1="select * from course";
????????????????? SqlCommand cm1=new SqlCommand? (mysql1,cn0);
????????????????? SqlDataReader dr1=cm1.ExecuteReader ();
????????????????? while(dr1.Read ())
????????????????? {
????????????????????? Ddl_course.Items .Add (new ListItem(dr1["Course_name"].ToString() ,dr1["Course_id"].ToString()) );
????????????????? }
????????????????? cn0.Close ();
???????????? }
???????????? // 在此處放置用戶代碼以初始化頁面
???????????? cn=new SqlConnection(strconn);
????????????
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }
????????
???????? /// <summary>
???????? /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
???????? /// 此方法的內容。
???????? /// </summary>
???????? private void InitializeComponent()
???????? {???
???????????? this.Btn_student.Click += new System.EventHandler(this.Btn_student_Click);
???????????? this.Btn_exit.Click += new System.EventHandler(this.Btn_exit_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? private void Btn_student_Click(object sender, System.EventArgs e)
???????? { Bindgrid();???? ?
???????? }
???????? public void DataGrid_delete(object sender,DataGridCommandEventArgs e)
???????? {
????????????
???????????? string strsql="delete from student_course where ID=@id";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@ID",SqlDbType.BigInt,8));
???????????? cm.Parameters["@id"].Value=Dgd_sort.DataKeys[(int)e.Item.ItemIndex];
???????????? cm.Connection.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
????????????????? Lbl_note.Text="刪除成功";
?????????????????
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="刪除失敗";
????????????????? Lbl_note.Style["color"]="red";
???????????? }
???????????? cm.Connection.Close();?????????
???????????? Bindgrid();
???????? }
????????
???????? public void Bindgrid()
???????? {
??????????? string strsql="select student_course.ID,student.Student_id,student.Student_classid from student_course,student,teacher_course where student_course.Course_id='"+Ddl_course.SelectedItem.Value+"' and student_course.Course_year=teacher_course.Course_year and student_course.Course_year='"+Tbx_year.Text+"'and teacher_course.Teacher_id='"+Ddl_teacher.SelectedItem.Value+"'and student_course.Course_id=teacher_course.Course_id and student.Student_id=student_course.Student_id";
???????????? SqlDataAdapter da=new SqlDataAdapter(strsql,cn);
???????????? DataSet ds=new DataSet();
???????????? da.Fill(ds);
???????????? Dgd_sort.DataSource=ds;
???????????? Dgd_sort.DataBind();
???????????? string strsq="select COUNT(*) from student_course,student,teacher_course where student_course.Course_id='"+Ddl_course.SelectedItem.Value+"' and ?student_course.Course_year=teacher_course.Course_year and student_course.Course_year='"+Tbx_year.Text+"'and teacher_course.Teacher_id='"+Ddl_teacher.SelectedItem.Value+"'and student_course.Course_id=teacher_course.Course_id and student.Student_id=student_course.Student_id";
???????????? SqlCommand cm1=new SqlCommand(strsq,cn);?????
???????????? cn.Open();
???????????? SqlDataReader dr=cm1.ExecuteReader();
???????????? if(dr.Read())
???????????? {
????????????????????? Lbl_all.Text="選課總人數為:"+dr[0].ToString();
???????????? }
???????????? else
???????????? {
????????????????? Lbl_all.Text="無人選此課";
???????????? }
???????????? cn.Close();
???????? }
???????? private void Btn_exit_Click(object sender, System.EventArgs e)
???????? {
???????????? Response.Redirect("default.aspx");
???????? }
????????
??? }
}
8.9學生選課頁面
學生可進入學生選課頁面瀏覽本學期待選課程的信息,可以設定查詢條件,可以根據選此課的人數,教師等情況來確定是否選擇此課。
主要相關代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace sms
{
??? /// <summary>
??? /// sortcourse 的摘要說明。
??? /// </summary>
??? public class sortcourse : System.Web.UI.Page
??? {
???????? protected System.Web.UI.WebControls.DataGrid Dgd_sort;
???????? protected System.Web.UI.WebControls.TextBox Tbx_courseid;
???????? protected System.Web.UI.WebControls.TextBox Tbx_year;
???????? protected System.Web.UI.WebControls.Button Btn_look;
???????? protected System.Web.UI.WebControls.TextBox Tbx_teacher;
???????? protected System.Web.UI.WebControls.TextBox Tbx_term;
???????? protected System.Web.UI.WebControls.Button Btn_sort;
???????? protected System.Web.UI.WebControls.Label Lbl_all;
???????? protected System.Web.UI.WebControls.Label Lbl_note;
???????? protected System.Web.UI.WebControls.Button Btn_yes;
???????? protected System.Web.UI.WebControls.Button Btn_no;
???????? protected System.Web.UI.WebControls.Panel Pn_yes;
???????? protected System.Web.UI.WebControls.CustomValidator Cv_course;
???????? protected System.Web.UI.WebControls.RequiredFieldValidator Rfv_year;
???????? SqlConnection cn;
???????? protected System.Web.UI.WebControls.DropDownList Ddl_course;string strsql;
???????? private void Page_Load(object sender, System.EventArgs e)
???????? {?? string strconn= ConfigurationSettings.AppSettings["dsn"];
???????????? cn=new SqlConnection(strconn);?
???????????? if(!IsPostBack)
???????????? {
????????????????? //課程名稱下拉列表框綁定
?????????????????
????????????????? SqlConnection cn0=new SqlConnection(strconn);
????????????????? cn0.Open ();
????????????????? string mysql1="select * from course where Course_kind='2'";
????????????????? SqlCommand cm1=new SqlCommand (mysql1,cn0);
????????????????? SqlDataReader dr1=cm1.ExecuteReader ();
????????????????? Ddl_course.Items .Add (new ListItem("","") );
????????????????? while(dr1.Read ())
????????????????? {
????????????????????? Ddl_course.Items .Add (new ListItem(dr1["Course_name"].ToString() ,dr1["Course_id"].ToString()) );
????????????????? }
????????????????? cn0.Close ();
?????????????????
???????????? }
???????? }
???????? #region Web Form Designer generated code
???????? override protected void OnInit(EventArgs e)
???????? {
???????????? //
???????????? // CODEGEN:該調用是 ASP.NET Web 窗體設計器所必需的。
???????????? //
???????????? InitializeComponent();
???????????? base.OnInit(e);
???????? }??????? /// <summary>
???????? /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
???????? /// 此方法的內容。
???????? /// </summary>
???????? private void InitializeComponent()
???????? {???
???????????? this.Btn_sort.Click += new System.EventHandler(this.Btn_sort_Click);
???????????? this.Cv_course.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(this.Cv_course_ServerValidate);
???????????? this.Btn_yes.Click += new System.EventHandler(this.Btn_yes_Click);
???????????? this.Btn_no.Click += new System.EventHandler(this.Btn_no_Click);
???????????? this.Btn_look.Click += new System.EventHandler(this.Btn_look_Click);
???????????? this.Load += new System.EventHandler(this.Page_Load);
???????? }
???????? #endregion
???????? private void Btn_sort_Click(object sender, System.EventArgs e)
???????? {
????????????
???????????? string strsq="select COUNT(Student_id) from student_course where Course_id='"+Tbx_courseid.Text+"' and Course_year='"+Tbx_year.Text+"'";
???????????? SqlCommand cm1=new SqlCommand(strsq,cn);?????
???????????? cn.Open();
???????????? SqlDataReader dr=cm1.ExecuteReader();
???????????? if(dr.Read())
???????????? {
????????????????? Lbl_all.Text="選此課總人數為:"+dr[0].ToString();
??????????? }
???????????? else
???????????? {
????????????????? Lbl_all.Text="無人選此課";
???????????? }
???????????? Pn_yes.Visible=true;
???????????? cn.Close();
????????
???????? }
??? ?
???????? private void Btn_yes_Click(object sender, System.EventArgs e)
???????? {
???????? ??? strsql="insert into student_course(Student_id,Course_id,Course_year) values(@Student_id,@Course_id,@Course_year)";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? cm.Parameters.Add(new SqlParameter("@Student_id",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Course_id",SqlDbType.VarChar,50));
???????????? cm.Parameters.Add(new SqlParameter("@Course_year",SqlDbType.VarChar,50));
???????????? cm.Parameters["@Student_id"].Value=Session["User_id"].ToString();
???????????? cm.Parameters["@Course_id"].Value=Tbx_courseid.Text;
???????????? cm.Parameters["@Course_year"].Value=Tbx_year.Text;
???????????? cn.Open();
???????????? try
???????????? {
????????????????? cm.ExecuteNonQuery();
???????????? }
???????????? catch(SqlException)
???????????? {
????????????????? Lbl_note.Text="添加失敗!";
???????????? }
???????????
???????????? cn.Close();
????????
???????? }
???????? private void Btn_no_Click(object sender, System.EventArgs e)
???????? {
???????? ?Lbl_all.Text="請重新選擇";
???????? }
???????? private void Cv_course_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
???????? {???????????
???????????? cn.Open();
???????????? strsql="select * from course where Course_id='"+Tbx_courseid.Text+"'";
???????????? SqlCommand cm=new SqlCommand(strsql,cn);
???????????? SqlDataReader dr=cm.ExecuteReader();
???????????? if(dr.Read())
???????????? {
????????????????? args.IsValid=true;
???????????? }
???????????? else
???????????? {
????????????????? args.IsValid=false;
???????????? }
???????????? cn.Close();
???????? }
???????? private void Btn_look_Click(object sender, System.EventArgs e)
???????? {
???????????? if(Ddl_course.SelectedItem.Text=="")
???????????? {
????????????????? if(Tbx_teacher.Text=="")
????????????????? {strsql="select course.Course_name,course.Course_id,teacher.Teacher_name,course.Course_credit,course.Course_period from course,teacher,teacher_course where teacher_course.Course_year='"+Tbx_term.Text+"' and teacher_course.Course_id=course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id";
????????????????? }
????????????????? else
????????????????? {
????????????????? strsql="select course.Course_name,course.Course_id,teacher.Teacher_name,course.Course_credit,course.Course_period from course,teacher,teacher_course where teacher_course.Course_year='"+Tbx_term.Text+"' and teacher_course.Course_id=course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and teacher.Teacher_name='"+Tbx_teacher.Text+"'";
????????????
????????????????? }
???????????? }
???????????? else
???????????? {
????????????????? if(Tbx_teacher.Text=="")
????????????????? {
????????????????? strsql="select course.Course_name,course.Course_id,teacher.Teacher_name,course.Course_credit,course.Course_period from course,teacher,teacher_course where teacher_course.Course_year='"+Tbx_term.Text+"' and teacher_course.Course_id=course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and course.Course_name='"+Ddl_course.SelectedItem.Text+"'";
????????????
????????????????? }
????????????????? else
????????????????? {
????????????????????? strsql="select course.Course_name,course.Course_id,teacher.Teacher_name,course.Course_credit,course.Course_period from course,teacher,teacher_course where teacher_course.Course_year='"+Tbx_term.Text+"' and teacher_course.Course_id=course.Course_id and teacher_course.Teacher_id=teacher.Teacher_id and course.Course_name='"+Ddl_course.SelectedItem.Text+"' and teacher.Teacher_name='"+Tbx_teacher.Text+"'";
????????????
????????????????? }
???????????? }
???????????? SqlDataAdapter da=new SqlDataAdapter(strsql,cn);
???????????? DataSet ds=new DataSet();
???????????? da.Fill(ds);
???????????? Dgd_sort.DataSource=ds;
???????????? Dgd_sort.DataBind();
???????? }
????????
??? }
}