基于ASP.NET和Access的学生成绩录入页面设计与实现

基于ASP.NET和Access的学生成绩录入页面设计与实现


2024年6月21日发(作者:)

电脑编程技巧与维护 

控件名 属性名 属性值 备注 

ID stuUpd 

Button2 

T xt 更新 

ID stuCancel 

Button3 

T xt 取消 

ID stuNext 

Button4 

Text 下一条 

3页面的实现 

3.1访问数据库的connection对象的处理 

在连接数据库时.需要创建一个connection对象来连接数 

据库,为了优化代码,因此在web.config文件中设置了一个 

connectionStrings节点,因为连接Access数据库需要考虑数据 

库的所在的位置,因此在本节点中添加了“DBConnStr”,用 

来存放连接字符串的前半部分, “DBConnStrPath”用来存放 

数据库的相对位置。 

<connectionStrings> 

<add name=”DBConnStr”connectionSuing=”provider= 

microsoft.jet.oledb.4.0:data source=”,> 

<add name=”DBConnStrPath” connectionSuing=”~, 

App

_

Data/studentMS.mdb”/> 

</connectionSuings> 

在页面的代码文件中.考虑到多处需要访问数据库,因 

此设定了一个全局的connection对象conn,再在Page—Load 0 

事件中对conn进行赋值。 

在更新成绩时,因为要获取旧成绩,所以定义了一个静 

态的全局变量oldScore,以此来保存旧成绩。 

因为使用的是Access数据库,所以需要引入相应的命名 

空间。 

using System.Data.OleDb; 

全局变量如下: 

static sUing oldScore; 

OleDbConnection conn=new OleDbConnection 0; 

Page

Load 0事件中获取连接字符串代码如下: 

conn.ConnectionString=System.Configuration.Configuration— 

