医卫类《基于C 的Web程序设计》练习题_第1页
医卫类《基于C 的Web程序设计》练习题_第2页
医卫类《基于C 的Web程序设计》练习题_第3页
医卫类《基于C 的Web程序设计》练习题_第4页
医卫类《基于C 的Web程序设计》练习题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

医卫类《基于C#的Web程序设计》练习题说明:面向卫生信息管理、医学信息工程专业,以\hASP.NETWebForms/\hASP.NETCore为主,结合医院信息系统HIS、患者信息、病历数据场景出题,包含选择、判断、简答、程序题,附带参考答案。一、单项选择题(20题)1.在\hASP.NET中,用于接收页面表单POST提交的数据,获取表单输入框name为PatientName值的是()

A.Request.QueryString["PatientName"]

B.Request.Form["PatientName"]

C.Response.Form["PatientName"]

D.Session["PatientName"]2.C#中,要存储当前登录的患者ID,整个用户会话期间有效,应使用()

A.ApplicationB.SessionC.ViewStateD.Cookie(临时)3.\hASP.NETCore中,用来返回网页视图页面的方法是()

A.ReturnView()B.ReturnRedirect()C.ReturnJson()D.ReturnFile()4.在Web开发中,防止SQL注入,操作患者病历数据库最佳做法是()

A.字符串拼接SQL语句

B.使用参数化查询

C.直接把页面输入拼接到where条件

D.使用Response.Write过滤字符5.Web程序中,Cookie对象主要适合存储下面哪一项()

A.完整的电子病历大文本

B.记住患者浏览器端简单标识,如记住登录账号

C.数据库连接字符串

D.用户密码明文6.下面属于服务器端控件的是()

A.<inputtype="text"name="name">

B.<asp:TextBoxID="txtDiagnose"runat="server"></asp:TextBox>

C.<div></div>

D.<buttononclick="jsFunc()">7.C#连接SQLServer医院业务数据库,核心命名空间是()

A.[System.IO](System.IO)

B.System.Data.SqlClient

C.\hSystem.Net

D.System.Xml8.要跳转到“患者信息列表页面PatientList.aspx”,服务器端跳转代码(WebForms)()

A.Response.Redirect("PatientList.aspx");

B.Server.Href("PatientList.aspx");

C.Response.Write("PatientList.aspx");

D.Session.Redirect();9.在Web程序里,Application对象的生命周期范围是()

A.仅当前页面

B.单个用户会话

C.整个Web应用程序,所有访问网站用户共享

D.浏览器关闭就销毁10.ViewState的作用范围()

A.跨页面访问

B.同一个页面回发期间保存控件状态

C.所有用户共享

D.浏览器重启还存在11.在HIS系统Web页面,展示多条患者记录,WebForms最适合的控件()

A.TextBox

B.GridView

C.Button

D.Label12.C#中,int?patientAge=null;问号代表()

A.非空int类型

B.可空值类型,允许数值类型存null,适合病历中年龄未知场景

C.字符串

D.数组13.\hASP.NETCoreMVC中,M含义是()

A.Model(模型,如Patient患者实体类)

B.Main

C.Method

D.Module14.Web安全,医疗系统不建议在URL传递敏感的()

A.页面文件名

B.患者身份证号、病历号

C.普通页面参数页码page

D.查询关键字15.\hADO.NET中用来存放多条数据库查询结果的内存对象()

A.SqlConnection

B.SqlCommand

C.DataSet

D.SqlDataReader(只向前读取)16.下面哪个不是HTTP请求方式()

A.GET

B.POST

C.SEND

D.PUT17.C#Web中,实体类publicclassPatient{publicintId{get;set;}publicstringName{get;set;}},这个类作用()

A.直接渲染html

B.封装患者业务数据,映射数据库患者表

C.数据库连接

D.页面跳转18.在WebForms页面,Page_Load事件,判断页面是否是回发(点击按钮提交页面)()

A.if(IsPostBack)

B.if(PostBack)

C.if(ViewState)

D.if(Session)19.医疗Web系统上传检验报告图片文件,\hASP.NET接收上传文件对象(WebForms)()

A.FileUpload控件

B.TextBox

C.CheckBox

D.RadioButton20.Session数据存储在()

A.客户端浏览器

B.Web服务器内存

C.数据库客户端

D.硬盘本地文件单选参考答案

1.B2.B3.A4.B5.B

6.B7.B8.A9.C10.B

11.B12.B13.A14.B15.C

16.C17.B18.A19.A20.B二、判断题(10题)Request.QueryString用来获取URL地址栏问号后面传递的参数,适合传递病历ID。(√)为方便开发,可以将数据库账号密码直接写在页面C#代码中发布上线。(×)SqlDataReader是向前只读读取数据,读取时数据库连接不能关闭。(√)Cookie保存在服务器内存,浏览器关闭自动消失。(×,Cookie存客户端)IsPostBack=true代表页面是首次打开,没有提交表单。(×)参数化查询可以有效防御SQL注入攻击,医疗信息系统必须使用。(√)GridView控件可以直接绑定DataSet实现患者列表表格展示。(√)Session可以存放病历完整大文本字符串,没有大小限制。(×,不适合存大量大数据)\hASP.NET中runat="server"标记代表这是服务器控件。(√)Response.Redirect是客户端跳转,地址栏URL会发生变化。(√)三、简答题(6道,医卫业务场景)1.简述Session与Cookie区别,结合医院Web系统举例。参考答案:

