还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
沈阳航空航天大学课程设计报告课程设计名称软件工程综合课程设计课程设计题目产品供货商维护软件设计院(系)计算机学院专业计算机科学与技术班级学号姓名指导教师说明结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实不予通过报告和电子数据必须作为实验现象重复的关键依据学术诚信声明本人声明所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果本人签名:日期年月日沈阳航空航天大学课程设计任务书课程设计名称软件工程综合课程设计专业计算机科学与技术学生姓名班级学号题目名称产品供货商维护软件设计起止日期2016年12月19日起至2017年1月13日止课设内容和要求内容
1.定义供货商分类
2.定义供货商信息存储格式
3.完成供货商信息的维护
4.实现对供货商的质量评价
5.完成对供货商信息的查询和统计要求
1.界面要优化,直观,大方,美观
2.采用面向对象程序设计方法
3.用数据库保存各项信息
4.独立完成系统的设计、编码和调试工作并通过指导老师的检查
5.按课程设计规范撰写课程设计报告教研室审核意见教研室主任签字指导教师(签名)年月日学生(签名)年月日课程设计总结 由于时间比较紧张,再加上自己本身在语言编程方面的能力比较有限,该系统存在着不完善的地方作为一个短时间完成的实用性软件,本系统在实用性和全面性方面还有不少欠缺如本系统后面的统计功能未能很好地实现,效果并不是十分理想总的来说,这个产品供货商维护软件基本上满足了一个供货商对于商品的维护,它和正式的软件维护还有一定的差距另外,还有一些功能模块还可以进一步地完善,希望可以通过以后的学习能够不断地完善和强大本系统的功能尽管如此,在开发和设计这个软件的过程中,通过学习,我掌握了很多编程上的新知识,比如说更加了解了MYSQL数据库,还有对JAVA语言也有了更深的认识,总的来说,通过这次课程设计,让我取得了一个相当大的进步同时,使用产品供货商维护软件来管理产品供货商的各种信息,对于信息化时代的人们来说,是很有必要的现在已经有越来越多的供货商开始认识到供货商管理系统带来的巨大便利大范围的推广和使用产品供货商维护软件系统会逐渐成为主流模式各种供货商维护系统的需求量是很大的,这个系统的市场前景应该是良好的目录TOC\o1-3\h\z\uHYPERLINK\l_Toc2019826111最短路径在公交系统中的应用介绍与要求5HYPERLINK\l_Toc
2019826121.1最短路径在公交系统中的应用的题目介绍5HYPERLINK\l_Toc
2019826131.2最短路径在公交系统中的应用的要求错误!未定义书签HYPERLINK\l_Toc2019826142系统功能模块的结构图错误!未定义书签HYPERLINK\l_Toc
2019826152.1绘制系统功能结构框图错误!未定义书签HYPERLINK\l_Toc
2019826182.2主要模块的功能说明错误!未定义书签HYPERLINK\l_Toc2019826193使用数据结构与程序的函数的描述错误!未定义书签HYPERLINK\l_Toc
2019826203.1程序使用的数据结构的描述错误!未定义书签HYPERLINK\l_Toc
2019826213.2程序使用的函数的描述错误!未定义书签HYPERLINK\l_Toc2019826224程序运行测试与结果12HYPERLINK\l_Toc
2019826234.1程序的测试与结果12HYPERLINK\l_Toc201982624错误!未定义书签HYPERLINK\l_Toc201982625参考文献13HYPERLINK\l_Toc201982626附录(关键部分程序清单)141最短路径在公交系统中应用
1.1最短路径在公交系统中的应用题目介绍目前很多城市公交网站提供了查询信息,但大多只是简单的公交路线的指向,对此没有进行更加深层次说明,更没有没有结合地图进行属性到空间以及空间到属性的动态查询,更没有为用户提供站点到站点间的最佳换乘查询因此,建立两个站点之间的城市公共汽车信息查询系统非常必要,它既能方便市民查询从起点到所到达目的地最短的公交信息,又能扩大城市公交的宣传,是未来公交信息化的发展趋势生活快节奏的今天,寻找公交的最短路径,尤为必要,因为它不仅节省了乘坐公交车得乘客的大量的时间,也为公交的工作人员减小了巨大的工作量,是一件利己利人的好事,因此,推行最短路在公交系统的应用就显得尤为必要
1.2最短路径在公交系统中的应用的要求
1.此公交查询系统软件与其它软件有所不同,它小巧实用,主要利用数据 库来实现 a. 将所有的数据分类都存入数据库的相关列表中 b. 程序调用的数据都来自数据库 c. 能随意的输入数据和输出数据 d. 通过过滤的功能来查找出来的记录中找到所需的项 e. 可直接在数据库中对数据信息进行修改、添加、删除等操作该应用一定要能够应用到实际的生活中,能够有一定的健壮性,能够经受住强大的用户冲击,能够有一个大容量的数据库对其进行支持改应用主要目的是为了给用户提供最短路径的应用,因此应该能够对用户的输入进行快速的反应,并且提供出最短的路径2系统功能模块的结构图
2.1绘制系统功能结构框图http://wenku.baidu.com/view/4e828223aaea998fcc220e5a.html\l##\o分享图
2.1绘制系统功能结构框图
2.2主要的功能模块说明输入查询信息的要点操作可行性分析,本系统界面美观明了,提供的信息语言通俗易懂,而且操作容易,毕竟该应用是针对广大的群众,因此该界面应该对其最简化,更好的起到服务广大人民群众目的,标准是用户只要懂得初步的计算机操作即可,这样就可以得到用户想要的信息在处理与查询的模块中需要数据库对其进行支持,数据库将所有收集的数据信息按其属性分类存储到数据库中,再通过程序调用这些数据信息实现各种查询及管理,即所谓的程序设计数据化,数据管理程序化思想基于这种思想的查询系统的理论及技术已日趋成熟,加之这些软件的应用性和移植性都非常优秀而且其发展也到了较成熟的阶段,这就保障了日后的系统维护工作,并可不断更新另外由于是最短路径的实现是基于贪心的迪杰斯特拉算法,因此不仅需要构建数据库,将用户信息进行处理,程序本身也应该有良好的健壮性,特别是早晚高峰时期的人流量特别大,该程序能有这种良好的处理能力我认为在数据库的建立上,也可以运用人工智能的方法,对于用户经常输入的目的地进行准确的记忆,这样不仅仅减小系统的处理的时间,也更加爱方便了用户对于查询的结果对于查询的结果,同样与输入的查询的要求是一样的,特别是输出的结果,应该是最简化的,让普通大众能够看得懂,这是应用软件重要的标准,复杂的细节我们可以自己对其实现,而呈现给用户的,永远是最简单得结果3使用数据结构与程序的函数的描述http://wenku.baidu.com/view/4e828223aaea998fcc220e5a.html\l##\o分享
3.1该程序使用的数据结构
1.本应用涉及到公交路线,该路线是一个图的数据结构,因此开始的时候应该定义一个关于图的结构体,实现如下typedefstructMGraph{stringvexs
[10];//顶点信息intarcs
[10]
[10];//邻接矩阵intvexnumarcnum;//顶点数和边数}MGraph;本图只是一个应用的演示,因此选取一个简单的图,这个图是通过邻接矩阵进行存储的,存储如下voidCreateDNMGraphG//构造有向网{stringv1v2;intw;intijk;cout请输入顶点数和边数;cinG.vexnumG.arcnum;cout请输入顶点;fori=0;iG.vexnum;i++cinG.vexs[i];fori=0;iG.vexnum;i++forj=0;jG.vexnum;j++G.arcs[i][j]=INFINITY;cout请输入边和权值endl;fork=0;kG.arcnum;k++{cinv1v2w;i=LocateVexGv1;j=LocateVexGv2;G.arcs[i][j]=w;}}所选择的图可以如下所示此时可以根据该图的权值与边依次将这个图输入进去,即可完成输入的操作
3.2该程序使用的函数描述
1.返回顶点u在图中的位置intLocateVexMGraphGstringu{forinti=0;iG.vexnum;i++ifG.vexs[i]==ureturni;return-1;}voidShortestPath_DIJMGraphGintv0intp[][MAX_VERTEX_NUM]intD[]这个函数是对最短路径寻找的函数,其思想是利用递归方法,从起点开始,依次便利与它直接相连的边,然后找到其中的最短的边在运行时先对最短路径进行初始化,然后在对其余的节点依次便利forv=0;vG.vexnum;v++{final[v]=false;D[v]=G.arcs[v0][v];forw=0;wG.vexnum;w++p[v][w]=-1;ifD[v]INFINITY{p[v]
[0]=v0;p[v]
[1]=v;}}D[v0]=0;final[v0]=true;4程序的运行结果与测试
4.1程序的运行输入与结果展示根据上图,可以知道需要依次输入的点数为6,边数为8然后需要将这个图给输入进去,输入的方式为以边为标准的两个节点与边的权值,输入完成之后就可以运行运行结果的分析根据该图的结构,生成一个对于该图的邻接矩阵,结构如运行结果显示最短路径的显示过程就是递归的遍历过程,其运行结果如图,其最后的结果就是最短路径参考文献
1.胡伏湘等,计算机网络技术教程,清华大学出版社,2004年2月
2.YouluZheng著,彭旭东译,计算机网络,清华大学出版社,2004年
3.张立云等,计算机网络基础教程,清华大学出版社,2004年1月
4.史忠植,高级计算机网络,电子工业出版社,2002年6月
5.刘四清等,计算机网路技术基础教程,清华大学出版社,2004年3月附录(关键部分程序清单)#includeiostream#includeiomanip#includestringusingnamespacestd;#defineINFINITY65535//无边时的权值#defineMAX_VERTEX_NUM10//最大顶点数typedefstructMGraph{stringvexs
[10];//顶点信息intarcs
[10]
[10];//邻接矩阵intvexnumarcnum;//顶点数和边数}MGraph;intLocateVexMGraphGstringu//返回顶点u在图中的位置{forinti=0;iG.vexnum;i++ifG.vexs[i]==ureturni;return-1;}voidCreateDNMGraphG//构造有向网{stringv1v2;intw;intijk;cout请输入顶点数和边数;cinG.vexnumG.arcnum;cout请输入顶点;fori=0;iG.vexnum;i++cinG.vexs[i];fori=0;iG.vexnum;i++forj=0;jG.vexnum;j++G.arcs[i][j]=INFINITY;cout请输入边和权值endl;fork=0;kG.arcnum;k++{cinv1v2w;i=LocateVexGv1;j=LocateVexGv2;G.arcs[i][j]=w;}}//迪杰斯特拉算法求有向网G的v0顶点到其余顶点v的最短路径p[v]及带权长度D[v]//p[][]=-1表示没有路径,p[v][i]存的是从v0到v当前求得的最短路径经过的第i+1个顶点这是打印最短路径的关键,则v0到v的最短路径即为p[v]
[0]到p[v][j]直到p[v][j]=-1路径打印完毕//final[v]为true当且仅当v∈S即已经求得从v0到v的最短路径voidShortestPath_DIJMGraphGintv0intp[][MAX_VERTEX_NUM]intD[]{intvwijmin;boolfinal
[10];forv=0;vG.vexnum;v++{final[v]=false;//设初值D[v]=G.arcs[v0][v];//D[]存放v0到v得最短距离,初值为v0到v的直接距离forw=0;wG.vexnum;w++p[v][w]=-1;//设p[][]初值为-1,即没有路径ifD[v]INFINITY//v0到v有直接路径{p[v]
[0]=v0;//v0到v最短路径经过的第一个顶点p[v]
[1]=v;//v0到v最短路径经过的第二个顶点}}D[v0]=0;//v0到v0距离为0final[v0]=true;//v0顶点并入S集fori=1;iG.vexnum;i++//其余G.vexnum-1个顶点{//开始主循环,每次求得v0到某个顶点v的最短路径,并将v并入S集,然后更新p和Dmin=INFINITY;forw=0;wG.vexnum;w++//对所有顶点检查if!final[w]D[w]min//在S集之外即final[]=false的顶点中找离v0最近的顶点,将其赋给v距离赋给min{v=w;min=D[w];}final[v]=true;//v并入S集forw=0;wG.vexnum;w++//根据新并入的顶点,更新不在S集的顶点到v0的距离和路径数组{if!final[w]minINFINITYG.arcs[v][w]INFINITYmin+G.arcs[v][w]D[w]{//w不属于S集且v0-v-w的距离目前v0-w的距离D[w]=min+G.arcs[v][w];//更新D[w]forw=0;wG.vexnum;w++p[v][w]=-1;//设p[][]初值为-1,即没有路径ifD[v]INFINITY//v0到v有直接路径{p[v]
[0]=v0;//v0到v最短路径经过的第一个顶点p[v]
[1]=v;//v0到v最短路径经过的第二个顶点}}forj=0;jG.vexnum;j++//修改p[w],v0到w经过的顶点包括v0到v经过的所有顶点再加上顶点w{p[w][j]=p[v][j];ifp[w][j]==-1//在p[w][]第一个等于-1的地方加上顶点w{p[w][j]=w;break;}}}}}}voidmain{intij;MGraphg;CreateDNg;intp[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//最短路径数组pintD[MAX_VERTEX_NUM];//最短距离数组DShortestPath_DIJg0pD;cout最短路径数组p[i][j]如下endl;fori=0;ig.vexnum;i++{forj=0;jg.vexnum;j++coutsetw3p[i][j];coutendl;}coutg.vexs
[0]到各顶点的最短路径及长度为endl;fori=0;ig.vexnum;i++{ifi!=0D[i]!=INFINITY{coutg.vexs
[0]-g.vexs[i]的最短路径长度为:D[i];cout最短路径为;forj=0;jg.vexnum;j++{ifp[i][j]-1coutg.vexs[p[i][j]];}coutendl;}elseifD[i]==INFINITYcoutg.vexs
[0]-g.vexs[i]:不可达endl;}}PAGE。