ImageVerifierCode 换一换
格式:DOCX , 页数:84 ,大小:687.02KB ,
资源ID:9860058      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9860058.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计实验报告含全部.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计实验报告含全部.docx

1、课程设计实验报告含全部程序设计课程设计报告学 院:软件学院专 业:软件工程班 级:1217班学 号:*xxxx *xxxx 201200xxxx 201200xxxx姓 名:xxxx 、xxxx xxxx 、xxxx 指导教师:*时 间:2014年6月一. 交通咨询系统1.问题描述2.设计需求及分析3.设计功能的实现 3.1 算法思想描述 3.2概要设计 3.3详细设计4.实例测试及运行结果5.实现提示二.停车场管理系统1. 问题描述2. 设计需求及分析3. 设计功能的实现4. 实例测试及运行结果5. 实现提示三.学生管理系统1. 问题描述2. 设计需求及分析3. 设计功能的实现4. 实例测试

2、及运行结果5. 实现提示1.交通咨询系统专业:软件工程 班级:软件12xx 姓名:xxx 学号:*xxxx 完成日期:2014.6.261问题描述 设计一个交通咨询系统,能让旅客咨询从任一个城市定点到另一个城市定点之间的最短路径或最低花费或最少时间等问题。对于不同的咨询要求、可输入城市间的路程或所需时间或所需花费。设计要求: 1. 建立交通网络网的存储结构。 2. 总体设计要画流程图。 3. 提供程序测试方案。 4. 界面友好。2设计需求及分析 根据要求,需要在系统中建立无向图。系统应该有高度灵活性,可以由用户根据当前交通网络图输入初始数据,并且可以更改。系统根据用户的输入建立无向图的结构,并

3、通过狄克斯特拉算法和弗洛伊德算法实现要求,并提供两种功能供用户选择。3设计功能的实现 3.1 算法思想描述首先总体的思想步骤是:(图1-1)狄克斯特拉算法的具体流程图如下:(图1-2)弗洛伊德算法的具体流程图如下:(图1-3)3.2概要设计系统应该分为三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市顶点之间的最短路径问题。1、建立图的存储结构:无向图首先定义交通图的存储结构。邻接矩阵是表示图形中顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下定义的n阶方阵。Ai,j= 一个图的邻接矩阵表示是唯一的。图的邻接矩阵表示,除了需

4、要用一个二维数组存储顶点之间相邻关系的邻接矩阵外,通常还需要使用一个具有n个元素的一维数组来存储顶点信息,其中下标为i的元素存储顶点vi的信息2、单源最短路径:狄克斯特拉算法初始化S和D,置空最短路径终点集,置初始的最短路径值; Sv1=TRUE;Dv1=0;/S集初始时只有源点,源点到源点的距离为0; while(S集中顶点数n) 开始循环,每次求得v1到某个v顶点的最短路径,并加v到S集中;Sv=TRUE;更新当前最短路径及距离; 3、任意一对顶点间最短路径:弗洛伊德算法假设为从到的只以集合中的节点为中间节点的最短路径的长度。1.若最短路径经过点k,则;2.若最短路径不经过点k,则。因此,

5、最短路径。3.3 详细设计程序源代码如下:#include#include#define Num 300 /定义常量Num#define Maxint 32767enum booleanFALSE,TRUE; /定义布尔类型typedef char VertexType;typedef int Adjmatrix;typedef struct VertexType vexsNum; Adjmatrix arcsNumNum;MGraph;int D1Num,P1Num;int DNumNum,PNumNum;void CreateMGraph(MGraph *G,int n,int e); /