①Session:数据存服务器端,每个用户独立会话;适合保存登录医生账号、当前患者ID;浏览器关闭会话失效。

②Cookie:数据存客户端浏览器;适合记住登录账号;可以设置过期时间;不适合存放病历、身份证等敏感隐私数据。2.什么是SQL注入?在病历查询Web页面如何防范?参考答案:

SQL注入:攻击者在网页输入框输入特殊SQL字符,篡改后台SQL语句,非法查询、修改患者病历数据。

防范:使用参数化查询,禁止直接拼接用户输入字符串到SQL语句;输入内容过滤校验;最小权限数据库账号。3.简述\hADO.NET五大核心对象及其作用(结合查询患者表)。参考答案:SqlConnection:建立和SQLServer医院数据库连接;SqlCommand:封装执行SQL语句(查询患者、新增病历);SqlDataReader:向前只读读取结果集;DataAdapter:适配器,填充DataSet;DataSet:内存中的数据表集合,可以断开数据库连接使用。4.WebForms中IsPostBack属性作用,写典型使用场景(患者信息编辑页面)。参考答案:

IsPostBack判断页面是否是回发(按钮、表单提交)。

场景:页面首次加载时,绑定下拉框(科室、病种);回发提交表单时,不再重复绑定,防止覆盖用户输入数据。

示例:csharp

if(!IsPostBack){

//首次页面加载,绑定科室下拉列表

}5.Application、Session、ViewState三者生命周期与适用场景。参考答案:Application:全部网站用户共享,网站启动到关闭;适合网站访问统计;禁止存患者隐私。Session:单个用户会话;适合保存登录医生、当前操作患者ID。ViewState:仅本页面回发;保存页面控件状态;页面跳转就失效。6.医疗Web系统开发,处理患者敏感信息(身份证、病历)有哪些Web安全注意点?参考答案:

1)不要URL传递身份证、病历号;

2)禁止明文在Cookie存放隐私;

3)防SQL注入,参数化查询;

4)做好登录身份校验,未登录禁止访问病历页面;

5)页面输出做编码,防止XSS跨站脚本;

6)数据库连接字符串写配置文件,不写代码内。四、程序阅读题题目1(WebForms,查询患者)csharp

protectedvoidPage_Load(objectsender,EventArgse)

{

if(!IsPostBack)

{

stringconnStr="server=.;database=HIS;uid=sa;pwd=123456";

stringsql="selectPatientId,PatientName,AgefromPatient";

SqlConnectionconn=newSqlConnection(connStr);

SqlDataAdaptersda=newSqlDataAdapter(sql,conn);

DataSetds=newDataSet();

sda.Fill(ds,"Patient");

GridView1.DataSource=ds.Tables["Patient"];

GridView1.DataBind();

}

}问题:

1.该段代码功能?

2.if(!IsPostBack)去掉会发生什么现象?参考答案页面首次加载,从HIS医院数据库Patient患者表读取患者编号、姓名、年龄,绑定GridView控件显示患者列表。如果去掉判断:每次页面回发(点击按钮)都会重复执行查询绑定,覆盖页面修改的数据,增加数据库访问压力。题目2,找错误(存在SQL注入风险代码)csharp

//病历查询页面

stringname=txtName.Text;

stringsql="select*fromPatientwherePatientName='"+name+"'";问:代码有什么问题?如何修改?参考答案

问题:直接拼接用户输入,存在SQL注入漏洞,攻击者可以非法读取全部患者病历。

修改为参数化查询示例:csharp

stringsql="select*fromPatientwherePatientName=@pName";

SqlCommandcmd=newSqlCommand(sql,conn);

cmd.Parameters.AddWithValue("@pName",txtName.Text);五、编程应用题(医卫综合,考试大题)编程题1(WebForms)需求:医院简易患者新增页面,页面有TextBox接收患者姓名txtName,txtAge年龄;点击btnSave按钮,把患者姓名、年龄插入SQLServer的Patient(PatientId自增,PatientName,Age)表。写出按钮点击事件核心C#代码(使用参数化查询)。参考代码:csharp

protectedvoidbtnSave_Click(objectsender,EventArgse)

{

//连接字符串实际应写在web.config配置文件

stringconnStr="server=.;database=HIS;IntegratedSecurity=True";

stringsql="insertintoPatient(PatientName,Age)values(@name,@age)";

using(SqlConnectionconn=newSqlConnection(connStr))

{

SqlCommandcmd=newSqlCommand(sql,conn);

cmd.Parameters.AddWithValue("@name",txtName.Text.Trim());

cmd.Parameters.AddWithValue("@age",txtAge.Text.Trim());

conn.Open();

cmd.ExecuteNonQuery();

}

Response.Write("<script>alert('患者信息保存成功')</script>");

}编程题2(\hASP.N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论