当前位置:文档之家› 软件工程课程设计报告

软件工程课程设计报告

滨江学院软件工程课程设计报告( 2011 -- 2012 年度第一学期)课程名称:软件工程课程设计题目:个人电子相册的设计与实现院系:计算机科学与技术系班级:软件工程(3)班学号:************名:***指导教师:***设计周数:两周日期:2012 年4月4日摘要:本系统实现网络相册的的基本功能,包括用户创建影集,修改影集名称,用户的注册和登录,用户图片的上传,数据库图片的播放;管理员管理图片和用户。

系统利用.Net平台技术进行开发,实现相册的的动态管理,使得对信息的管理更加及时、高效,提高了效率。

同时还对系统的开发原理、功能特点和设计方案进行了介绍。

一、课程设计的目的与要求通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。

具体如下:1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;2.熟悉自动化的软件开发工具Rational Rose 2003,并将其运用于软件开发的全过程;3.进一步加强和提高软件工程文档的编写能力;4.培养协作能力和团队精神。

二、设计正文1.概述1.1课题题目:个人电子相册的设计与实现1.2系统的主要目标:研究Flash、Flex、Silverlight等富客户端(Rich Client)编程技术,了解B/S编程技术发展的未来趋势,掌握一种开发平台,编写出具有更高交互性和网络体验的Web应用程序。

1.3 系统的开发环境及运行环境:操作系统: Windows 7 旗舰版建模工具: Rational Rose 2003数据库系统:Access 2007开发工具: Visual Studio 2010Web服务器:IIS+ 2.0平台2.1 可行性分析2.1.1 系统总体目标电子相册是互联网络的产物,现在电子相册系统已经层出不穷,而本系统是一个区别于现在国内外已经开发出来的电子相册网站系统,它是一个单用户空间而非网站,主要是一个为用户提供的个人相片展示、存放的个人相册空间。

这个电子相册的定位是一群朋友共享照片、交流讨论的开放式的个人空间。

本系统可以供自己展示、存放照片,可以让拥有正确口令的浏览者浏览该用户的照片以及发表留言,同时拥有正确口令的浏览者也享有用户所有的权利(上传、删除相片等),它在某种程度上是开放式的、自由式的。

因此这是一个相对来说安全、私密、开放的和朋友分享、交流的私人电子相册空间。

2.1.2 技术可行性分析这个电子相册是一种基于B/S架构的管理系统,它采用目前最有发展前景的c#语言编写,用到了当今先进的技术如Html,CSS+DIV,JavaScript ,Mysql等关键技术来实现该系统。

开发本系统的Visual Studio 2010编程软件、是可以直接在网络上免费下来得来的,其中的Wamp集成环境在Windows平台下集成了Apache、MySQL、PHP服务,无需再另外下载PHP环境和MySQL数据库。

这些应用软件是现在常用的网页开发工具,都能够很方便的掌握,并且也学了有关网页开发的课程,实现该电子相册空间的技术能够比较好的实现,所以对于本系统在技术上是可以达到的。

2.2 需求分析2.2.1 总体需求该设计系统要具有实用性,功能完善,界面良好。

设计该系统的流程如图3所示。

流程设计:程序设计:图2.1 程序设计流程图2.2.2 功能需求本系统应该具有登录验证、修改密码、创建相册、浏览相片、上传相片、删除相册或相片、等功能,详见图4。

图2.2 电子相册系统功能结构图3.系统总体设计3.1 设计问题域子系统相册系统是实现用户上传照片、用户交流图片以的一个平台,整个电子相册系统有前台和后台两部分,共分为4个模块:用户上传,管理模块,注册登录模块和阅览模块,分别用于完成各自的功能。

(1)各模块功能表2-1 学生选课系统功能模块表3.2 设计数据管理子系统(1)数据库表表3-2 数据库表(3)数据库表结构①相册tb_type的详细数据字段:②相片tb_photo的详细数据字段:表3-4 Teacher教师用户表③用户表 admin的详细数据字段:3.3 设计人机交互子系统(1)用户分类本系统的用户可分为三类:②管理员用户;②普通用户;(2)用户描述①管理员用户的描述:管理员用户在整个选课系统中起到管理和维护的作用,对普通的信息进行管理和维护。

②普通用户的描述:普通用户负责试用系统的各项4.1用户注册流程图4.2用户上传图片流程图4.3用户创建相册流程图图4-1 系统用户登录流程图图4-3 用户创建相册流程图4.系统实现本系统采用了三层架构来实现,即分为用户界面层(UI)、业务逻辑层(BLL)和数据访问层(DAL),用户界面层是展示给用户的界面,方便用户与系统进行交互;业务逻辑层是对系统业务实体的封装,完成系统业务功能;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操作。