Manager.ConnectionSuings['|DBConnStr”】.ConnectionString; 

conn.ConnectionSuing+=MapPath fSystem.Configuration.Con— 

ifgurationManager.ConnectionSuings[”DBConnStrPath”】.Con— 

nectionString); 

3.2 Page

Load事件的实现 

Page

_

oLad 0事件处理获取连接字符串外.还需要从学生 

表中筛选出不同的系别,添加到系别列表,从课程表中筛选 

出不同的课程名.添加到课程列表中。最后调用ShowStuList 

方法。 

访问数据库有两种方式.一种是离线连接方式,另一种 

是在线连接方式,由于版面原因,只显示离线连接方式,代 

码如下: 

if(!IsPostBack) 

{ 

oldScore=””: 

_62 20疆1醺3 ̄建14羁与壤 ; 

/璃线连接 

OleDbDataAdapter da=new OleDbDataAdapter se- 

lect distinct dep from students”,conn); 

DataSet ds=new DataSet 0; 

da.Fi11(ds,”xb”); 

for(int i=0;i<ds.Tables【.'xb”】.Rows.Count;i++) 

sdep.Items.Add(ds.Tables【I.xb”】.Rows【i] [0】. 

ToString()); 

da.SelectCommand=new OleDbCornmand(”select 

cname from courses”,conn); 

da.Fi11(ds,”kc”); 

for(int i=0;i<ds.Tables【¨kc”】.Rows.Count;i++) 

course.Items.Add(ds.Tables【-t kc”】.Rows[i】 

【0】.ToSuing()); 

} 

3.3 自定义方法ShowStuList的实现 

ShowStuList方法主要是显示当前系别的学生学号,并将 

学号添加到学号列表中。代码如下: 

public void ShowStuList(object sender,EventArgs e)/,显 

,/示当前系部的学生的学号 

{ 

sid.Items.Clear 0; 

suing sqlStr=’’select sid from students where dep= + 

sdep.SelectedValue+…’’: 

OleDbDataAdapter da=new OleDbDataAdapter(sqlStr, 

conn):,倩线连接 

DataSet ds=new DataSet 0: 

da.Fill(ds,”xh”); 

for(int i=0;i<ds.Tables[”xh”】.Rows.Count;i++) 

sid.Items.Add(ds.Tables【_.)【tl”】.Rows【i】 【0]. 

ToString 0); 

stuPre.Visible=false; 

ShowOtherlnfo(sender,e);刷用自定义方法显示学生 

||成绩 

} 

3.4自定义方法ShowOtherlnfo的实现 

本方法主要是显示当前学号当前课程的学生姓名和成绩, 

代码如下: 

public void ShowOtherlnfo(object sender,EventArgs e) 

{ 

sUing sqlStr=”select from stuScore where sid=@sid 

and cname=@cname”: 

OleDbDataAdapter da=new OleDbDataAdapter(sqlStr, 

conn);f,离线连接 

da.S Add(”@sid”,OleDb— 

Type.Char,10,”sid”); 

da.SelectCommand.Parameters.Add C@cname”,OleDb- 

Type.Char,20,”cname”); 

[”@sid”].Value=sid.Se- 

lectedValue; 

【.’@cname”】.Value= 

course.SelectedValue; 

DataSet ds=new DataSet(); 

da.Fill(ds,”cx”); 

if(ds.Tables【.’CX”】.Rows.Count>o) 

NETW0RK AND C0MMUNICA ⅡON 

{ 

sname.Text=ds.Tables[.|CX”】.Rows【0] 

[2】 

ToString 0; 

score.Text=ds.Tables【”CX”】.Rows[0】 

[3] 

ToString(); 

oldScore=score.Text; 

} 

else 

{ 

da.Selec Clear 0; 

da.SelectCommand.CommandText=”select sid,name 

from students Where sid=@sid”: 

AddWithValue( ” 

@sid”,sid.SelectedValue); 

da.Fi11(ds,”st”); 

sname.Text=ds.Tables[”st”].Rows【0] [1].ToString(); 

score.Text=… : 

oldScore=…’: 

) 

,/判断上一条和下一条按钮是否显示 

if(sid.SelectedIndex!=sid.Items.Count—1) 

stuNext.Visible=true; 

else 

stuNext.Visible=false; 

if(sid.Selectedlndex!=01 

stuPre.Visible=true; 

else 

stuPre.Visible=false; 

} 

3.5更新功能的实现 

本功能用在线连接方式更简单,代码如下: 

string sqlStr=”select cid from courses where cname= 

@cname”: 

string newScore=score.Text; 

conn.Open 0:,/在线连接 

string cidz=…’; 

OleDbCommand sqlCmd=new OleDbCommand(sqlStr,conn); 

sqlCmd.Parameters.Add(”@cname”,OleDbType.Char,20,” 

cname”); 

sqlCmd.Paramete ̄[”@cname”】.Value=course.Select- 

edValue; 

OleDbDataReader dr=sqlCmd.ExecuteReader 0: 

if(dr.Read()) 

cidz=dr[0].ToString 0.Trim 0; 

rd.Close 0; 

if(oldScore!=newScore&&oldScore==…’),,插入新成绩 

{ 

sqlCmd.Parameters.Clear 0; 

sqlCmd.CommandText=”insert into scores values( ’+ 

sid.SelectedValue+…, ’+cidz+…,”+newScore+”)”; 

sqlCmd.ExecuteNonQuery 0; 

) 

if(oldScore!=newScore&&oldScore!=…’)/厦新成绩 

{ 

sqlCmd.Paramete ̄.Clear(); 

网络与通信 

sqlCmd.CommandText=。’update scores set score--” 

+newScore+”where sid= ”+sid.SelectedValue+…and cid= 

+cidz+…”: 

sqlCmd.ExecuteNonQuery 0; 

} 

conn.Close 0; 

3.6其他代码 

当重新选择系别,需要调用ShowStuList(sender,e)方法重 

新显示学生学号;当重新选择课程,需要调用ShowOtherlnfo 

(sender,e)重新显示成绩;当重新选择学号,需要调用 

ShowOtherlnfo(sender,e)重新显示学生姓名和成绩。 

protected void stuPre

_

Click(object sender,EventArgs e) 

,/上一条按钮的功能实现 

{ 

int nowlndex=sid.SelectedIndex; 

if(nowlndex=01 

{ 

stuPre.Visible=false; 

Response.End 0; 

} 

nowlndex=nowlndex—l: 

sid.Selectedlndex=nowlndex; 

ShowOtherlnfo(sender,e); 

) 

protected void stuNext

._

Click(object sender,EventArgs e) 

,,下一条按钮的功能实现 

{ 

int nowlndex=sid.Selectedlndex; 

if(nowIndex==sid.Items.Count-1) 

{ 

stuNext.Visible=false; 

Response.End 0; 

} 

nowlndex=nowlndex+l: 

sid.Selectedlndex=nowIndex; 

ShowOtherI ̄o(sender,e); 

} 

4结语 

在功能的实现过程中,书中是创建了返回专业和插入学 

生成绩等存储过程来实现,而Access没有存储过程,因此在 

设计时,将部分功能在代码中直接实现,并创建了一个名为 

stuScore的查询.相应的SQL语句如下: 

SELECT students.sid,courses.cname,students.name,scores.score 

FR0M courses INNER J0IN f students NER J0IN scores 

0N students.sid=scores.sid)ON courses.cid=scores.cid; 

此查询被使用在ShowOtherlnfo方法中,根据此查询,可 

以搜索到当前学生当前课程的成绩。 

参考文献 

【1】周苏峡,李建利.Web数据库应用实例教程.北京:清华 

大学出版社,北京交通大学出版社,2008. 

| 


发布者:admin,转转请注明出处:http://www.yc00.com/web/1718924320a2753589.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信