综合实训报告测试版.docx
《综合实训报告测试版.docx》由会员分享,可在线阅读,更多相关《综合实训报告测试版.docx(25页珍藏版)》请在冰豆网上搜索。
综合实训报告测试版
综合实训报告写作框架
一、综合实训报告写作框架
正文
第一章 实训的目的、要求
1、基本信息
●实训时间(1—8周)共计学时
实训指导教师:
王现君
实训地点:
软件学院实训中心
实训题目:
部门相册管理
2、.NET平台开发综合实训
●实训目的
1、总体目标
通过本门课程的学习,使学生具有较强的团队意识和协作精神,具有明确的职业目标,.NET综合实训是软件技术专业的核心专业课程。
采用东软.NET综合实训平台一体化教学,即:
实现理论教学与实践教学相互融合,边听边学、边学边练,寓教于学、寓教与做,同时将素质教育融于整个人才培养活动中,重点培养学生的综合职业素质和学生的操作能力与技术服务能力。
●实训要求
掌握项目开发流程,进行需求分析,画出需求分析图示使学生了解系统概要设计的格式内容和撰写方法掌握数据库设计的一般方法,设计系统数据库使学生掌握系统登录界面及其它界面的设计方法根据系统设计进行各部分代码的实现(本阶段与UI设计同步进行)
●主要实训软件
1)东软实训平台
2)操作系统:
Windows2000,XP;Windowsvaster/7
3)平台:
.NETFrameWork3.0,VisualStudio2005
4)数据库:
SQLServer2005
第二章 实训内容
1、需求分析
完成时间:
2011-2-26
主要内容:
1系统特性概述
系统特性名称
系统特性描述
优先级
登录
输入密码进行登录
退出
退出软件
模糊查询
可以根据时间名称关键字等进行查询并删除或修改照片备注
相册管理
可以对相册或照片进行增删改查并对照片添加备注
修改密码
可以对密码进行修改
2需求规格
2.1登录
用例概述
描述了用户登录的完整过程。
基本流程
1.打开系统登录页
2.输入用户名和密码
3.点击"登录"按钮
4.登录成功,显示"个人首页"
备选流程
1、(基3)用户未找到,提示用户不存在
2、(基3)用户密码不匹配,提示密码错误
3、(基3)离职用户登录,提示"用户已经离职,不能登录"
4、(基3)用户登录前访问某受限页面,登录成功后直接转向受限页面
5、(备4)登录前受限页面,登录后用户权限不足,转向"权限不足提示"页面
2.2退出
描述了用户退出系统的完整过程。
1、点击"退出"按钮
2、系统进行退出处理,并转到登录页面
2.3修改密码
描述了用户修改密码的完整过程。
1.1、选择修改密码功能
2.2、输入原密码、新密码和确认密码
3.3、点击"确定"按钮
4.4、修改密码成功,系统显示成功页面
5.(基3)用户输入的原密码不正确,提示"原密码不正确,修改失败"
6.(基3)用户输入的新密码和确认密码不一致,提示"两次输入的新密码不一致"
2.4模糊查询
用户可以根据时间名称关键字等进行查询。
1、点击时间
2、进行查询
3、点击名称关键字等
4、进行查询
5、点击删除或修改照片备注
6、点击完成
2.5相册管理
用户可以新建相册,删除相册,上传照片包括对相片的增删改查,并对照片添加备注。
1、点击相册管理
2.5.1新建相册
用户可以新建相册
1、新建相册
2、输入相册名称
3、点击新建
2.5.2删除相册
用户可以删除相册
1、删除相册
2、选择相册
3、点击“删除”
2.5.3上传照片
用户可以上传照片
2、点击上传相片
3、选择相册
4、选择上传的照片
5、添加备注(可空)
2、系统设计
2011-3-05
1系统公用代码设计
1.1页面设置
1.1.1功能描述
对页面及操作进行代码设计。
1.1.2方法描述
usingEdu.Sovo.OACF;
usingSystem.Text;
publicpartialclassresult_report:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
if(Session[Constants.EXECUTE_RESULT]!
=null)
//有返回结果
OperationResultor=(OperationResult)Session[Constants.EXECUTE_RESULT];
if(or.IsSuccess)
//如果是成功情况
//增加自动返回地址
HtmlMetameta=newHtmlMeta();
meta.HttpEquiv="refresh";
meta.Content="4;url="+Request.ApplicationPath+or.UrlValue[0];
this.Header.Controls.Add(meta);
//设置页面样式
tdTitle.Style.Add(HtmlTextWriterStyle.Color,"red");
tdTitle.Style.Add(HtmlTextWriterStyle.TextAlign,"center");
tdTitle.InnerText="操作成功";
//设置操作说明
tdMsg.Style.Add(HtmlTextWriterStyle.Padding,"10px");
tdMsg.Style.Add(HtmlTextWriterStyle.BackgroundColor,"#FFFFCC");
tdMsg.Style.Add(HtmlTextWriterStyle.BorderWidth,"1px");
tdMsg.Style.Add(HtmlTextWriterStyle.BorderStyle,"solid");
tdMsg.Style.Add(HtmlTextWriterStyle.BorderColor,"black");
StringBuildersb=newStringBuilder();
foreach(Stringmsginor.ResultMsg)
sb.Append("
}
ulMsg.InnerHtml=sb.ToString();
//设置返回地址
StringBuildersb1=newStringBuilder();
for(inti=0;i{Stringvalue=or.UrlValue[i];StringhtmlStr=""+or.UrlName[i]+"|";sb1.Append(htmlStr);}//sb1.Remove(sb.Length-1,1);//去掉最后的|divReturnURL.InnerHtml=sb1.ToString().Substring(0,sb1.Length-2);}}}。3、系统实施完成时间:2011-4-03主要内容:1)数据库的设计与实现PHOTO_USERS:用户表字段名字段类型是否可为空默认值字段含义注释USERIDNUMBER(10)NOTNULL 用户编号主键USERNAMEVARCHAR2(50)NOTNULL 用户名 PASSWORDVARCHAR2(100)NOTNULL 密码 REALNAMEVARCHAR2(50) 真实姓名 PHOTO_PHOTOS:照片表字段名字段类型是否可为空默认值字段含义注释PHOTOIDNUMBER(10)NOTNULL 流水号,照片编号主键PHOTONAMEVARCHAR2(100)NOTNULL 照片名称 ALBUMIDNUMBER(10)NOTNULL 所属相册外键,引用PHOTO_ALBUMS表SCREENDATEDATENOTNULLSYSDATE拍摄时间 DESCRIPTIONVARCHAR2(600) 照片描述 PHOTOTYPEVARCHAR2(100)NOTNULL 照片类型 PHOTO_ALBUMS:相册表字段名字段类型是否可为空默认值字段含义注释ALBUMIDINTNOTNULL 流水号,相册编号主键ALBUMNAMENVARCHAR(50)NOTNULL 相册名称 DESCRIPTIONNVARCHAR(MAX) 相册描述 BUILDDATEDATETIMENOTNULLSYSDATE创建时间 2)数据层的设计与应用(详述企业库与OACF)1.企业库简介有Microsoft设计的协助开发人员处理企业开发常见问题的应用程序块的集合企业库提供的程序块·缓存应用程序块(Caching)允许开发人员在其他应用程序中集成本地缓存.·加密应用程序块(Cryptography)允许开发人员在其应用程序中包含机密和哈希功能·数据访问应用程序块(DataAccess)允许开发人员在其应用程序中集成标准的数据库功能·异常处理应用程序块(ExceptionHandling)允许开发人员和决策人员针对发生在企业库应用程序体系结构层的异常处理创建一致的策略·日志和规范应用程序块(LoggingHandling)允许开发人员在其应用程序中集成标准的日志和规范功能。·安全应用程序块(SecurityApplication)允许开发人员在其应用程序中集成安全功能。应用程序可以在多种情况下使用应用程序块,例如,根据数据库验证和授权用户、检索角色和配置文件信息,以及缓存用户配置文件信息等。使用步骤·使用DataAccessApplicationBlock(DAAB)访问数据库的一般步骤(1).创建连接字符串(2).添加ApplicationBlock的引用(3).添加命名空间(4).创建Database对象(5).创建DbCommand对象(6).执行数据库操作(7).处理结果2.OACFOACF是对企业库进行一个类的封装以便于开发人员的应用3)逻辑层的设计与实现1.相册管理类usingMicrosoft.Practices.EnterpriseLibrary.Data;usingMicrosoft.Practices.EnterpriseLibrary.Common.Configuration;usingSystem.Data;usingEdu.Sovo.OACF;namespaceServices.AlbumBll{publicclassAlbumService{publicAlbumService(){}privatestaticStringSQL_Get_IsAlbumName=@"select*fromPHOTO_ALBUMSwhereALBUMNAME=@ALBUMNAME";publicstaticboolalbumNameExist(stringalbumName){DictionarynameValueParams=newDictionary();nameValueParams.Add("ALBUMNAME",albumName);boolresult=DataAccess.IsExisted(SQL_Get_IsAlbumName,nameValueParams);returnresult;}privatestaticStringSQL_AlbumName=@"selectALBUMIDfromPHOTO_ALBUMSwhereALBUMNAME=@ALBUMNAME";publicstaticboolifCanEdit(stringAlbumID,stringalbumName){stringStrAlbumeID_Old="";objectObjAlbumeID_Old=DataAccess.ExecuteScalar(SQL_AlbumName,"ALBUMNAME",albumName);if(ObjAlbumeID_Old!=null){StrAlbumeID_Old=ObjAlbumeID_Old.ToString();if(StrAlbumeID_Old==AlbumID){returntrue;}else{returnfalse;}}else{returnfalse;}} publicstaticDataSetgetAlbums(){stringgetalbumlist="selectdistinctal.ALBUMNAME,al.ALBUMID,al.BUILDDATE,count(ph.PHOTOID)ASPHOTONUMfromPHOTO_ALBUMSalLEFTouterjoinPHOTO_PHOTOSphonal.ALBUMID=ph.ALBUMIDgroupbyal.ALBUMID,al.ALBUMNAME,al.BUILDDATEorderbyal.BUILDDATEdesc";DataSetds=DataAccess.ExecuteToDataSet(getalbumlist);returnds;}privatestaticStringSQL_DEL_BY_ALBUMID=@"deletefromPHOTO_ALBUMSwhereALBUMID=@ALBUMID";publicstaticvoiddeleteAlbum(longalbumId){boolboresult=DataAccess.ExecuteNonQuery(SQL_DEL_BY_ALBUMID,"ALBUMID",Convert.ToString(albumId));}privatestaticStringSQL_INSERT_ALBUM=@"insertintoPHOTO_ALBUMS(ALBUMNAME,DESCRIPTION,BUILDDATE)values(@ALBUMNAME,@DESCRIPTION,@BUILDDATE)";publicstaticboolinsertAlbum(DictionaryAlbumInfo){boolresult=DataAccess.ExecuteNonQuery(SQL_INSERT_ALBUM,AlbumInfo,CommandType.Text);returnresult;}privatestaticStringSQL_UPDA_BY_ALBUMID=@"updatePHOTO_ALBUMSsetALBUMNAME=@ALBUMNAME,DESCRIPTION=@DESCRIPTIONwhereALBUMID=@ALBUMID";publicstaticboolupdateAlbum(DictionaryNewAlbumInfo){returnDataAccess.ExecuteNonQuery(SQL_UPDA_BY_ALBUMID,NewAlbumInfo);}privatestaticStringSQL_ALBUM_BY_ALBUMID=@"selectdistinctALBUMNAME,DESCRIPTIONfromPHOTO_ALBUMSwhereALBUMID=@ALBUMIDorderbyALBUMNAME";publicstaticDictionarygetAlbum(stringalbumId){returnDataAccess.ExecuteToSet(SQL_ALBUM_BY_ALBUMID,"ALBUMID",albumId);}}}2.照片管理类usingSystem.Data;usingEdu.Sovo.OACF;namespaceServices.PhotoBll{publicclassPhotoService{publicstaticDataSetsearchPhoto(stringPHOTONAME,stringALBUMNAME,stringDESCRIPTION,stringALBUMID,stringStartTime,stringEndTime){stringSQL_SearchPhoto="selectdistinctph.PHOTOID,ph.PHOTONAME,ph.DESCRIPTION,ph.SCREENDATEfromPHOTO_PHOTOSphinnerjoinPHOTO_ALBUMSalonal.ALBUMID=ph.ALBUMID";QueryHelperqh=newQueryHelper(SQL_SearchPhoto,"orderbyph.SCREENDATEdesc");qh.setParam(QueryHelper.IsNotBlank(PHOTONAME),"PHOTONAMElike'%'+@PHOTONAME+'%'","PHOTONAME",PHOTONAME);qh.setParam(QueryHelper.IsNotBlank(ALBUMNAME),"al.ALBUMNAME=@ALBUMNAME","ALBUMNAME",ALBUMNAME);qh.setParam(QueryHelper.IsNotBlank(DESCRIPTION),"ph.DESCRIPTION=@DESCRIPTION","DESCRIPTION",DESCRIPTION);qh.setParam(QueryHelper.IsNotBlank(ALBUMID),"al.ALBUMID=@ALBUMID","ALBUMID",ALBUMID);qh.setParam(QueryHelper.IsNotBlank(StartTime),"datediff(day,Convert(DateTime,@StartTime),ph.SCREENDATE)>=0","StartTime",StartTime);qh.setParam(QueryHelper.IsNotBlank(EndTime),"datediff(day,Convert(DateTime,@EndTime),ph.SCREENDATE)<=0","EndTime",EndTime);returnDataAccess.ExecuteToDataSet(qh.getQuerySql(),qh.getParams());}=publicstaticDataSetgetStatByMonth(){stringPhotoStaticStr="selectconvert(varchar(4),datepart(yy,SCREENDATE))+'-'+convert(varchar(4),datepart(mm,SCREENDATE))asTIME,count(*)asCOUNTfromPHOTO_PHOTOSgroupbyconvert(varchar(4),datepart(yy,SCREENDATE)),convert(varchar(4),datepart(mm,SCREENDATE))orderbyTIMEdesc";DataSetds=DataAccess.ExecuteToDataSet(PhotoStaticStr);returnds;}publicstaticDataSetgetAllAlbums(){stringPhotoStaticStr="selectalbumnamefromPHOTO_ALBUMSorderbyBUILDDATEdesc";DataSetds=DataAccess.ExecuteToDataSet(PhotoStaticStr);returnds;}publicstaticbooldeletePhoto(stringphotoId){stringdeleteStr="deletefromPHOTO_PHOTOSwherePHOTOID="+photoId;TransHelpertrans=newTransHelper();trans.AddCommand(deleteStr,null,null);boolresult=trans.Execute();returnresult;}privatestaticStringSQL_PHOTO_BY_PHOTOID=@"selectdistinctPHOTONAME,DESCRIPTIONfromPHOT
Stringvalue=or.UrlValue[i];
StringhtmlStr=""+or.UrlName[i]+"|";
sb1.Append(htmlStr);
//sb1.Remove(sb.Length-1,1);//去掉最后的|
divReturnURL.InnerHtml=sb1.ToString().Substring(0,sb1.Length-2);
}。
3、系统实施
2011-4-03
1)数据库的设计与实现
PHOTO_USERS:
用户表
字段名
字段类型
是否可为空
默认值
字段含义
注释
USERID
NUMBER(10)
NOTNULL
用户编号
主键
USERNAME
VARCHAR2(50)
用户名
PASSWORD
VARCHAR2(100)
密码
REALNAME
真实姓名
PHOTO_PHOTOS:
照片表
PHOTOID
流水号,照片编号
PHOTONAME
照片名称
ALBUMID
所属相册
外键,引用PHOTO_ALBUMS表
SCREENDATE
DATE
SYSDATE
拍摄时间
DESCRIPTION
VARCHAR2(600)
照片描述
PHOTOTYPE
照片类型
PHOTO_ALBUMS:
相册表
INT
流水号,相册编号
ALBUMNAME
NVARCHAR(50)
相册名称
NVARCHAR(MAX)
相册描述
BUILDDATE
DATETIME
创建时间
2)数据层的设计与应用(详述企业库与OACF)
1.企业库
简介
有Microsoft设计的协助开发人员处理企业开发常见问题的应用程序块的集合
企业库提供的程序块
·缓存应用程序块(Caching)允许开发人员在其他应用程序中集成本地缓存.
·加密应用程序块(Cryptography)允许开发人员在其应用程序中包含机密和哈希功能
·数据访问应用程序块(DataAccess)允许开发人员在其应用程序中集成标准的数据库功能
·异常处理应用程序块(ExceptionHandling)允许开发人员和决策人员针对发生在企业库应用程序体系结构层的异常处理创建一致的策略
·日志和规范应用程序块(LoggingHandling)允许开发人员在其应用程序中集成标准的日志和规范功能。
·安全应用程序块(SecurityApplication)允许开发人员在其应用程序中集成安全功能。
应用程序可以在多种情况下使用应用程序块,例如,根据数据库验证和授权用户、检索角色和配置文件信息,以及缓存用户配置文件信息等。
使用步骤
·使用DataAccessApplicationBlock(DAAB)访问数据库的一般步骤
(1).创建连接字符串
(2).添加ApplicationBlock的引用
(3).添加命名空间
(4).创建Database对象
(5).创建DbCommand对象
(6).执行数据库操作
(7).处理结果
2.OACF
OACF是对企业库进行一个类的封装以便于开发人员的应用
3)逻辑层的设计与实现
1.相册管理类
usingMicrosoft.Practices.EnterpriseLibrary.Data;
usingMicrosoft.Practices.EnterpriseLibrary.Common.Configuration;
usingSystem.Data;
namespaceServices.AlbumBll
publicclassAlbumService
publicAlbumService()
privatestaticStringSQL_Get_IsAlbumName=@"select*fromPHOTO_ALBUMSwhereALBUMNAME=@ALBUMNAME";
publicstaticboolalbumNameExist(stringalbumName)
DictionarynameValueParams=newDictionary();
nameValueParams.Add("ALBUMNAME",albumName);
boolresult=DataAccess.IsExisted(SQL_Get_IsAlbumName,nameValueParams);
returnresult;
privatestaticStringSQL_AlbumName=@"selectALBUMIDfromPHOTO_ALBUMSwhereALBUMNAME=@ALBUMNAME";
publicstaticboolifCanEdit(stringAlbumID,stringalbumName)
stringStrAlbumeID_Old="";
objectObjAlbumeID_Old=DataAccess.ExecuteScalar(SQL_AlbumName,"ALBUMNAME",albumName);
if(ObjAlbumeID_Old!
StrAlbumeID_Old=ObjAlbumeID_Old.ToString();
if(StrAlbumeID_Old==AlbumID)
returntrue;
else
returnfalse;
publicstaticDataSetgetAlbums()
stringgetalbumlist="selectdistinctal.ALBUMNAME,al.ALBUMID,al.BUILDDATE,count(ph.PHOTOID)ASPHOTONUMfromPHOTO_ALBUMSalLEFTouterjoinPHOTO_PHOTOSphonal.ALBUMID=ph.ALBUMIDgroupbyal.ALBUMID,al.ALBUMNAME,al.BUILDDATEorderbyal.BUILDDATEdesc";
DataSetds=DataAccess.ExecuteToDataSet(getalbumlist);
returnds;
privatestaticStringSQL_DEL_BY_ALBUMID=@"deletefromPHOTO_ALBUMSwhereALBUMID=@ALBUMID";
publicstaticvoiddeleteAlbum(longalbumId)
boolboresult=DataAccess.ExecuteNonQuery(SQL_DEL_BY_ALBUMID,"ALBUMID",Convert.ToString(albumId));
privatestaticStringSQL_INSERT_ALBUM=@"insertintoPHOTO_ALBUMS(ALBUMNAME,DESCRIPTION,BUILDDATE)values(@ALBUMNAME,@DESCRIPTION,@BUILDDATE)";
publicstaticboolinsertAlbum(DictionaryAlbumInfo)
boolresult=DataAccess.ExecuteNonQuery(SQL_INSERT_ALBUM,AlbumInfo,CommandType.Text);
privatestaticStringSQL_UPDA_BY_ALBUMID=@"updatePHOTO_ALBUMSsetALBUMNAME=@ALBUMNAME,DESCRIPTION=@DESCRIPTIONwhereALBUMID=@ALBUMID";
publicstaticboolupdateAlbum(DictionaryNewAlbumInfo)
returnDataAccess.ExecuteNonQuery(SQL_UPDA_BY_ALBUMID,NewAlbumInfo);
privatestaticStringSQL_ALBUM_BY_ALBUMID=@"selectdistinctALBUMNAME,DESCRIPTIONfromPHOTO_ALBUMSwhereALBUMID=@ALBUMIDorderbyALBUMNAME";
publicstaticDictionarygetAlbum(stringalbumId)
returnDataAccess.ExecuteToSet(SQL_ALBUM_BY_ALBUMID,"ALBUMID",albumId);
2.照片管理类
namespaceServices.PhotoBll
publicclassPhotoService
publicstaticDataSetsearchPhoto(stringPHOTONAME,stringALBUMNAME,stringDESCRIPTION,stringALBUMID,stringStartTime,stringEndTime)
stringSQL_SearchPhoto="selectdistinctph.PHOTOID,ph.PHOTONAME,ph.DESCRIPTION,ph.SCREENDATEfromPHOTO_PHOTOSphinnerjoinPHOTO_ALBUMSalonal.ALBUMID=ph.ALBUMID";
QueryHelperqh=newQueryHelper(SQL_SearchPhoto,"orderbyph.SCREENDATEdesc");
qh.setParam(QueryHelper.IsNotBlank(PHOTONAME),"PHOTONAMElike'%'+@PHOTONAME+'%'","PHOTONAME",PHOTONAME);
qh.setParam(QueryHelper.IsNotBlank(ALBUMNAME),"al.ALBUMNAME=@ALBUMNAME","ALBUMNAME",ALBUMNAME);
qh.setParam(QueryHelper.IsNotBlank(DESCRIPTION),"ph.DESCRIPTION=@DESCRIPTION","DESCRIPTION",DESCRIPTION);
qh.setParam(QueryHelper.IsNotBlank(ALBUMID),"al.ALBUMID=@ALBUMID","ALBUMID",ALBUMID);
qh.setParam(QueryHelper.IsNotBlank(StartTime),"datediff(day,Convert(DateTime,@StartTime),ph.SCREENDATE)>=0","StartTime",StartTime);
qh.setParam(QueryHelper.IsNotBlank(EndTime),"datediff(day,Convert(DateTime,@EndTime),ph.SCREENDATE)<=0","EndTime",EndTime);
returnDataAccess.ExecuteToDataSet(qh.getQuerySql(),qh.getParams());
}=
publicstaticDataSetgetStatByMonth()
stringPhotoStaticStr="selectconvert(varchar(4),datepart(yy,SCREENDATE))+'-'+convert(varchar(4),datepart(mm,SCREENDATE))asTIME,count(*)asCOUNTfromPHOTO_PHOTOSgroupbyconvert(varchar(4),datepart(yy,SCREENDATE)),convert(varchar(4),datepart(mm,SCREENDATE))orderbyTIMEdesc";
DataSetds=DataAccess.ExecuteToDataSet(PhotoStaticStr);
publicstaticDataSetgetAllAlbums()
stringPhotoStaticStr="selectalbumnamefromPHOTO_ALBUMSorderbyBUILDDATEdesc";
publicstaticbooldeletePhoto(stringphotoId)
stringdeleteStr="deletefromPHOTO_PHOTOSwherePHOTOID="+photoId;
TransHelpertrans=newTransHelper();
trans.AddCommand(deleteStr,null,null);
boolresult=trans.Execute();
privatestaticStringSQL_PHOTO_BY_PHOTOID=@"selectdistinctPHOTONAME,DESCRIPTIONfromPHOT
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1