6、构建城市的无向图的声明void Dijkstra(MGraph *G,int v1,int n); /狄克斯特拉算法的声明void Floyd(MGraph *G,int n); /弗洛伊德算法的声明void main() MGraph *G; /定义无向图G int n,e,v,w,k; int m=1; G=(MGraph *)malloc(sizeof(MGraph); printf(欢迎使用【交通咨询系统】!本系统约定:n1.记一个城市为一个点,点用从1开始按顺序的编号表示,两个城市的连线为一条边;n2.程序要求输入的文本都是按回车进行确认;n3.程序输入输出均不带单位,单位默认为“公

7、里”。nn); printf(系统需要知道地图的结构,请输入顶点个数和边数,用“,”号隔开:n); scanf(%d,%d,&n,&e); CreateMGraph(G,n,e); /调用CreateMGraph有向图函数 while(m!=0) printf(=n); printf(请输入数字:n); printf(0 : 退出n); printf(1 : 求一个城市到其他所有城市的最短路径n); printf(2 : 求任意的两个城市之间的最短路径n); scanf(%d,&m); if(m=2) Floyd(G,n); printf(请输入起点和终点,用“,”号隔开:n); scanf(

8、%d,%d,&v,&w); k=Pvw; if(k=0) printf(n输出的结果:n顶点%d到%d无路径!n,v,w); else printf(n输出的结果:n从顶点%d到%d的最短路径是: %d,v,w,v); while(k!=w) printf(%d,k); k=Pkw; printf(%d,w); printf(n 路径长度: %dn,Dvw); else if(m=1) printf(请输入起点编号:n); scanf(%d,&v); Dijkstra(G,v,n); printf(程序已结束!谢谢您的使用!n);void CreateMGraph(MGraph *G,int

9、n,int e) /构建城市的无向图 int i,j,k,w; for(i=1;ivexsi=(char)i; for(i=1;i=n;i+) for(j=1;jarcsij=Maxint; /距离初始化 if(i=j) G-arcsij=0; printf(n请输入%d条边的两端点序号和长度,用“,”号隔开n例如:1号城市到2号城市的长度为3,则输入1,2,3): n,e); for(k=1;karcsij=w; /建立城市之间的距离 G-arcsji=w; printf(n地图的结构建立成功!n);void Dijkstra(MGraph *G,int v1,int n) /狄克斯特拉算法

10、求一个城市到任意一个城市的距离 int D2Num,P2Num; int v,i,w,min; enum boolean SNum; for (v=1;varcsv1v; /距离初始化 if(D2vMaxint) / 路径初始化 P2v=v1; else P2v=0; P2v1=0;Sv1=TRUE; /源点V1放入s中 for(i=2;in;i+) /循环直至所有顶点的最都求出 min=Maxint; /Maxint置最小长度初值 for(w=1;w=n;w+) /选不在S中且有最小顶点w if(!Sw&D2wmin) v=w;min=D2w; Sv=TRUE; for(w=1;warcsv

11、warcsvw; P2w=v; printf(n输出的结果:n); printf(路径长度 路径n); /输出最短路径 for(i=1;i=n;i+) printf(%5d,D2i); printf(%10d,i); v=P2i; while(v!=0) printf(%d,v); v=P2v; printf(n); void Floyd(MGraph *G,int n) /用弗洛伊德算法求任意两顶点最短距离 int i,j,k; /定义三个变量 for(i=1;i=n;i+) for(j=1;jarcsij!=Maxint) /距离初始化 Pij=j; /路径初始化 else Pij=0;

12、Dij=G-arcsij; for(k=1;k=n;k+) /以k为源点循环求出所有顶点的最短路径 for(i=1;i=n;i+) /i为已知最短路径的顶点 for(j=1;j=n;j+) /j为未知最短路径的顶点 if(Dik+DkjDij) Dij=Dik+Dkj; Pij=Pik; 4实例测试及运行结果 假如某交通网络上有4个城市(序号为1,2,3,4),4个城市之中有5条道路(不同长度),交通网络图如下图所示:(图1-4)打开本系统,界面如图:(图1-5)输入4,5之后按下键盘上的回车键:(图1-6)根据交通网络图输入线路数据后按回车:(图1-7)选择1回车后,再输入城市2,求得出的结

13、果如下:(图1-8)选择2后,要计算1到3的最短距离和路径,输入1,3,得到结果,并与输入3,1的输出结果作对比如下:(图1-9)5实现提示 在我对作品完成了最后的调试和运行之后,紧张的一个星期的课程设计终于暂时告一段落。这个课程设计的课题虽然总体来说难度不大,可以找到很多例子供参考。但是课程设计是个锻炼自己的极好机会,缺失的知识现在得补上!并且设计的过程是发现自身知识空点的最好的机会,以往不会遇到的情况,在实践练习中一一浮出水面,面对着它们,虽然短短两个星期,但是也经历了很多挫折,有过气馁,但是真正的迈过去以后才感觉到畅快和欣喜,所以遇到的问题,我想到的放弃念头很快被打消,坚持到了作品完成。

14、 课程设计具的实践意义,正如军事锻炼是对我们精神意志的磨练,它是对我们的一次考核和知识补充,对未来工作的演习。2.停车场管理系统专业:软件工程 班级:软件12xx 姓名:xxx 学号:201200xxxx 完成日期:2014.6.261.问题描述设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若停车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让

15、路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。2.设计需求及分析说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。实现设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也写出伪码算法(伪码算法的详细程度为按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。3.设计功能的实现(用C或C+描述)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌

16、照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。#include tcc.h#include#include #include#include#define MAX 10#define price 0.05 typedef struct time int hour; int min;time;typedef struct carnode char num10; time reach; time l

17、eave; carnode;typedef struct carstack carnode *stackMAX+1; int top; carstack;typedef struct qnode carnode *data; struct qnode *next; qnode;typedef struct node qnode *head; qnode *rear; linkqueue; void initstack(carstack *s) int i; s-top=0; for(i=0;istacks-top=NULL; int initqueue(linkqueue *Q) Q-head

18、=(qnode *)malloc(sizeof(qnode); if(Q-head!=NULL) Q-head-next=NULL; Q-rear=Q-head; return 1; else return -1; int arrival(carstack *enter,linkqueue *w)/车辆?到?达? carnode *p; qnode *t; p=(carnode *)malloc(sizeof(carnode); printf(n请?您输?入?车牌?号?:阰); scanf(%s,&p-num); if(enter-toptop+; printf(n该?车停 ?在的?位?置?:

19、阰%d号?,enter-top); printf(n请?您输?入?车到?达?的?时骸?间?:阰); scanf(%d:%d,&(p-reach.hour),&(p-reach.min); enter-stackenter-top=p; return 1; else printf(对?不?起e,?停 ?车场?已?满请?您停 ?在便?道台?上); t=(qnode *)malloc(sizeof(qnode); t-data=p; t-next=NULL; w-rear-next=t; w-rear=t; return 1; void print(carnode *p,int room)/汽?车离

20、?站?时骸?缴费?显?示? printf(n车辆?离?开a的?时骸?间?:阰); scanf(%d:%d,&p-leave.hour,&p-leave.min); printf(n离?开a车辆?的?车牌?号?为a:%s,p-num); printf(n其?到?达?时骸?间?为a:阰%02d:%02d,p-reach.hour,p-reach.min); printf(n其?离?开a时骸?间?为a:阰%02d:%02d,p-leave.hour,p-leave.min); printf(n应畖缴费?用?为a:阰%.2f元a,(p-leave.hour-p-reach.hour)*60+(p-le

21、ave.min-p-reach.min)*price); free(p);void leave(carstack *enter,carstack *temp,linkqueue *w) /车辆?离?开a int room; carnode *p,*t; qnode *q; if(enter-top0)/有瓺车 while(1) printf(n请?您输?入?车在停 ?车场?上?的?位?置?:); scanf(%d,&(room); if(room=1&roomtop) break; while(enter-toproom)/位?置?不?在栈?顶¥的?汽?车出?栈? temp-top+; tem

22、p-stacktemp-top=enter-stackenter-top; enter-stackenter-top=NULL; enter-top-; p=enter-stackenter-top; enter-stackenter-top=NULL; enter-top-; while(temp-top=1)/当獭?暂Y时骸?存?储洹?汽?车的?栈?结构1中D有瓺汽?车时骸? enter-top+; enter-stackenter-top=temp-stacktemp-top; temp-stacktemp-top=NULL; temp-top-; print(p,room); /判D断

23、?便?道台?上?是?否?有瓺车及停 ?车场?上?是?否?已?满 if(w-head!=w-rear)&enter-tophead-next; t=q-data; enter-top+; printf(n请?便?道台?上?的?%s号?车进?入?第台?d位?置?。,t-num,enter-top); printf(n请?输?入?现?在的?时骸?间?:阰); scanf(%d:%d,&(t-reach.hour),&(t-reach.min); w-head-next=q-next; if(q=w-rear) w-rear=w-head; enter-stackenter-top=t; free(q

24、); else printf(n便?道台?里?没?有瓺车!?); else printf(n目?前停 ?车场?里?没?有瓺停 ?放?的?车); /显?示?停 ?车场?的?信?息void list1(carstack *s) int i; if(s-top0) printf(n停 ?车场?:阰); printf(n停 ?车位?置?t到?达?时骸?间?t车牌?号?n); for(i=1;itop;i+) printf( %dt,i); printf( %02d:%02d ,s-stacki-reach.hour,s-stacki-reach.min); printf(t%s,s-stacki-nu

25、m); else printf(n对?不?起e,?暂Y无T停 ?车场?里?的?信?息!?); /显?示?便?道台?上?的?void list2(linkqueue *w) qnode *p; p=w-head-next; if(w-head!=w-rear) printf(n等台?待鋣车辆?的?号?码?为a:阰); printf(n*); while(p!=NULL) puts(p-data-num); p=p-next; printf(n*); else printf(n便?道台?里?没?有瓺车!?);void list(carstack s,linkqueue w) int flag,tag; flag=1; while(flag) printf(n请?选?择?:阰); printf(ntt1、停 ?车场?信?息ntt2、便?道台?信?息ntt3、返?回?主菜?单蹋 n); while(1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1