参数seo基础教程
seo基础教程 时间:2021-04-13 阅读:(
)
实用第一.
.
j智慧密集基于.
NET技术的学生信息维护的设计与实现李志云董文华摘要:学生信息管理系统中对学生信息的维护包括对学生基本信息和照片信息的添加、修改和删除等.
如何方便高效地对这些信息进行操作,给出了详细的实现方法和步骤.
关键词:学生信息维护:c#语言;照片1引言学校的学生信息管理系统中.
学生信息维护是非常重要的一个模块.
学生信息既包括学生的基本信息.
也包括一些照片信息.
如何对这些信息快速高效地舔加、修改和删除.
文中给出了详细的实现方法和步骤.
其窗体运行时的效果如图1所示.
'………_¨-薰:"圜…·"~Ⅲ……围1程序运行效果该窗体的执行过程:选择查询条件和查询值后,单击工具栏上的"查询"按钮可查询符合条件的记录:单击T具栏中的"添加"按钮时.
在下面的控件中输入各个字段信息,然后单击"保存"按钮进行保存:在表格中单击时,将选中的行的内容显示到窗体上面的控件中,单击"修改"按钮,可进行修改,修改后单击"保存"按钮进行保存;在表格中单击选中一行时.
单击"删除"按钮经用户确认后进行删除;若对信息操作后.
放弃保存.
可单击工具栏上的"取消"按钮.
2开发环境VisualStudio2008+SQLSeⅣer2005Express.
3数据库结构学生信息管理系统的数据库名称:studentDB.
包括4个数据表:系别表、专业表、班级表和学生基本信息表.
图2到圈5是这些表的结构.
譬,疆20酾12,霸23与簟蒲b(1)系别表:用于保存所有的系别信息,其结构如同2所示.
ttg#w,d-60)口lit~_d州埘口n*自tw_州∞I回图2系别表结构(2)专业表:用于保存所有的专业信息,其结构如图3所示.
mA$目^№∞H口目、々"WⅧIo)口ttg#n岬州鲫口口图3专业表结构(3)班级表:用于保存所有班级信息,其结构如图4所示.
l丑m州e】口~dⅣ∞)口n憎.
口《锄口w_m_删口r"lm口¨回Ⅳwm㈣目口图4班级表结构(4)学生基本信息表:用于保存所有学生的基本信息,其结构如图5所示.
图5学生基本信息表结构雠口.
口日日B回日日日目口万方数据4窗体界面设计新建项目,项目名称为studentlnfoSystem.
进中项目名称,右击.
从快捷菜单中,选择"添加"f+"Windows窗体".
在"舔加新项"对话框中,输人窗体名称:frmStudentManage.
c8,单击"添加"后.
该窗体便添加到项目中.
然后对该窗体进行界面设计.
该窗体能够浏览、查询、添加、修改和删除后台数据库studentDB中学生基本信息表的记录.
用此需要在窗体上添加Button、"rextBox、ComboBox、PictureBox及DataGfidView控件等.
为了使命令按钮及查询条件等更紧凄地放置在窗体上.
添加工具栏控件.
在工具栏上添加Button、Label和ComboBox控件等.
学号、身份证号和家庭电话输人的不是合法数据时.
应显示相应的错误提示.
因此还要添加3个erlorPFOVider控件.
谤窗体及窗体上的主要控件的主要属性设置如表l所示.
表1学生信息维护窗体及主要控件的主要属性设}窗体皿控件类型税性名称属性值说明frmStudentM删age窗体的名称学生信息维护窗体的标题文本F.
啊bl盯imizeBoxⅫ鸵宙体的最大化按忸失教StarlPosifionCentetScn№n宙体启动时位于屏幕中心gormBo柑erSr,'hFixed$ingle宙体的太小哥定7个Button的N删e属性依次为:tsbAdd、IsbEdit、汕Del,lsbS…tsbCaneel、IshFind、tsbExit;DisplaySiTle属性均r】'oolStrip设置为:Ten即显示风格为文本:Text属性分别为:添(包青7个Button、2加、惨改、删除、保存、取消和退m.
十md、2一l-CombB帆l2个Label的Text属性分别为:查询条件、查询值2个ComhoBox的Narae属性为cbxCondidon和zhxFindVaheNameIabc.
"咖11l提供页面选项卡旧0bContwl添加2个页面标签ttlbPagel和tabPage2.
TabPnges页面标茬的Text分别为学生基本信息、个人简历R信tudentNo输人学号htStudentN蛐e输^姓名Name输^身份证号精^亲雇住址ahPagel&nkl输人电话选择性别ComboBoxcbxNslion选择民族cbxCl哪Name选择班级名称亩傩及控件类型属性名称属性值通明dtpBiahday选择m生日期显示照片BorderStvleFixed3D加边框H明d显示手形鼠标Stretchlmage图像自动适应圈片捶大小输人十人简历tabPage2Multiline可以多行显示$emllB蚰Veaicd舔加垂直准动蒹显示观围ⅥewStudent中的Nar∽tlg,,Student记录为只诿,不能在表格中编DataGridVi州I{eadOrdv辑记录Sel∞tion.
FuItRowSelec【进择整行记录Lsbel瑚Stu&raNum显示查询到的学生^数嘛人为非救字秆时.
显示E肿rProvidereno^tudentNo错误提示÷nDrCat'diDoDBntrileDia.
0penFileDialog显示打开文件对话框1皿1窗体界面如图6所示圈6学生信息维护窗体设计时界面5C#代码实现5.
1编写思路编写窗体的Load事件方法,对窗体韧始化.
进行数据莲接、添加组合框的列表值以及填充表格数据等;选择查询条件后.
应在查询值后的组合框中添加列表值.
所以需要对cbxCondition控件编写SeleetedlndexChanged事件方j击;单击图片框piePhoto时.
需要编写Click事件方法.
将磁盘中的照片显示到piePhoto控件中;在表格控件dgvStudent中单击触发CellClick事件时.
应编写代码将表格中当前行的内容显示到表格控件上方的控件中;最后应编写各个Button按钮的Click事件方法.
万方数据实用第一.
智慧密集本窗体编程的难点在于.
保存按钮的Click事件方法中,需要将照片信息保存到数据库中;在表格控件dgvStudent的CellClick事件中.
要将选中行的照片信息显示到图片框控件picPholo中.
5.
2代码清单usingSystemDataSqlClient;//S1人数据库操作类的命名空间usingSystemTextRegularE*presslOns:,/弓l用正则表达式粪的命名空间usingSystemIO;H该命名空间包含文件操作的类names#aGeStudentlnfoSystemStudenttnfo{publicpartialclassfrmStudentManage:Form{publicfrmStudentManage()IInitializeCompoeent0;}intAddOrEdIt:肿际记是添加或修改了记录SqlConnectioncorm;SqlCommandcom;SqlDataAdapterde;stringotdStudentNo;Ⅳ修改记录之前的学号值privatevoidFillDataGridViewO//填充表格数据{dgvStudentDataSource=null;da=newSqlDataAdapter【-select.
fromviewStudent.
.
cone);//通过视图查询数据OataSetds=newDataSet();try{lf(connState==ConnectionState.
Closed)fconnOpen();】intcount=由FilI(ds,'学生基本信息表'J:connClose();thisdgvStudentDataSource=dsTables【'学生基本信息表.
l,IblStudentNumText='共有'+countToString(J+.
个学生':)catchfExceptionex){MessageBoxShow(exMessageToStrin90);)lprivatevoidClearText()//清除控件内容{this.
txtStudentNo.
Clear();this.
txtStudentNameClear();thiscbxSexText="44,醢20黼12.
溺23与IIII疼翰'电一技巧与护、l毽矿thiscbxNationlityText='.
thistxtCardlDCtear(】:thisdtpBirthdayValue=ConvertToDateTime(.
1990—1—1')iN设定初始值thistxtAddress,CJear(1.
thistxtTelClear();thiscbxClassNameText='.
thistxtMemoryClear();thispicPhotoImage=null;)【)rivatevoidLockedTextBoxO/l锁定文本框和组台框{thistxtStudentNoEnabled=false;thistxtStudentNameEnabled=false:thiscbxSexEnabled=false;thiscbxNationlityEnabled=faisethistxtCerdlDEnabled=false:thisdtpBirthdayEnabled=faIse;thistxtAddressEnabled=false;thistxtTelEnabled=false:thiscbxClassNameEnabled=fatse:thistxtMemoryEnabled=false:tNspicPhotoEnabled=false;}privatevoidUnLockedTextBox0//解除锁定{thistxtStudentNoEnabled=true:thislxtStudentNameEnabled=true;thisebxSexEnabled=true;thiscbxNationlityEnabled=true;thistxtCardlDEnabled=true;thisdtpBirthdayEnabled=true;thistxtAddressEnabled=true;thistxtTelEnabled=true;thiscbxClassNameEnabled=true;thistxtMemoryEnabled=true;thispicPhotoEnabled=true:}privatevoidfrmStudentManageLoad(objectsender.
EventArgse){corln=newSqlConnectionO;cormConnectIonStnng=.
server=(Iocal)\kqlexpress;integratedsecunty=true:database=studentDB':∥添加查询条件列表值cbxConditionItemsClear();cbxConditionItemsAdd(.
系别.
):cbxConditionItemsAdd('班级').
thiscbxSexItemsAdd(.
男'}:thiscbxSexitems.
Add('女'):string[1nationArray={.
汉族',.
回族',.
维吾尔族'.
'藏族i'满族_J.
朝鲜族'}:万方数据…,DmB脑}一……一·…一………"4for(intI=0.
I(nationArray.
Length;l+十){cbxNationlity.
ItemsAdd(nationArravⅢ):)∥绑定班级组合框da=newSqlDataAdapter('select班级编号.
班级名称from班级表I.
conn);DataSetdsl=newDataSet0;iffconnState==ConnectlonS伯teClosed){connOpen();)daFill(dsl.
.
班级表'):connClose():cbxClassNameDataSource=dslTables["班级表.
l:cbxCtassName.
DisplayMember=.
班级名称.
,cbxQassNameValueMember='班级编号.
:open剐eD{al091FileName=";∥设爱打开文件的初始文件名为空值FillDataGridView0;LockedTextBox0;privatevoiddgvStudent_CellClick(objectsender,DataGridViewCellEventArgse){∥单击表格的单元格时,将选中行的内容显示到窗体控||{}!
二中thistxtStudentNoText=ConvertToString(dgvStudent{0,dgvStudentCurrentCellRowlndexjValue)Trimc):thistxtStudentNameText=ConvertToString(dgvStudent[tdgvStudentCurrentCellRowlndex]Value)Trlm{):thiscbxSexText=Convert.
ToString(dgvStudent[2.
dgvStudentCurrentCellRowlndex]Value).
Trim();thiscbxNationlityText=Convert.
ToString(dgvStudent[3,dgvStudentCurrentCellRowlndex]Value)Trim().
thistxtCardIDText=ConvertToString(dgvStudentf4,dgvStudentCurrentCellRowlndex]Value)Trim();thisdtpBirthdayText=ConvertToS"ingldgvStudent【5.
dgvStudentCurrerttCeltRowlndexl.
Value}Trim(1;thistxtAddressTe)(t=ConvertToString(dgvStudent【6.
dgvStudentCurrentCell.
Rowlndex]Value)Trim();thistxtTeiText=ConvertToString《dgvStudent17,dgvStudentCurrentCetlRowlndex]Value)Trim();thiscbxClassNameText=Convert.
ToString(dgvStudent[8.
dgvStudentCurrentCell.
Rowlndex]Value)Trim():thistxtMemoryText=ConvertToString(dgvStudent|11,dgvStudent.
CurrentCellRowlndex)Value)Trim();∥显示照片H(!
{dgvStudent[12,dgvStudent.
CurrentCell.
Rowlndex]ValueisDBNulI)){胜口果照片数据的值不为空,则显示照片信息到图∥片框控件中Byte[】byteBLOBData=newByte[O];byteBLOBData=lByteI])(dgvStudent[12,dgvStudentCurrentCellRowlndex]Value);MemoryStreamstmBLOBData=newMemoryStreem(byteBLOBData);thispicPhoto.
Image=Image.
FromStreamlstmBLOBData);)elsefthispicPhoto.
Image=null:∥照片数据为空,则清空图片框的内容))privatevoidtsbAdd—Click(objectsender.
EventArgse)脓加{tsbSaveEnabled=true;tsbCancelEnabled=true;AddOrEdit=0.
ClearText0;UnLockedTextBox0,txtStudentNoFocus();)广单击图片框时.
显示打开文件对话框,选中要加载的照片文件,将其显示到图片框控件中+,privatevoidpicPhoto_Click(objectsender,EventArgse){trv(openFileDialoglFileName='.
:openFileDialoglShowDial090;if(openFileDialoglFileName!
="J{picPhotoImage;ImageFromFile{openFileDial091.
FileName);1)catch(Exceptionex){MessageBoxShow(.
加载照片有误'+exMessageToStrin90);}lprivatevoidtsbEdILCIjck(o吲ectsender,EventArgse)∥修改{tsbSaveEnabled=true;万方数据',''1f_t…_'Ⅲ-t'1_,_-.
_}J^'^---'.
-实用第一/智慧密集………….
,tsbCancelEnabled=true;AddOrEdit=1:UnLockedTextBoxO;oldStudentNo=txtStudentNoText;)privatevoidtsbDel—Click(objectsender,EventArgse)∥删除Iif(MessageBoxShow('确定要删除该生信息吗7.
.
.
删除提示jMessageBoxButtonsOKCancel.
MessageBoxlconQuestion):=DialogResultOK)ftrvfcorn=newSqlCommand(.
deletefrom学生基本信息表where学号='+ConvertToString(dgvStudent[0dgvStudentCurrentCellRowlndex]Value)Tr|m().
conn);ificonnState==ConnectionState.
Closed){connOpen();}tomExecuteNonQueryO;connClose();MessageBox.
Show(.
删除数据成功I'):ClearTextO;FillDataGridViewO;)catch(Exceptionex)IMessageBoxShow(exMessageToStringO);))}privatevoidtsbSaveClick(objectsender.
EventArgseJ,/保存{ifltxtStudentNo.
"rext=="){MessageBoxShow('学号不能为空I.
):return;)if{txtStudentNameText=="){MessageBox.
Show('姓名不能为空I'):return;lif(this.
cbxSexrext==")(MessageBoxShow('性别不能为空!
.
):return;1"I|RegexIsMatch(txtStudentNoTextTrim0,"10—9l.
鳓蔷豁满$.
)J/,学号必须为数字IerrorStudentNoSetError(txtStudentNo,'学号必须为数字!
.
):return;)"(!
RegexIsMatch(txtCardIDText.
Trim(),划{15}M门8)'))//验证身份证号{errorCardlDSetError(t)(tCardID,'身份证号输人不合法I'):return;}if(!
Regex.
IsMatch(txtTelText.
Trjm{),Ⅷ{31一Ⅷ{8JM{4)划(7).
J)//验证电话号码{errorTel.
SetError(txtTel,'电话号码输入不合法I.
).
return;)errorStudentNoClear();errorCardIDClear();errorTelClear();stringSQLString;iflAddOrEdit==0l(∥判断学号是否已存在try{da=newSqlDataAdapter(.
select'from学生基本信息表where学号=1+txtStudentNo.
Text+"'.
conn);DataSetds=newDataSetO;if(connState==ConnectionStateClosed)lcorm.
Open();)intcount=daFill(ds.
'学生基本信息表'):corm.
Close();汁lcount!
=0}{MessageBoxShow('该学号巳存在.
请重新输人I'):txtStudentNoFocusO;return;,}catch(Exceptionex)fMessageBox.
Show(ex.
MessageToStringO);}SQLString=.
insertinto学生基本信息表(学号.
姓名胜别屣族,身份证号.
出生日期,家庭住址,家庭电话旌级编号,个人简历.
照片)values(@学号,@姓名,0性别,@民族,0身份证万方数据号,@出生日期,@家庭住址.
@家庭电话,@班级编号.
@个人简历.
@照片)':}elsefSQLString=.
update学生基本信息表set学号=@学号,姓名=@姓名.
性别=@性别.
民族=@民族,身份证号=@身份证号,出生日期=@出生日期.
家庭住址=@家庭住址,家庭电话;@家庭电话,班级编号=曰班级编号,个人简历=@个人简历.
照片=@照片where学号="+o矧StudentNo+".
:)Gem=newSqlCommand(SQLString.
conn);comParametersClear();肌青除所有命令参数对象SqIParametersnoParameter=newSqlParameter0;胞《建命令参数snoParameterParameterName=.
@学号':,/获取命令参数名称snoParameterValue=thistxtStudentNoText;Ⅳ获取命令参数值comParametersAdd(snoParameter);Ⅳ往集合中添加参数SqlParameternameParameter=newSqlParameter0;//自lj建命令参数nameParameter.
ParameterName=.
@姓名':∥获取命令参数名称nameParameterValue=thistxtStudentName.
Text;鹏E取命令参数值comParameters.
Add(nameParameter);∥往集台中添加参数SqIParameteraexParameter=newSqlParameter0;//自=J建命令参数sexParameterParameterName='@性别.
:脓取命令参数名称sexParameter.
Value=thiscbxSexText;∥获取命令参数值comParametersAdd(sexParameter);,,往集合中添加参数SqlPsrameternationParameter=newSqIParameter0;//创建命令参数na"onParameterParsmeterName=.
@民族.
:∥获取命令参数名称nationParameterValue;thiscbxNationlitvText;//获取命令参数值com.
ParametersAdd(nationParameter):∥往集合中添加参数SqIParameterIDParameter=newSqlParameter0;//d建命令参数IDParameter.
ParameterName=.
@身份证号.
:∥获取命令参数名称fDParameterValue=this.
txtCardID"rext:/廒取命令参数值comParameters.
Add(IDParameter):∥往集合中添加参数SqlParameterbirthdayParameter=newSqlParameter();//EpJ建命令参数birthdayParameterParameterName=嗨出生日期.
:∥获取命令参数名称bInhdaVParameterValue=thisdtpBirthdayText:/,获取命令参数值cornParametersAdd(birthdayParameter);∥往集合中添加参数SqlParameteraddressParameter=newSqlParemeter0;//创建命令参数addressParameterParameterName='@家庭住址.
,∥获取命令参数名称addressParameterValue=thistxtAddressText;//获取命令参数值comParametersAdd(addressParameter);^,往集合中添加参数SqIParametertelParsmeter=newSqlParameter();//自1]建命令参数telParameter.
ParameterName=.
@家庭电话':∥获取命令参数名称telParameterValue=this.
txtTelText;Ⅳ获取命令参数值cornParametersAdd(telParameter);Ⅳ往集合中添加参数SqlParameterclassNoParsmeter=newSqIParameter(};//t封建命令参数classNoParameter.
ParameterName='@班级编号':腑E取命令参数名称classNeParameterVaJue=thiscbxClassNameSelectedValueToStrin90;//获取命令参数值corn.
Parameters.
Add(classNoParameter);∥往集合中添加参数SqlParametermemor、/Parsmeter=newSqlPerameterO;//l!
lj建命令参数memon/ParameterParameterName='@个人简历':∥获取命令参数名称memoryParameterValue=thist)ctMemoryText;/廒取命令参数值oomParametersAdd(memoryParameted;∥往集合中添加参数∥设置照片参数,若无照片,可设置为一缺省图片计IopenFJIeDiaJ091,FileName=="){openFileDialoglFileName='缺省照片bmp':),/读取照片文件到文件流对象,通过文件流创建//Iz节数组FileStreamfsBLOBFile=newFileStream(openFileDial091.
FileName,FiieMode.
Open.
FileAccess.
ReadJ:Byte[】bytBLOBData=newByte[fsBLOBFileLength];万方数据实用第一j智慧密集∥从流中读取字节块,并将该数据写入给定缓冲∥区中fsBLOBFile.
Read(bytBLOBbata.
0,bytBLOBDataLength);fSBL08FileCIoseO;∥创建命令参数,井将参数添加到命令对象的参//数集合中SqlParameterparamlmageData=newSqIParameter('@照片',SqlDbTypeImage,bytBLOBDataLength):paramlmageDataValue=bytBLOBData:comParametersAdd(paramlmageData);trv(if(eonnState==ConneetionStateClosedl{connOpen();】comExecuteNonQuery0;connClose();MessageBoxShow(.
操作成功f.
):OpenFi|eDiaI091FileName=":FillDataGridView0;LockedTextBoxO;tsbSaveEnabled=false;tsbCancelEnabled=false;)catch(Exceptionex){connOpen();)daFill(dsl.
.
系别表.
}:connClose();forfintf=0:j=trunc【sysdate)groupbyyingyongid,shenherenl,to_char(FAYAOSJ.
'yywmmdd'):这样最终的报表查询只要基于视图my_v_lingyaocfij即可达成目标,最终报表查询的语句就可以这样写了(图7所示实际业务数据分析统计到3个类别.
因此会复杂3倍),它和原始数据的性能差异也就体现在数据量归集后的集中度上二.
:鼍麓麓.
=Zj:∞一.
:&o#!
=∞≯'《巍嚣j:耋黧警攀燕妻墨=耍孽)篱豢=兰——一"攀篇黜=黼,图7通过物化视图优化由于建立物化视图时充分地建立了数据的重复性并对重复数据进行归并.
使得"沉默的大多数"推选了自己的"业主代表",最终由"代表"们集中反应.
使报表查询只扫描少量的数据就达成目标,让"沉默的大多数"更有效地发挥了作用.
如果报表查询的频度高,其实可以对视图进行改造,由界面层决定数据是否访问当天的数据,这样可以使这个固定开销隔离出来.
3结语数据库查询的优化.
都是要针对具体的数据特征进行处理.
并没有一个万能解决方法,更多时候是由业务决定了数据的处理方法.
但是总体优化原则以上述两种方法为主要特征,前者可以称之为"少数派报告",后者可称之"沉默的大多数".
大部分情况下可以解决查询性能的优化问题.
(收稿日期:2012-08—02)气毋i≯譬-_i醣20圬12写.
2t3妒、49万方数据
npidc全称No Problem Network Co.,Limited(冇問題(香港)科技有限公司,今年4月注册的)正在搞云服务器和独立服务器促销,数据中心有香港、美国、韩国,走CN2+BGP线路无视高峰堵塞,而且不限制流量,支持自定义内存、CPU、硬盘、带宽等,采用金盾+天机+傲盾防御系统拦截CC攻击,非常适合建站等用途。活动链接:https://www.npidc.com/act.html...
在之前几个月中也有陆续提到两次HostYun主机商,这个商家前身是我们可能有些网友熟悉的主机分享团队的,后来改名称的。目前这个品牌主营低价便宜VPS主机,这次有可以看到推出廉价版本的美国CN2 GIA VPS主机,月费地址15元,适合有需要入门级且需要便宜的用户。第一、廉价版美国CN2 GIA VPS主机方案我们可看到这个类型的VPS目前三网都走CN2 GIA网络,而且是原生IP。根据信息可能后续...
HostKvm是一家成立于2013年的国外主机服务商,主要提供VPS主机,基于KVM架构,可选数据中心包括日本、新加坡、韩国、美国、俄罗斯、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。商家本月针对香港国际机房提供特别7折优惠码,其他机房全场8折,优惠后2G内存香港VPS每月5.95美元起,支持使用PayPal或者支付宝付款。下面以香港国际(HKGlobal)为...
seo基础教程为你推荐
开启javascript开启 JavaScript,googlepr谷歌 PR值是什么意思Flash动画设计与制作——第九章:导出和发布动画sqlserver数据库sql server数据库是什么 型数据库internetexplorer无法打开Internet Explorer 无法打开?360arp防火墙在哪360ARP防火墙哪里下载?河南省全民健康信息平台建设指引(试行)开放平台企鹅号和腾讯内容开放平台是一样的吗,有什么区别?billboardchina中国有进美国BillBoard榜的人吗最土团购程序你好,请问你有团购网的程序吗
网站空间价格 花生壳域名 根域名服务器 主机测评 便宜服务器 winhost bluehost 国外服务器网站 美国便宜货网站 网站保姆 云主机51web 镇江联通宽带 java虚拟主机 gg广告 刀片服务器的优势 如何用qq邮箱发邮件 重庆双线服务器托管 电信托管 常州联通宽带 双12 更多