软件工程课程设计报告

时间:2024.4.14

                         滨江学院

软件工程课程设计报告

( 20## -- 20## 年度第 一  学期)

课程名称:    软件工程课程设计   

  题    目:个人电子相册的设计与实现

院    系:   计算机科学与技术系  

班    级:    软件工程(3)班    

学    号:     20092344914        

姓    名:       唐晨暄         

指导教师:        李振宏        

设计周数:        两周          

          

日期: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 2010

Web服务器:IIS+ASP.NET 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的详细数据字段:

表3-3 Student学生用户表

②相片tb_photo的详细数据字段:

表3-4 Teacher教师用户表

③用户表 admin的详细数据字段:

表3-7 Users管理员表

3.3 设计人机交互子系统

(1)用户分类

本系统的用户可分为三类:

②  管理员用户;

②普通用户;

(2)用户描述

①管理员用户的描述:

管理员用户在整个选课系统中起到管理和维护的作用,对普通的信息进行管理和维护。

②普通用户的描述:

普通用户负责试用系统的各项

4.1用户注册流程图

4.2用户上传图片流程图

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;

        cmd.CommandText ="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.backgroundColor='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(path.LastIndexOf(".") + 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.       系统测试

在系统测试中,我们首先对各个子模块进行单元测试,即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。然后在完成所有模块后,我们将各子模块集成起来,再对它进行系统测试,找出系统设计或编码上的错误,以及验证系统是否实现了指定的功能。最后找几个其他的同学再对系统进行黑盒子测试,验证系统是否满足用户的功能需求。

在测试的过程,特别是在集成测试之后,发现了许多问题及功能缺陷,最后经过修改调试后都解决了。

三、课程设计总结或结论

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

1.1          学习和实践了分析和设计软件系统的各种知识,包括面向对象的系统分析与设计,编码和测试方面的知识。

1.2          掌握了自动化的软件开发工具Rational Rose 2003,并将其运用于软件开发的全过程。

1.3          加深掌握了.Net平台的三层架构模式设计。

1.4          进一步加强和提高软件工程文档的编写能力。

2.    本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如界面不太美观,操作性不太友好等。

四、参考文献

更多相关推荐:
《软件工程》课程设计个人报告

软件工程课程设计报告海天一色网上书店软件工程课程设计个人报告题目网上书店学院名称信息科学与工程学院专业班级计算机092班报告人姓名梁宏报告人学号20xx01051413承担角色网页设计员同组组长安文龙同组其他成...

软件工程课程设计报告 之 总结性报告

总结性报告1.时间飞Q20xx项目从拟定好课题起,经过问题定义,可行性研究,需求分析,概要设计,详细设计,主要编程,分布测试,总体测试,到整体装配完成历时一个半月。2.人员主程序员(组长):王昌帅辅程序员:司吉…

软件工程课程设计报告

福建农林大学金山学院课程设计报告课程名称:软件工程课程设计题目:旅游信息管理系统姓名:系:信息与机电工程系专业:计算机科学与技术专业承担角色:辅助程序员20##年12月9日课程设计结果评定目录1.课程设计概述.…

《软件工程》课程设计报告模板

软件工程课程设计报告课程设计题目电子科技大学中山学院组长其他成员指导教师实验地点完成起止日期116计算机学院班级1目录一系统可行性研究报告31引言32现行系统调查33新系统概述34可行性综合评述35方案选择46...

软件工程课程设计总结

专业:08计本2班姓名:张敬宇学号:20806032039在我们整个软件工程过程中,我体会到了许多,也学到了许多。在项目要进行自由分组后,我们的项目小组便诞生了。我们小组由3个成员组成,在相互商量后我们也确定了…

软件工程课程设计实验报告

重庆邮电大学软件工程课程设计实验报告网上选课系统姓名雷雷学号专业计算机科学与技术班级0410801指导老师邹洋教室S331A时间一实验题目网上选课系统主要功能描述系统首先维护校内所有课程的信息课程分为研究生本科...

软件工程课程设计测试分析报告

测试分析报告玩具出租管理系统测试分析报告作者完成日期修改情况记录测试分析报告目录1引言111编写目的112背景113参考资料12测试概要23测试结果及发现331测试11332测试22333测试33334测试44...

Glzoxy软件工程课程设计报告

秋风清秋月明落叶聚还散寒鸦栖复惊评分软件工程课程设计报告新闻管理系统的设计专业计算机科学与技术姓名班级学号完成日期指导教师1题目新闻管理系统设计与实现2系统分析21问题定义为了实现网站新闻的动态管理使得对信息的...

软件工程课程设计报告(个人)20xx

软件工程课程设计报告个人课程设计题目研究生教务管理系统专业信息与计算科学班级报告人姓名学号课程教师实验指导教师实验地点完成起止日期正文一课程设计概述目的任务参考资料1项目的目的根据研究生管理部门的要求面向针对研...

软件工程课程设计报告书模板

课程设计报告书校园卡管理系统班级学号姓名指导教师娜某某大学四方学院20xx年6月22日一问题定义校园卡管理系统是一套针对大学校园食堂饮食交费一般消费等方面的信息管理系统它包括了同学在校内消费各方面内容刷卡消费查...

软件工程课程设计报告参考模板

项目名称商场VIP消费查询系统组长计算机11120武文杰班级学号姓名负责的主要工作小组成员人计算机11109罗金计算机11117张吉祥计算机11122孟克班级学号姓名负责的主要工作商场VIP消费查询系统需求规格...

软件工程课程设计实验报告

重庆邮电大学软件工程课程设计实验报告网上选课系统姓名雷雷学号08500329专业计算机科学与技术班级指导老师邹洋教室S331A时间20xx53020xx63一实验题目网上选课系统主要功能描述系统首先维护校内所有...

软件工程课程设计报告(25篇)