- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言与数据结构综合训练 第一页,共十八页。 个人关系网的设计与实现系统 任务要求 (1)系统菜单的建立 (2)信息的输入 (3)信息的输出 (4)个人关系的查询 第二页,共十八页。 思路分析 当面对个人关系网的问题时,我们首先想到的是用树或图知识去解决,这是没错的。但当我们用传统方法操作时,会出现无从下手的感觉,所以我们应该改变思路,学会用C++语言去建立图,并学会用switch,case语言建立菜单,这样会更轻松简便的解决个人关系网问题。 第三页,共十八页。 个人关系网的分析 当一个人在社会中就会扮演很多角色,这样与人形成了各种各样的关系。 从现实出发 就会考虑个人的关系网有: 朋友、同事、师生、父子关系等等 第四页,共十八页。 个人关系示意图 亲戚 陌生人 父子 师生 师生 同事 父子 朋友 甲 乙 丙 爸爸 个人 第五页,共十八页。 个人关系的程序分析 (1)定义图中的顶点信息、边的信息、边的大小 (2)清除图中的记录 (3)打印图中的信息 (4)个人关系信息的建立 (5)把个人关系信息录入图中 (6)菜单的建立 第六页,共十八页。 图中信息的建立 #define vexnum 4 //图的最大顶点个数 #define M 10 //储存人名数组的大小 using namespace std; typedef struct { int **arcs;//边的信息 char vex[vexnum][M];//顶点信息 int vexs; //边的大小 } Graph; 第七页,共十八页。 清除图中信息 void DestroyGraph(Graph G)//清除图中记录 { int i; for(i = 0; i G.vexs; i++) { free(G.arcs[i]); } free(G.arcs); } 第八页,共十八页。 打印图中信息 void Print(Graph G)//打印图中信息 { int i, j; cout关系信息输出:endl; for(i = 0; i G.vexs; i++) { printf(\t); coutG.vex[i]; } coutendl; 第九页,共十八页。 for(i = 0; i G.vexs; i++) { coutG.vex[i]; for(j = 0; j G.vexs; j++) { switch(G.arcs[i][j]) { case 0: //边的信息为0.打印关系为陌生 cout\t陌生; break; case 1: //边的信息为1,打印关系为同学 cout\t同学; break; 第十页,共十八页。 case 2: //边的信息为2,打印关系为朋友 cout\t朋友; break; case 3: //边的信息为3,打印关系为同事 cout\t同事; break; default: //否则,边的信息为100,打印关系为本人 cout\t本人; break; } } coutendl; } } 第十一页,共十八页。 个人信息的建立 (1)输入要查找的两个人的姓名 char name1[10]; char name2[10]; // cinname1; // cinname2; scanf(%s %s, name1, name2); 第十二页,共十八页。 (2)在表中查找并记录两个人的名字 (3)用switch,case语句记录边的信息,并记录他们之间的关系 (4)如若两个人为一个人,则打印关系为本人 第十三页,共十八页。
文档评论(0)