1322 软件工程课程设计报告.docx
- 文档编号:12187455
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:25
- 大小:1.04MB
1322 软件工程课程设计报告.docx
《1322 软件工程课程设计报告.docx》由会员分享,可在线阅读,更多相关《1322 软件工程课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
1322软件工程课程设计报告
《软件工程》
课程设计报告
课程设计题目:
巧克力爱好者匿名
北京工业大学计算机学院班级:
120704
学号:
12070322
报告人姓名:
苏文元
承担角色:
数据库连接
同组组长:
蔡琳琳学号:
12070227
同组其他成员:
王忠朴学号:
12070121
王聿铭学号:
12070104
课程教师:
杨红丽
实验指导教师:
杨红丽
实验地点:
自习室
完成起止日期:
2015/7/13-2015/7/21
目录
1.课程设计概述3
1.1.目的3
1.2.任务3
1.3.开发环境3
1.4.参考资料3
2.项目的需求分析3
3.项目设计的基本原理和采用的主要方法与技术3
3.1.基本原理4
3.2.主要方法和技术4
4.本人实现项目的过程与步骤4
4.1.数据库(SQLserver)的设计4
4.2.NetBeans与SQLserver的连接9
4.3.代码实现对数据库的操作11
5.个人遇到的困难与获得的主要成果17
5.1.数据库问题17
5.2.连接问题19
5.3.NetBeans代码问题21
5.4.获得的主要成果22
6.测试与运行记录22
7.课程设计完成结果分析与个人小结23
8.附录24
8.1.软件配置24
8.2.个人完成的程序模块24
8.3.文档清单24
1.课程设计概述
1.1.目的
1.通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识。
2.为学生适应毕业后团队合作开发规模稍大项目和综合应用本专业所学习的多门课程知识创造实践机会。
为学生提供主动学习、积极探索与大胆创新的机会。
3.使学生通过参加小组团队的开发实践,了解项目管理、团队合作、文档编写、口头与书面表达的重要性。
4.使每个学生了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术、技能。
5.通过“稍大的”富有挑战性的软件实验项目开发实践,为学生提供主动学习和深入实践的机会,并且通过课程设计实践中,提高学生的自学能力、书面与口头表达能力、创造能力和与团队其他成员交往和协作开发软件的能力,提高学生今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。
1.2.任务
巧克力爱好者匿名软件开发目标是开发一个产品,能够帮助巧克力爱好者匿名组织处理数据。
该产品向会员提供相关的服务。
该产品将在这些领域完成所要求的计算,并生成各种列表。
1.3.开发环境
硬件平台:
Windows7操作系统,Wndow8操作系统
开发语言:
Java
数据库:
MicrosoftSQLService2008R2
使用项目管理工具:
Project
OO分析设计工具:
Visio
测试工具:
JUnit
版本控制工具:
SVN
1.4.参考资料
1.《软件工程面向对象和传统的方法》修订版本:
第8版发行日期:
2011.12
2.C/S架构使用文档、Java编程文档、Project使用文档、Visio使用文档、Junit使用文档、SVN使用文档
2.项目的需求分析
巧克力爱好者匿名是一个致力于帮助各种吃巧克力上瘾者的组织。
该组织的会员每月向ChocAn付费,然后他们就有权利向保健专家等要求得到不受限制的咨询和治疗。
每个会员含有一个塑料卡,卡中含有一个磁条,上面有编码信息,会员可以向提供者寻求服务。
会员在提供者的终端读卡器上刷卡识别身份。
3.项目设计的基本原理和采用的主要方法与技术
3.1.基本原理
1、用分阶段的生命周期计划严格管理
2、坚持进行阶段评审
3、实行严格的产品控制
4、采用现代程序设计技术
5、结果应能清楚地审查
6、开发小组的人员应该少而精
7、承认不断改进软件工程实践的必要性
3.2.主要方法和技术
主要使用JAVA编程实现,属于面向对象方法。
面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
主要特征有:
封装性、继承性、多态性。
4.本人实现项目的过程与步骤
4.1.数据库(SQLserver)的设计
安装数据库
图4-1-1首先安装数据库SQLserver
成功安装数据库
图4-1-2成功安装数据库
以用户名sa登录数据库
图4-1-3以用户名sa登录数据库
创建数据库
图4-1-4成功登录,并创建自己的数据库
图4-1-5创建本项目的Chocolate数据库,并添加表
设置主键
图4-1-6设置其中的主键
设置外键关系
图4-1-7设置外键关系
设置check约束
图4-1-8设置check约束
表之间的关系图
图4-1-9各个表之间的关系图
4.2.NetBeans与SQLserver的连接
设置连接的相关属性,具体详细内容,已在小组报告中写明。
图4-2-1连接属性
添加链接驱动
图4-2-2添加SQLjdbc4.jar库
在NetBeans中编写Java代码,实现连接
publicstaticConnectiongetConnection(StringdriverClassName,StringdbURL,StringuserName,Stringpassword)
throwsClassNotFoundException,SQLException{//实现连接数据库
Connectioncon=null;
Class.forName(driverClassName);
con=DriverManager.getConnection(dbURL,userName,password);
returncon;
}
publicstaticConnectionlinkDataBase()throwsClassNotFoundException,SQLException{//传递参数给连接函数
StringmySQLDirver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
StringdbName="jdbc:
sqlserver:
//localhost:
1433;DataBaseName=Chocolate";
StringuserName="sa";
Stringpassword="strive";
Connectioncon=getConnection(mySQLDirver,dbName,userName,password);
returncon;
}
表4-2-1代码实现连接
4.3.代码实现对数据库的操作
以下代码为在数据库中新建Service、Provider、ServiceRecord表,并为其添加属性
StringService="CREATETABLEService("
+"codeCHAR(6),"+"nameCHAR(20),"
//+"feedouble"
+")";
booleanexecute=stmt.execute(Service);
StringServiceRecord="CREATETABLEServiceRecord("
+"submissionDateDATE,"+"serviceCodeCHAR(6),"
+"providerNumberBINARY(31),"+"memberNumberBINARY(31),"
+"serviceDateDATE,"
+")";
booleanexecute_ServiceRecord=stmt.execute(ServiceRecord);
StringProvider="CREATETABLEProvider("
+"numberBINARY(31),"+"NameCHAR(25),"
+"StreetCHAR(25),"+"CityCHAR(10),"+"StateCHAR(14),"
+"ZipCHAR(10),"+"EmailCHAR(10),"+"StatusCHAR
(1),"
+")";
booleanexecute_Provider=stmt.execute(Provider);
StringProvider="CREATETABLEProvider("
+"numberBINARY(31),"+"NameCHAR(25),"
+"StreetCHAR(25),"+"CityCHAR(10),"+"StateCHAR(14),"
+"ZipCHAR(10),"+"EmailCHAR(10),"+"StatusCHAR
(1),"
+")";
booleanexecute_Provider=stmt.execute(Provider);
表4-3-1在数据库中新建表
以下代码可以在任何表中插入数据,分别对各个表的元素类型做判断,可以把传过来的数据拆分,进行插入对应的表中。
if(Member.equals("Service")){
for(inti=0;i
if(table[i]==null){
break;//设置一个机制,如果table为空,则返回
}
System.out.println("suwen:
"+table[i]);
split1=table[i].split("#",count);//把数组表table按“#”分割,然后赋值给split1
for(intn=0;n if(n==count-1){//最后一个的时候,则加括号 value=value+split1[n]+")"; break; } value=value+"'"+split1[n]+"'"+",";//最后储存的类似'zhangsan',12,34,6)的内容 } //System.out.println(value); insertSQL=insertSQL+value;//此时,inertSQL才完整保存着要执行的插入语句 intaffects; //System.out.println(insertSQL); affects=stmt.executeUpdate(insertSQL); rs=stmt.executeQuery(querySQL); value="";//value赋空, insertSQL=insertSQL_temp; } //while(rs.next()){ //for(intp=1;p<=count;p++){ //System.out.print(rs.getString(p)); //} //System.out.println(); //} } if(Member.equals("ServiceRecord")){ //Datedate=newjava.util.Date(); //java.sql.DatesqlDate=newjava.sql.Date(date.getTime()); for(inti=0;i if(table[i]==null){ break;//设置一个机制,如果table为空,则返回 } split1=table[i].split("#",count);//把数组表table按“#”分割,然后赋值给split1 for(intn=0;n if(n==count-1){//最后一个的时候,则加括号 SimpleDateFormatsim=newSimpleDateFormat("MM-dd-yyyy"); //Stringstr="2011-5-3114: 40: 50"; Dated=sim.parse(split1[n]); Stringdate_str=sim.format(d); value=value+"'"+date_str+"'"+")"; break; } if(n==0){ SimpleDateFormatsim=newSimpleDateFormat("MM-dd-yyyyhh: mm: ss"); //Stringstr="2011-5-3114: 40: 50"; Dated=sim.parse(split1[n]); Stringdate_str=sim.format(d); value=value+"'"+date_str+"'"+","; continue; } if(n==2||n==3){ value=value+split1[n]+","; continue; } value=value+"'"+split1[n]+"'"+",";//最后储存的类似'zhangsan',12,34,6)的内容 } System.out.println(value); insertSQL=insertSQL+value;//此时,inertSQL才完整保存着要执行的插入语句 intaffects; System.out.println(insertSQL); affects=stmt.executeUpdate(insertSQL); rs=stmt.executeQuery(querySQL); value="";//value赋空, insertSQL=insertSQL_temp; } //while(rs.next()){ //for(intp=1;p<=count;p++){ //System.out.print(rs.getString(p)); //} //System.out.println(); //} } } returnData; 表4-3-2插入数据 提取数据库当中的数据,并把数据赋给data if(num==0){//提取数据 while(rs.next()){ Data[j]=""; for(inti=1;i<=count;i++){ if(i==count){ Data[j]=Data[j]+rs.getString(i); break; } Data[j]=Data[j]+rs.getString(i)+"#"; //System.out.println("steve: "+Data[j]); } System.out.println("steve: "+Data[j]); j++; } //returnData; } 表4-3-3提取表当中的数据 删除数据库当中的数据,在这里定了一个机制——因为表的第二个属性均为char类型,故取一个特殊值(~),当数据库中的第二个属性不等于这个的“~”,就进行删除。 Elseif(num==1){//删除 StringdeleteSQL=“DELETEFROM“+Member+“where“+rsmd.getColumnLabel (2)+“! =’~’”; //控制使member表的第一列不为#的数据删除 intaffects; affects=stmt.executeUpdate(deleteSQL); rs=stmt.executeQuery(querySQL); //while(rs.next()){ //for(intI=1;I<=count;i++){ //System.out.print(rs.getString(i)); //} //} //System.out.println(“sdfsd”); } 表4-3-4删除数据库当中的数据 5.个人遇到的困难与获得的主要成果 5.1.数据库问题 首次成功安装数据库,由于疏忽,删除了SQLserver下DATA文件夹下的文件,导致SQLserver无法正常运行,因此必须重新安装SQLserver,但是重新安装之后仍然无法正常运行SQLserver,错误如下。 图5-1-1无法登陆 经过自己的经验以及XX,最总找到了问题的所在,SQLserver配置管理器里的tcp/ip未启用,而且SQL服务已被停止,经过以下两步成功解决问题。 图5-1-2启用TCP/IP 图5-1-3启动服务 5.2.连接问题 在新建驱动程序的时候,错误的选择了sqljdbc.jar,以至于无法连接 图5-2-1错误操作 后来经过错误提示,及其XX明白错误原因 图5-2-2正确操作 把数据库和实例名称填反了,故此无法正确连接,结果无数次尝试,XX,最终解决问题。 图5-2-3错误操作导致的结果 正确操作后,成功连接到数据库 图5-2-4正确连接 5.3.NetBeans代码问题 因为版本的问题,无法支持本版本的sqljdbc4.jar 图5-3-1错误结果 因为使用了SQLserver2005以前的驱动地址(StringmySQLDirver="com.microsoft.sqlserver.jdbc.sqlserver.SQLServerDriver";),故此连接不上 图5-3-2错误结果 因为错误使用了数据库地址(StringdbName="jdbc: microsoft: sqlserver: //localhost: 1433;DataBaseName=my";),在地址中多加了个Microsoft,故出现以下结果。 图5-3-3错误结果 最后,重新下载更版本驱动,并改驱动地址为: StringmySQLDirver="com.microsoft.sqlserver.jdbc.SQLServerDriver";数据库地址为: StringdbName="jdbc: sqlserver: //localhost: 1433;DataBaseName=my",成功连接到数据库。 图5-3-4最后的成功连接 5.4.获得的主要成果 最终经过自己的研究、XX、Google,成功的实现了在NetBeans端对数据库的操作。 6.测试与运行记录 图6-1-1添加提供者 图6-1-2成功添加 7.课程设计完成结果分析与个人小结 经过软件工程这门课程,让我学会了开发项目的正确步骤,明白了团队合作的重要性,更明白了需求分析的重要性。 在开发过程中,必须经常和小组队员进行沟通,了解彼此的进度,明白之间的接口,最后容易把各自的功能模块合在一起。 8.附录 8.1.软件配置 1、NetBeans下载安装 2、数据库MicrosoftSQLService2008R2的安装以及配置,只能够在Windows7操作系统上安装 3、连接NetBeans与数据库,具体详细步骤,见小组报告。 8.2.个人完成的程序模块 (2000行)(2742行)(3686行)(280行) 系统程序文件共计57个文件,个人设计13个文件,占开发文件的23%。 系统程序共计8708行,个人书写程序2742行,占程序行数的31% 测试程序共计2000行,个人书写程序0行,占测试程序的0%。 程序: (17个) 界面设计程序: (13个) JframeInterfaceOperator.java,(171行) JframeProviderAddDeleteChange.java,(172行) JframeAddProvider.java,(221行) JframeDeleteProvider.java,(150行) JframeEditProvider.java,(220行) JframeMemberAddDeleteChange.java,(169行) JframeAddMember.java,(221行) JframeDeleteMember.java,(163行) JframeEditMember.java,(219行) JframeServiceAddDeleteChange.java,(137行) JframeAddService.java,(177行) JframeDeleteService.java,(159行) JframeEditService.java,(196行) 基本类的设计: (4个) Member.java,(45行) Person.java,(186行) Provider.java,(43行) Service.java,(93行) 8.3.文档清单 项目开发计划 王忠朴 需求规格说明书 王忠朴 概要设计说明书 蔡琳琳 详细设计说明书 王忠朴与蔡琳琳共同编写 数据库设计说明书 苏文元 测试计划 王聿铭 测试分析报告 王聿铭 项目开发总结 蔡琳琳 程序源代码 王忠朴与蔡琳琳共同编写 小组开发记录 王忠朴与蔡琳琳共同编写 SVN版本控制工具的使用 王聿铭 Project项目管理工具的使用 蔡琳琳 表8-1文档清单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1322 软件工程课程设计报告 软件工程 课程设计 报告