5.1 主要是与数据库连接,提供数据库操作功能,代码如下:public static OleDbConnection createNewCon()//创建并打开一个链接{string conStr = "Provider=Microsoft.Jet.OleDb.4.0;Data Source="+ System.AppDomain.CurrentDomain.BaseDirectory + @"\App_Data\photo.mdb";OleDbConnection con = new OleDbConnection(conStr);con.Open();return con;}}5.2所有系统角色用户的基类,完成用户登录验证功能,代码如下:private void LoginCheck(){string UserID = txtuser.Text.Trim().ToString();string pwd = txtpassword.Text.Trim().ToString();OleDbConnection con = Db.createNewCon();//con.Open();string Sql ="Select user,pwd from admin where user='" + UserID + "'and pwd='" + pwd + "'";OleDbCommand cmd = new OleDbCommand(Sql.ToString(), con);//开a始º?验¨¦证¡èOleDbDataReader read = cmd.ExecuteReader();if (read.Read()){Response.Redirect("Index.aspx");}else{Response.Write("<script>alert('帐¨º号?或¨°密¨¹码?错䨪误¨®!')</script>"); }con.Close();}//登录protected void btnOK_Click(object sender, EventArgs e){LoginCheck();}protected void btnSi_Click(object sender, EventArgs e){Response.Redirect("resign.aspx");}5.3 系统注册页面,代码及运行效果如下:private void Add(){string UserID = txtuser.Text.Trim().ToString();string pwd = txtpassword.Text.Trim().ToString();OleDbConnection con = Db.createNewCon();string Sql = "insert into admin([user],[pwd])"+"values(@user,@pwd)";OleDbCommand cmd = new OleDbCommand(Sql.ToString(),con);cmd.Parameters.AddWithValue("@user", UserID);cmd.Parameters.AddWithValue("@pwd", pwd);int redult = cmd.ExecuteNonQuery();if (redult > 0)Response.Redirect("Login.aspx");}protected void btnqd_Click(object sender, EventArgs e){Add();}}5.4 上传读取图片信息代码如下:public int add(string typename) {OleDbConnection con = Db.createNewCon();string sql = "insert into tb_type(typeName)"+"values(@typeName)";OleDbCommand cmd = new OleDbCommand(sql);cmd.Connection = con;cmd.Parameters.AddWithValue("@typeName", typename);int count = cmd.ExecuteNonQuery();return count;}//新?增?图ª?片?public int addpic(string Title, int type, string imgPath, string Content, string Creater, string creatTime){OleDbConnection con = Db.createNewCon();string sql = "insert into tb_photo(Title,type,imgPath,Content,Creater,creatTime)" + "values(@Title,@type,@imgPath,@Content,@Creater,@creatTime)";OleDbCommand cmd = new OleDbCommand(sql);cmd.Connection = con;cmd.Parameters.AddWithValue("@Title", Title);cmd.Parameters.AddWithValue("@type", type);cmd.Parameters.AddWithValue("@imgPath", imgPath);cmd.Parameters.AddWithValue("@Content", Content);cmd.Parameters.AddWithValue("@Creater", Creater);cmd.Parameters.AddWithValue("@creatTime", creatTime);int count = cmd.ExecuteNonQuery();return count;}//读¨¢取¨?图ª?片?信?息¡épublic DataSet getAllPic() {OleDbConnection con = Db.createNewCon();OleDbDataAdapter dad = new OleDbDataAdapter();dad.SelectCommand = new OleDbCommand("select * from [tb_photo] order by [id] DESC", con);DataSet ds = new DataSet();dad.Fill(ds, "tb_photo");con.Close();return ds;}public DataSet getAllPicToN(){OleDbConnection con = Db.createNewCon();OleDbDataAdapter dad = new OleDbDataAdapter();dad.SelectCommand = new OleDbCommand("select top 10 * from [tb_photo] order by [id] DESC", con);DataSet ds = new DataSet();dad.Fill(ds, "tb_photo");con.Close();return ds;}public DataSet getAllPicType(){OleDbConnection con = Db.createNewCon();OleDbDataAdapter dad = new OleDbDataAdapter();dad.SelectCommand = new OleDbCommand("select * from [tb_type] order by [id] asc", con);DataSet ds = new DataSet();dad.Fill(ds, "tb_type");con.Close();return ds;}public DataSet getAllPicTypeById(int id){OleDbConnection con = Db.createNewCon();OleDbCommand cmd = new OleDbCommand("select * from [tb_type] where id=@id order by [id] asc", con); cmd.Parameters.AddWithValue("@id",id);OleDbDataAdapter dad = new OleDbDataAdapter(cmd);DataSet ds = new DataSet();dad.Fill(ds, "tb_type");con.Close();return ds;}public DataSet getAllPicTypeByType(int typeId){OleDbConnection con = Db.createNewCon();OleDbCommand cmd = new OleDbCommand("select * from [tb_photo] where type=@typeId order by [id] asc", con);cmd.Parameters.AddWithValue("@typeId", typeId);OleDbDataAdapter dad = new OleDbDataAdapter(cmd);DataSet ds = new DataSet();dad.Fill(ds, "tb_photo");con.Close();return ds;}public int GetMaxId() {OleDbConnection con = Db.createNewCon();OleDbCommand cmd = new OleDbCommand("select max(Id) from [tb_photo]", con);int count = (int)cmd.ExecuteScalar();con.Close();return count;}public int GetMinId(){OleDbConnection con = Db.createNewCon();OleDbCommand cmd = new OleDbCommand("select min(Id) from [tb_photo]", con);int count = (int)cmd.ExecuteScalar();con.Close();return count;}public DataSet getAllPicById(int id){OleDbConnection con = Db.createNewCon();OleDbCommand cmd = new OleDbCommand("select * from [tb_photo] where id=@id order by [id] asc", con);cmd.Parameters.AddWithValue("@id", id);OleDbDataAdapter dad = new OleDbDataAdapter(cmd);DataSet ds = new DataSet();dad.Fill(ds, "tb_photo");con.Close();return ds;}public int getAllPicCount() {OleDbConnection con = Db.createNewCon();OleDbCommand cmd = new OleDbCommand();cmd.Connection =con;mandText ="select count(*) from tb_photo";int count =(int)cmd.ExecuteScalar();return count;}}5.5用户创建相册界面代码及运行效果如下:protected void Page_Load(object sender, EventArgs e){if(!Page.IsPostBack){DataTable dt = new photo().getAllPicType().Tables[0];this.GridView1.DataSource = dt;this.GridView1.DataBind();}}protected void btnadd_Click(object sender, EventArgs e){string typename = this.TextBox1.Text.ToString();int count = new photo().add(typename);if (count > 0){Page.RegisterStartupScript(null, "<script>alert('添¬¨ª加¨®成¨¦功|!');</script>");}else {Page.RegisterStartupScript(null, "<script>alert('添¬¨ª加¨®失º¡ì败㨹!');</script>"); }}protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){e.Row.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor,this.style.backgroundColo r='red'");e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor =currentcolor");}}5.6用户图片代码及运行效果如下:public void databinds() {DataTable dt = new photo().getAllPicType().Tables[0];this.dropdownlists.DataSource =dt;this.dropdownlists.DataTextField = "typeName";this.dropdownlists.DataValueField = "id";this.dropdownlists.DataBind();}protected void btnadd_Click(object sender, EventArgs e){// string id = new Random().Next(1, 1000).ToString();//将?附?件t传ä?送¨ª到Ì?服¤t务?器¡Â上¦?string path = FileUpload1.PostedFile.FileName.ToString(); //获?取¨?上¦?传ä?图ª?片?路¡¤径?string ext = path.Substring(stIndexOf(".") + 1); //获?取¨?图ª?片?扩¤?展1名?if (ext.ToLower() == "jpg" || ext.ToLower() == "bmp" || ext.ToLower() == "gif" || ext.ToLower() == "png" || ext.ToLower() == "tif" || ext.ToLower() == "jpeg"){string phototitle = this.txttitle.Text.ToString();string photocontent = this.txtcontent.Text.ToString();string wPath = "../upload/" + path;string sPath = Server.MapPath("../upload/"+ path); //设¦¨¨置?图ª?片?保À¡ê存ä?到Ì?服¤t 务?器¡Â上¦?路¡¤径?string suoPath = Server.MapPath("../suo/") + path;// path = "..\\Photo\\" + PhotoID + "." + ext; //保À¡ê存ä?到Ì?数ºy据Y库a中D路¡¤径?FileUpload1.PostedFile.SaveAs(sPath); //保À¡ê存ä?到Ì?服¤t务?器¡Âstring urlPath = wPath;string photoUser = "admin";string time = DateTime.Now.ToString();int type = Convert.ToInt32(this.dropdownlists.SelectedValue.ToString());int count = new photo().addpic(phototitle, type, path, photocontent, photoUser, time);if (count > 0){PictureSlightly.MakeImage(sPath, suoPath, 100, 100, "hw");this.Page.ClientScript.RegisterStartupScript(this.GetType(), null, "<script>alert('添¬¨ª加¨®成¨¦功|!');</script>");}else{this.Page.ClientScript.RegisterStartupScript(this.GetType(), null, "<script>alert('添¬¨ª加¨®失º¡ì败㨹!');</script>");}}else{this.Page.ClientScript.RegisterStartupScript(this.GetType(), null, "<script>alert('只?能¨¹上¦?传ä?图ª?片?!');</script>");}}}5.7用户查看代码及运行效果如下:protected void ImageButton1_Click(object sender, ImageClickEventArgs e){id = Request.QueryString["id"];if (id != null){int newId = int.Parse(id) - 1;if (newId >= new photo().GetMinId()){this.Repeater1.DataSource = new photo().getAllPicById(newId).Tables[0];this.Repeater1.DataBind();Response.Redirect("show.aspx?id=" + newId);}else{this.Page.ClientScript.RegisterStartupScript(this.GetType(), null, "<script>alert('再¨´无T数ºy据Y可¨¦查¨¦!');</script>");return;}}}//下?一°?张?图ª?片?5.系统测试在系统测试中,我们首先对各个子模块进行单元测试,即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。

相关主题