参数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万方数据

ZJI-全场八折优惠,香港服务器 600元起,还有日本/美国/韩国服务器

ZJI怎么样?ZJI是一家成立于2011年的商家,原名维翔主机,主要从事独立服务器产品销售,目前主打中国香港、日本、美国独立服务器产品,是一个稳定、靠谱的老牌商家。详情如下:月付/年付优惠码:zji??下物理服务器/VDS/虚拟主机空间订单八折终身优惠(长期有效)一、ZJI官网点击直达香港葵湾特惠B型 CPU:E5-2650L核心:6核12线程内存:16GB硬盘:480GB SSD带宽:5Mbps...

Vultr新用户省钱福利,最新可用优惠码/优惠券更新

如今我们无论线上还是线下选择商品的时候是不是习惯问问是不是有优惠活动,如果有的话会加速购买欲望。同样的,如果我们有准备选择Vultr商家云服务器的时候,也会问问是不是有Vultr优惠码或者优惠券这类。确实,目前Vultr商家有一些时候会有针对新注册用户赠送一定的优惠券活动。那就定期抽点时间在这篇文章中专门整理最新可用Vultr优惠码和商家促销活动。不过需要令我们老用户失望的,至少近五年我们看到Vu...

spinservers($179/月),1Gbps不限流量服务器,双E5-2630Lv3/64GB/1.6T SSD/圣何塞机房

中秋节快到了,spinservers针对中国用户准备了几款圣何塞机房特别独立服务器,大家知道这家服务器都是高配,这次推出的机器除了配置高以外,默认1Gbps不限制流量,解除了常规机器10TB/月的流量限制,价格每月179美元起,机器自动化上架,一般30分钟内,有基本自助管理功能,带IPMI,支持安装Windows或者Linux操作系统。配置一 $179/月CPU:Dual Intel Xeon E...

seo基础教程为你推荐
操作httpphpwindPHPWind 都有什么功能http404未找到打开网页提示HTTP 404未找到文件cisco2960配置思科的交换机怎么配置抢米网怎么样才能在小米官方网站抢到手机?徐州商标求江苏徐州地区的商标代理机构!爱买网超艾比安高达厉害吗,今天在网上看到的万代的果断入手了,168贵吗,不知道这款高达厉不厉害三五互联股票三五互联是什么股票drupal主题域名和服务器都有了,为什么还是打不开网站?论坛勋章请教论坛勋章怎么做?
132邮箱 东莞电信局 dns是什么 ixwebhosting evssl 服务器怎么绑定域名 微信收钱 北京双线机房 免费测手机号 卡巴斯基免费试用版 789 百度云空间 lamp兄弟连 金主 登陆qq空间 hostease 广州服务器托管 小夜博客 nnt 海外加速 更多