1、软件工程课程设计软件工程课程设计超市销售管理系统学 院: 数学与计算机学院学 号: 姓 名: 专 业: 计算机科学与技术指导老师 : 年级(班级): 目录第1章 系统设计31.1 系统功能分析31.2 系统模块设计31.2.1系统的总体功能设计31.2.2系统各子模块功能详细设计31.2.2.1标识参与者31.2.2.2标识用例31.2.2.3求精用例31.3对象设计51.3.1分析对象51.3.2绘制类图6第2章 映射及编码72.1 对象模型映射为代码72.1.1新闻动态管理对象的映射72.2 将持久性数据对象映射到数据表102.2.1将新闻对象的属性映射为News表的字段102.3 编程实
2、现该对象112.3.1新闻动态管理类11第3章 测试133.1测试用例133.1.1 新闻添加用例测试13第1章 系统设计1.1 系统功能分析该系统主要为用户实现如:销售处理功能。该系统采用C#面向对象语言和基于.Net4.0平台开发的款基于Web模式的功能强大、页面友好、使用方便的新闻资讯后台管理系统。1.2 系统模块设计1.2.1系统的总体功能设计该系统主要的功能模块为:常规管理模块、资讯管理模块、管理员管理模块等。系统要能对以上各个模块的基本信息进行管理,并且对不同权限的用户的操作进行限制,从而保证了系统关键数据的保密性和安全性。1.2.2 系统各子模块功能详细设计1.2.2.1标识参与
3、者 用户;系统管理员;1.2.2.2 标识用例 (1)添加资讯用例;1.2.2.3求精用例1.用例NewsAdd:添加资讯用例范围:咨询网站后台管理系统应用级别:管理目标主要参与者:系统管理员(Admin)涉众及其关注点:系统管理员:希望以最小代价完成新闻发布,希望便捷、清晰的看到所输入的信息,希望能及时得到发布的信息等。后台管理系统:希望正确而迅速的响应管理员的操作信息,希望及时的完成资讯动态的查询、修改、删除等活动,希望系统具有一定的容错能力,即使在某些服务器构件不可用时,也可以完成资讯发布,希望能够准确、快速地更新数据库信息。前置条件:管理员必须登录且身份必须经过确认和认证。后置条件:存
4、储资讯信息,更新数据库信息。主成功场景(主事件流、基本事件流):1、系统管理员打开后台管理系统登录页面(login),输入用户名(admin)及密码(admin),验证用户身份正确后进入管理系统界面(master_index)。2、系统验证成功后链接到后台管理系统主页面(master_index),单击上方导航栏上的咨讯管理导航按钮,在管理系统主页面的左侧显示资讯管理导航(添加,管理)。3、管理员用鼠标点击咨询信息添加, 管理系统主页面的右侧显示资讯信息添加页面(News_Page)。4、管理员选择输入相关资讯的分类,标题,来源,网址以及内容等信息。5、管理员在完成输入后,单击添加按钮。6、后
5、台管理系统将资讯信息保存到数据库(News_Data)中的资讯表(News)中。7、系统弹出提示对话框提示资讯添加成功。8、添加结束后系统又跳转到资讯添加页面(News_Page)。用例图:术语表:编号名称标识说明1系统管理员Admin主要参与者2后台管理登录页面login用于验证管理员登录后台管理3后台管理系统界面master_index用于后台各个模块的链接等4资讯添加页面News_Page用于编辑资讯动态详细信息5数据库News_Data包含用户业务及个人信息表等6资讯表News用于存储资讯动态详细信息时序图:1.3 对象设计1.3.1分析对象标识产品变更用例的参与对象:后台登录页面(l
6、ogin):用于后台管理员的登录后台管理主页面(mater_index):用于各个模块的链接等资讯添加页面(news_page):用于添加资讯的web表示层资讯表(news):存储新闻资讯信息标识属性:属性数据类型允许空新闻编号(id)Integer标识唯一新闻(不允许为空)新闻类型(newsType)String新闻标题(newsTitle)String新闻发布时间(newsTime)String新闻来源(newsLy)String新闻内容(newsContent)String主要方法:名称方法功能说明doPost()处理新闻业务逻辑方法可见性:protected,方法返回值:void,参数
7、:(HttpServletRequest request, HttpServletResponse response)addNews()处理数据操作的方法方法可见性:public,方法返回值:void,参数:(News news)1.3.2绘制类图1、新闻动态类图第2章 映射及编码2.1 对象模型映射为代码2.1.1新闻动态管理对象的映射 该对象映射到Eclipse编程环境下,就是类News。类News描述如下: public class News implements java.io.Serializable /* * Fields serialVersionUID */private st
8、atic final long serialVersionUID = 1213256905974252231L;private Integer id;private String newsType;/新闻类型private String newsTitle;/新闻标题private String newsTime;/新闻时间private String newsLy;/新闻来源private String newsContent;/新闻内容/* * return id */public Integer getId() return id;/* * param id 要设置的 id */publ
9、ic void setId(Integer id) this.id = id;/* * return newsType */public String getNewsType() return newsType;/* * param newsType 要设置的 newsType */public void setNewsType(String newsType) this.newsType = newsType;/* * return newsTitle */public String getNewsTitle() return newsTitle;/* * param newsTitle 要
10、设置的 newsTitle */public void setNewsTitle(String newsTitle) this.newsTitle = newsTitle;/* * return newsTime */public String getNewsTime() return newsTime;/* * param newsTime 要设置的 newsTime */public void setNewsTime(String newsTime) this.newsTime = newsTime;/* * return newsLy */public String getNewsLy(
11、) return newsLy;/* * param newsLy 要设置的 newsLy */public void setNewsLy(String newsLy) this.newsLy = newsLy;/* * return newsContent */public String getNewsContent() return newsContent;/* * param newsContent 要设置的 newsContent */public void setNewsContent(String newsContent) this.newsContent = newsConten
12、t; (1)点击添加时调用的方法 / /方法的映射方法名:doPost()返回类型:void参数列表为:HttpServletRequest request, HttpServletResponse response具体的方法描述如下: /* * see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Servle
13、tException, IOException / TODO Auto-generated method stub (2)数据访问层的方法方法名:addNews()返回类型:void参数列表为News news具体的方法描述如下:public static void addNews(News news)2.2 将持久性数据对象映射到数据表将持久性数据对象的名称映射为表名,将持久性数据对象的属性映射为字段。说明:J2ee中的string 类型映射为MySQL中的varchar类型或text类型,J2ee中的Integer 类型映射为MySQL中的int类型。2.2.1将新闻对象的属性映射为New
14、s表的字段变量名数据类型字段名类型新闻编号(id)Integer新闻编号(id)int新闻类型(newsType)String新闻类型(newsType)varchar新闻标题(newsTitle)String新闻标题(newsTitle)varchar新闻发布时间(newsTime)String新闻发布时间(newsTime)varchar新闻来源(newsLy)String新闻来源(newsLy)varchar新闻内容(newsContent)String新闻内容(newsContent)text得到数据表如图2-1 所示:图2-1 2.3编程实现该对象2.3.1 新闻动态管理类该模块主要
15、实现让管理员添加新闻资讯信息,并让管理员自己选择修改或添加相应的新闻,新闻添加模块设计如图2-2所示:图2-2 新闻添加页面主要方法如下: /* * see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException / TODO Auto-generated met
16、hod stubrequest.setCharacterEncoding(utf-8);String actionUrl=request.getServletPath();News news=new News();/添加新闻的业务逻辑处理if(actionUrl.equals(/newsAdd.do)/获取页面传过来的参数String newsType=request.getParameter(NewsType);String newsTitle=request.getParameter(NewsTitle);String newsTime=new SimpleDateFormat(yyyy-
17、MM-dd).format(Calendar.getInstance().getTime(); String newsLy=request.getParameter(NewsLy);String newsContent=request.getParameter(NewsContent);/设置新闻对象的相关属性news.setNewsType(newsType);news.setNewsTitle(newsTitle);news.setNewsTime(newsTime);news.setNewsLy(newsLy);news.setNewsContent(newsContent);/调用数据
18、访问层NewsDao.addNews(news);/提示成功信息String message = 添加成功!;request.getSession().setAttribute(message,message);/转至新闻添加页面request.getRequestDispatcher(News_Page.jsp).forward(request, response); public static void addNews(News news)/* * Title: addNews* Description: 根据传入的新闻对象,添加数据* param news 添加的新闻对象* return
19、 void* throws */Session session=HibernateSessionFactory.getSession();try/hibernate提交事务的异常处理session.beginTransaction(); session.save(news);session.getTransaction().commit(); catch(Exception e) e.printStackTrace(); session.getTransaction().rollback();finallyif(session!=null)if(session.isOpen()session.
20、close();第3章 测试3.1测试用例3.1.1 新闻添加用例测试用例编号1用例名称:新闻添加用例测试测试类型:功能性测试用例类型:基本事件前置条件:管理员登录新闻资讯网站后台执行步骤:1. 打开后台管理页面并登录;2 .单击资讯管理按钮;3. 选择资讯信息添加;4. 输入要添加的内容;5. 点击添加按钮;6. 在后台数据库中查看验证。 预期输出:(一).执行步骤5之后,弹出”添加成功”对话框,并在对应的数据表“news“中更新相关数据。实际结果:(一)符合预期 测试的结果:输入管理员账户密码并登录点击咨询管理按钮,选择添加资讯图3-1 后台管理主页图3-2 添加新闻测试点击添加提交新闻资讯信息输入相关信息图3-3 添加新闻测试图3-4 添加新闻成功后台数据库查看:16