我因为当时课设选题的时候,不想随随便便,又我看了下那些题目,也就这个最难,而且我又注意到文档的修改日期,是2017年,所以就认为老师给老课题给我们做,是怕我们交不起作业,也由于老师自己长年教这课设,代码可能都很熟悉,总之我就觉得这次课设很水,但完成这课设还确实花了我一番时间。

附上课程设计说明书:

课程名称:数据结构与算法课程设计

课程设计题目:交通咨询系统

已知技术参数和设计要求:

问题描述:

设计一个交通咨询系统,为自驾游旅行者客咨询从任一个城市到另一个城市之间的最短路径问题。设计分三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市顶点之间的最短路径问题。

基本要求:

(1)对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能;

(2)咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。由用户选择输入起点、终点,输出信息:旅行者从起点、终点经过的每一座城市。

(3)主程序可以有系统界面、菜单;也可用命令提示方式;选择功能模块执行,要求在程序运行过程中可以反复操作。

测试数据:

(1)参考《数据结构(C语言版)》(严蔚敏, 吴伟民编著)7.6节图7.33的交通图。

(2)答辩测试数据:北京到乌鲁木齐;北京到昆明;广州到哈尔滨;乌鲁木齐到南昌;沈阳到昆明。

选作内容:

(1)考虑由于路况不同,不同城市间自驾旅行每百公里油耗不同,为旅行选择最经济路线。

需求分析

(1)功能性需求:

  本次所设计的交通咨询系统需要在功能在实现用户在一个交通线路网中,从一个城市到另一个城市的最短路径,以及在路径中所经历的城市结点,能够根据实际变化(如编辑城市,增删城市或变更路径和选择最佳经济路线)做出一系列的调整,以满足用户在现实中的实际需求。

(2)非功能性需求:

       该设计的交通咨询系统可在一般电脑上运行,运行环境在VS2013编译器下搭建的环境,识别用户输入的编码为汉语中文,未来可能扩充的方案为:把整个交通咨询系统里的重要信息都存至数据库文件,能按具体的格式操作数据库以操作交通设计系统。

交通图即为《数据结构(C语言版)》(严蔚敏, 吴伟民编著)7.6节图7.33的交通图。

//头文件
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>#define MVNum 35
#define Maxint 9999typedef int Adjmatrix;int D1[MVNum], P1[MVNum];
int D[MVNum][MVNum];P[MVNum][MVNum];//用于存任意两个城市间的最短路径typedef enum { FALSE, TRUE }boolean;struct city{int id;char name[13];
};
typedef struct{struct city vexs[MVNum];Adjmatrix arcs[MVNum][MVNum];int economic_arcs[MVNum][MVNum];int length;struct list*x;
}MGraph;
//————————————————//单链表实现对删除城市的id和路径存储
struct list{struct node*head;int length;
};
struct delnode{int id;int distance;
};
struct node{char name[7];struct delnode linked[7];//默认一个城市最多与七个城市相连struct node*next;
};//-------修改城市信息---------void add(MGraph* G);//添加城市信息
void modify(MGraph*  G);//修改城市信息
void city_allshow(MGraph* G);//展示所有城市信息int getid(char name[], MGraph *G);//根据名字获取城市id
char* getname(int id, MGraph *G);
void del_cityinfo(MGraph  *G);
void del_lane(MGraph*  G);
void add_citylane(MGraph*  G);
void modify_lane(MGraph*  G);//-------修改城市信息------MGraph* CreateMGraph();// 默认25个城市
void Dijkstra(MGraph *G, int v1, int n,int judge);
void Floyd(MGraph *G, int n, int judge, int head, int real);
void menu();
void mangement_menu();
struct node* is_belong(char name[],MGraph *G);
void present_delcityifo(MGraph *G);
int lonecity(MGraph*G, int id);
int is_real(char name[], MGraph *G);//函数的实现
#define _CRT_SECURE_NO_WARNINGS //写具体函数的实现
#include"Traffic_consult.h"void add(MGraph *G)//添加城市结点*
{int i = 0;printf("----正在进行增加城市信息操作——\n");printf("输入添加城市的姓名\n");char name_add[7];scanf("%s", name_add);//在回收站中无原信息,添加至数组后if (!is_belong(name_add, G)){printf("未在回收站中找到相同信息,新添加\n");G->length++;strcpy(G->vexs[G->length].name, name_add);G->vexs[G->length].id = G->length;printf("id为%d的城市名字为%s\n", G->vexs[G->length].id, G->vexs[G->length].name);for (int i = 1; i <= G->length; i++){G->arcs[G->length][i] = Maxint;//初始化为增加路径,全设为MaxintG->arcs[i][G->length] = Maxint;G->economic_arcs[i][G->length] = Maxint;G->economic_arcs[G->length][i] = Maxint;}printf("增加成功\n");}else//默认油价是1{int z = getid((is_belong(name_add, G)->name), G);if (G->vexs[z].id == 0){printf("在回收站中有原信息,将在回收站中重新恢复 \n");int j = 1;// 测试/*while (m){//    printf("%d %s", m->linked[j].id, m->name);//    m = m->next;///*}*/*/G->vexs[z].id = z;struct node*a = is_belong(name_add, G);int i = 1;while (a->linked[i].id != -1){G->arcs[z][a->linked[i].id] = a->linked[i].distance;G->arcs[a->linked[i].id][z] = a->linked[i].distance;G->economic_arcs[a->linked[i].id][z] = a->linked[i].distance;G->economic_arcs[z][a->linked[i].id] = a->linked[i].distance;i++;}printf("恢复成功\n");}elseprintf("该城市已经存在,不需要从回收站中恢复\n");}}
void modify(MGraph*  G){//根据id修改城市名int n = 0;printf("你想要修改城市的id为:>\n");scanf(" %d", &n);if (is_real(getname(n, G), G)){int i = 1;int flag = 0;while (i <= G->length){if (G->vexs[i].id == n){flag = 1;break;}i++;}if (1 == flag)//找到了{printf("id为%d的城市名为%s:输入你修改后的城市名:>\n", n, G->vexs[i].name);char new_name[13];scanf(" %s", new_name);strcpy(G->vexs[i].name, new_name);printf("修改后的城市名为%s", G->vexs[i].name);}elseprintf("没有这样的id\n");}else{printf("输入的城市不合法\n");}}void city_allshow(MGraph* G)//展示所有城市信息
{int i = 1;printf("所以城市的如下\n");while (i <= G->length){if (G->vexs[i].id){printf("id:%d name:%s", G->vexs[i].id, G->vexs[i].name);printf("\n");i++;}elsei++;}}
int getid(char name[], MGraph* G){//此id为数组序号int i = 1;while (strcmp(G->vexs[i].name, name)!= 0 && i <= G->length){i++;}if (i <= G->length&&!strcmp(G->vexs[i].name, name))return i;else return 0;
}//_______________________________________//采用邻接矩阵表示法构造有向图G// 表示图的当前顶点数和边数
MGraph *  CreateMGraph()//初始化{printf("正在初始化……\n");MGraph *G = (MGraph*)malloc(sizeof(MGraph));int i, j;for (i = 1; i <= 25; i++){G->vexs[i].id = i;//输入顶点信息}//创建回收链表G->length = 25;G->x = (struct list*) malloc(sizeof(struct list));G->x->head = NULL;G->x->length = 0;//创建回收链表//初始化25个城市的信息strcpy(G->vexs[1].name,"乌鲁木齐");strcpy(G->vexs[2].name, "呼和浩特");strcpy(G->vexs[3].name, "北京");strcpy(G->vexs[4].name, "天津");strcpy(G->vexs[5].name, "沈阳");strcpy(G->vexs[6].name, "大连");strcpy(G->vexs[7].name, "长春");strcpy(G->vexs[8].name, "哈尔滨");strcpy(G->vexs[9].name, "西宁");strcpy(G->vexs[10].name, "兰州");strcpy(G->vexs[11].name, "西安");strcpy(G->vexs[12].name, "郑州");strcpy(G->vexs[13].name, "徐州");strcpy(G->vexs[14].name, "成都");strcpy(G->vexs[15].name, "武汉");strcpy(G->vexs[16].name, "上海");strcpy(G->vexs[17].name, "昆明");strcpy(G->vexs[18].name, "贵阳");strcpy(G->vexs[19].name, "株洲");strcpy(G->vexs[20].name, "南昌");strcpy(G->vexs[21].name, "福州");strcpy(G->vexs[22].name, "南宁");strcpy(G->vexs[23].name, "聊州");strcpy(G->vexs[24].name, "广州");strcpy(G->vexs[25].name, "深圳");for (i = 1; i <=25; i++){for (j = 1; j <= 25; j++){G->arcs[i][j] = Maxint;   //初始化邻接矩阵}}G->arcs[3][2] = 668;G->arcs[2][3] = 668;G->arcs[3][4] = 137;G->arcs[4][3] = 137;G->arcs[4][5] = 704;G->arcs[5][4] = 704;G->arcs[5][6] = 397;G->arcs[6][5] = 397;G->arcs[5][7] = 305;G->arcs[7][5] = 305;G->arcs[7][8] = 242;G->arcs[8][7] = 242;G->arcs[1][10] = 1892;G->arcs[10][1] = 1892;G->arcs[2][10] = 1145;G->arcs[10][2] = 1145;G->arcs[9][10] = 216;G->arcs[10][9] = 216;G->arcs[10][11] = 676;G->arcs[11][10] = 676;G->arcs[3][12] = 695;G->arcs[12][3] = 695;G->arcs[11][12] = 511;G->arcs[12][11] = 511;G->arcs[4][13] = 674;G->arcs[13][4] = 674;G->arcs[12][13] = 349;G->arcs[13][12] = 349;G->arcs[11][14] = 842;G->arcs[14][11] = 842;G->arcs[12][15] = 534;G->arcs[15][12] = 534;G->arcs[13][16] = 651;G->arcs[16][13] = 651;G->arcs[14][17] = 1100;G->arcs[17][14] = 1100;G->arcs[17][18] = 639;G->arcs[18][17] = 639;G->arcs[14][18] = 967;G->arcs[18][14] = 967;G->arcs[15][19] = 409;G->arcs[19][15] = 409;G->arcs[18][19] = 902;G->arcs[19][18] = 902;G->arcs[16][20] = 825;G->arcs[20][16] = 825;G->arcs[19][20] = 367;G->arcs[20][19] = 367;G->arcs[20][21] = 622; G->arcs[21][20] = 622;G->arcs[18][23] = 607;G->arcs[23][18] = 607;G->arcs[19][23] = 672;G->arcs[23][19] = 672;G->arcs[22][23] = 255;G->arcs[23][22] = 255;G->arcs[19][24] = 675;G->arcs[24][19] = 675;G->arcs[24][25] = 140;G->arcs[25][24] = 140;for (i = 1; i <=G->length; i++){for (int j= 1; j <= G->length; j++){if (G->arcs[i][j] != Maxint){if (i % 2 == 0){G->economic_arcs[i][j] = 5 * G->arcs[i][j];//代表路程的油价}else if (i % 2 == 1){G->economic_arcs[i][j] = G->arcs[i][j];}}elseG->economic_arcs[i][j] = Maxint;}}printf("各路径的总油耗价初始化完毕\n");printf("有向图的存储结构建立完毕! \n");return G;}void Dijkstra(MGraph *G, int v1, int n,int judge){if (lonecity(G, v1) ){int D2[MVNum];//逐步更新其最短路径int P2[MVNum];int v, i, w, min;boolean S[MVNum];for (v = 1; v <= n; v++){S[v] = FALSE;D2[v] = G->arcs[v1][v];if (D2[v] < Maxint){P2[v] = v1;//存放前驱}elseP2[v] = 0;}D2[v1] = 0;S[v1] = TRUE;//开始循环,每次求得v1到某个v顶点的最短路经,并将v加到S集总for (i = 2; i < n; i++){min = Maxint;for (w = 1; w <= n; w++){if (!S[w] && D2[w] < min){v = w;min = D2[w];}}S[v] = TRUE;for (w = 1; w <= n; w++){if (!S[w] && (D2[v] + G->arcs[v][w] < D2[w])){//修改D2[w]和P2[w],w属于V-S D2[w] = D2[v] + G->arcs[v][w];P2[w] = v;}//end_if}}//end_forprintf("路经长度--路经\n");for (i = 1; i <= n; i++){if (G->vexs[i].id){printf("%5d", D2[i]);printf("    %2s", getname(i, G));v = P2[i];while (v != 0){printf("<-%s", getname(v, G));v = P2[v];}}printf("\n");}}elseprintf("该城市为孤立城市,无任何路径\n");}/*弗洛伊德算法*/
void Floyd(MGraph* G, int n,int judge,int head,int real)
{if (judge){int i, j, k;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){D[i][j] = G->arcs[i][j];P[i][j] = j;}}//做k次迭代,每次迭代均试图将顶点k扩充到当前求得的从i到j的最短路经Pij上 for (k = 1; k <= n; k++)//五行关键代码{for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){if (D[i][k] + D[k][j] < D[i][j]){D[i][j] = D[i][k] + D[k][j];  //修改长度 P[i][j] = P[i][k];}}}}printf("\n%s -> %s 的最小路径为:%d\n", getname(head,G), getname(real,G), D[head][real]);k = P[head][real];printf("path: %s", getname(head,G));//打印起点while (k != real){printf("-> %s", getname(k,G));//打印中间点k = P[k][real];}printf("-> %s\n", getname(real,G));//打印终点}else {int i, j, k;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){D[i][j] = G->economic_arcs[i][j];P[i][j] = j;}}//做k次迭代,每次迭代均试图将顶点k扩充到当前求得的从i到j的最短路经Pij上 for (k = 1; k <= n; k++)//五行关键代码{for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){if (D[i][k] + D[k][j] < D[i][j]){D[i][j] = D[i][k] + D[k][j];   //修改长度 P[i][j] = P[i][k];}}}}printf("\n%s -> %s 的最小路径为:%d\n", getname(head, G),getname(real,G), D[head][real]);k = P[head][real];printf("path: %s", getname(head, G));//打印起点while (k != real){printf("-> %s", getname(k,G));//打印中间点k = P[k][real];}printf("-> %s\n", getname(real,G));//打印终点}}void menu(){printf("丨——————————————--—————丨\n");printf("丨——1:解决单源路径问题—————————丨\n");printf("丨————————————————————丨\n");printf("丨——2:解决任意两个城市的最短路径问题—-丨\n");printf("丨————————————————————丨\n");printf("丨——3:查看城市及其城市的代号------------丨\n");printf("丨——------------------------------------丨\n");printf("丨——5:选择最经济的路线------------------丨\n");printf("丨————————————————--———丨\n");printf("丨——7:进入系统管理员模式------—--———丨\n");printf("丨————————————————--———丨\n");printf("丨——0:退出交通咨询系统---------————丨\n");}void del_cityinfo(MGraph * G)//删除城市结点(删除不修改城市长度)
{char name[13];int i = 0;printf("输入要被删除的城市名\n");scanf(" %s", name);int del = getid(name, G);struct node*p = (struct node*)malloc(sizeof(struct node));strcpy(p->name, name);for (i = 1; i < sizeof(p->linked)/sizeof(p->linked[0]); i++)//初始化被删除的结点{p->linked[i].id = -1;p->linked[i].distance = -1;}int j = 1;for (i = 1; i <= G->length; i++){//将原路径全设为0,默认从1开始if (G->arcs[i][G->vexs[del].id] != Maxint){p->linked[j].distance = G->arcs[i][G->vexs[del].id];G->arcs[i][G->vexs[del].id] = Maxint;G->arcs[G->vexs[del].id][i] = Maxint;G->economic_arcs[i][G->vexs[del].id] = Maxint;G->economic_arcs[G->vexs[del].id][i] = Maxint;//将被删除城市的id和路径存链表中p->linked[j].id = i;j++;}}p->next = G->x->head;//头插法G->x->head = p;//testG->vexs[del].id = 0;//删除节点id为0printf("删除成功\n");}
void del_lane(MGraph * G){//删除路径printf("输入被删除路径的两个城市名\n");char name5[7];scanf(" %s", &name5);//getchar();char name6[7];scanf(" %s", &name6);if (is_real(name5, G) && is_real(name6, G)){int id1 = getid(name5, G);int id2 = getid(name6, G);int real1 = G->vexs[id1].id;int real2 = G->vexs[id2].id;printf("id:%d real:%d", id1, real1);if (G->arcs[id1][id2] != Maxint){printf("%s与%s间有路径,可以进行删除路径操作\n", G->vexs[id1].name, G->vexs[id2].name);G->arcs[real1][real2] = Maxint;G->arcs[real2][real1] = Maxint;G->economic_arcs[real2][real1] = Maxint;G->economic_arcs[real1][real2] = Maxint;printf("删除成功\n");}elseprintf("%s与%s间没有路径,删除失败\n", G->vexs[id1].name, G->vexs[id2].name);}else{printf("输入的城市不合法\n");}
}
void add_citylane(MGraph  *G){//增加路径int t = 0;printf("输入增加路径的两个城市名\n");char name1[7];char name2[7];scanf(" %s", &name1);//getchar();scanf(" %s", &name2);if (is_real(name1, G) && is_real(name2, G)){int id1 = getid(name1, G);int id2 = getid(name2, G);if (G->arcs[id1][id2] == Maxint){printf("%s与%s之间没有路径\n", G->vexs[id1].name, G->vexs[id2].name);int real1 = G->vexs[id1].id;int real2 = G->vexs[id2].id;printf("增加的路径的长度为:\n");scanf(" %d", &t);G->arcs[real1][real2] = t;G->arcs[real2][real1] = t;G->economic_arcs[real1][real2] = t;//默认价格为1单位/公里G->economic_arcs[real2][real1] = t;printf("添加成功\n");}elseprintf("%s与%s间已有路径,增加失败\n", G->vexs[id1].name, G->vexs[id2].name);}elseprintf("输入城市不在库中\n");}
void modify_lane(MGraph  *G){//修改路径int t = 0;printf("输入修改路径的两个城市名\n");char name3[7];scanf(" %s", &name3);//getchar();char name4[7];scanf(" %s", &name4);int id1 = getid(name3, G);int id2 = getid(name4, G);int real1 = G->vexs[id1].id;int real2 = G->vexs[id2].id;if (G->arcs[id1][id2] != Maxint){printf("%s与%s间已有路径,将原有路径修改为:\n",G->vexs[id1].name,G->vexs[id2].name);scanf(" %d", &t);G->arcs[real1][real2] = t;G->arcs[real2][real1] = t;G->economic_arcs[real1][real2] = t;G->economic_arcs[real2][real1] = t;printf("修改成功\n");}else printf("%s与%s间没有路径:\n", G->vexs[id1].name, G->vexs[id2].name);
}void mangement_menu(){//管理系统/菜单printf("丨———1 增加城市——--—---------------————丨\n");printf("丨———2 修改城市有关信息-————--—-———-—丨\n");printf("丨———3 删除城市-----------——--———----——丨\n");printf("丨—----4 增加路径--------——--————-------—丨\n");printf("丨——--5 修改城市路径--------————-----------丨\n");printf("丨------6 删除路径---------———--------------—丨\n");printf("丨——--7 查看被删除城市及其路径-----------------丨\n");printf("丨——--0 exit------------——--—————-------丨\n");
}
char* getname(int id, MGraph *G){int i = 1;while (G->vexs[i].id != id&&i <= G->length){//被删除的id为0则无法获取i++;}if (G->vexs[i].id == id&&i<=G->length)//return G->vexs[i].name;else return  NULL;
}
struct node*is_belong(char name[], MGraph *G){struct node*s = G->x->head;if (!s){return NULL;}else{while (s&&strcmp(s->name, name)!= 0){s = s->next;}if (s != NULL){return s;}else return NULL;}}
void present_delcityifo(MGraph *G){printf("被删除的城市的信息\n");struct node*p = G->x->head;if (!p){printf("没有被删除的城市\n");}else{while (p){int i = 1;while (p->linked[i].id != -1){printf("被删除的城市名为%s,与它相连的第%d个城市的为%s\n", p->name, i, getname(p->linked[i].id,G));i++;}p = p->next;}}
}
int lonecity(MGraph*G, int id){int i = 1;int flag = 1;while (i <=G->length){if (G->arcs[G->vexs[id].id][i] == Maxint){i++;}else if (G->arcs[G->vexs[id].id][i]!= Maxint){flag = 0;break;}}if (flag == 0)return 1;elsereturn 0;}
int is_real(char name[], MGraph *G){int i = 1;int flag = 0;while (i<= G->length){//if (strcmp(name, G->vexs[i].name) == 0 && G->vexs[i].id != 0){flag = 1;break;}i++;}if (flag == 1)return 1;elsereturn 0;
}//main函数文件#define _CRT_SECURE_NO_WARNINGS
#include"Traffic_consult.h"int main()
{int flag7 = 0;int temp;int t = 0;const char secret[4] = "ccsu";MGraph*G=CreateMGraph();t = G->length;do{menu();printf("please choose:\n");scanf(" %d", &temp);switch (temp){case(1) :{flag7 = 1;printf("求单源路经,输入起点的城市名 : \n");char name[7];int v = 0;scanf("%s", name);if (is_real(name, G)){v = getid(name, G);printf("%s的id为%d\n", name, v);Dijkstra(G, G->vexs[v].id, G->length,flag7);printf("感谢您的使用\n");}else{printf("输入城市不合法\n");}break;}case(2) : {flag7 = 1;int temp1 = 0;int temp2 = 0;printf("解决任意两个城市的最短路径问题\n");printf("输入两个城市的名字:>\n");char name1[7];scanf(" %s", name1);temp1 = G->vexs[getid(name1, G)].id;char name2[7];scanf(" %s", name2);temp2 = G->vexs[getid(name2, G)].id;if (is_real(name1, G) && is_real(name2, G)){Floyd(G, G->length, flag7, temp1, temp2);if (D[temp1][temp2] == Maxint){printf("%s与%s间无路径\n", G->vexs[getid(name1, G)].name, G->vexs[getid(name2, G)].name);}else if (D[temp1][temp2] != Maxint){printf("%s与%s间的最短路径为%d\n", G->vexs[getid(name1, G)].name, G->vexs[getid(name2, G)].name,D[temp1][temp2]);}printf("感谢您的使用\n");}else {printf("输入城市不合法\n");}break;}case(3) : {printf("查看城市及其城市的代号:\n");city_allshow(G);break;}case(5) : {printf("选择最经济的路线\n");flag7 = 0;//标志int temp1 = 0;int temp2 = 0;printf("解决任意两个城市的最短路径问题\n");printf("输入两个城市的名字:>\n");char name1[7];scanf(" %s", name1);temp1 = G->vexs[getid(name1, G)].id;char name2[7];scanf(" %s", name2);temp2 = G->vexs[getid(name2, G)].id;if (is_real(name1, G) && is_real(name2, G)){Floyd(G, G->length, flag7,temp1,temp2);//求出任意两个城市间的最短路径if (D[temp1][temp2] == Maxint){printf("%s与%s间无路径,,故没有最佳经济路线\n", G->vexs[getid(name1, G)].name, G->vexs[getid(name2, G)].name);}else if (D[temp1][temp2] != Maxint){printf("%s与%s间的佳经济方案的总油耗价钱为%d\n", G->vexs[getid(name1, G)].name, G->vexs[getid(name2, G)].name, D[temp1][temp2]);}printf("感谢您的使用\n");}break;}case(7) : {printf("进入管理员模式\n");char secret_code[7];int zx = 0;printf("验证身份,请输入管理员密码:\n");scanf("%s", secret_code);if (!strncmp(secret, secret_code, sizeof(secret) / sizeof(secret[0]))){printf("验证成功\n");do{mangement_menu();printf("please choose:\n");scanf(" %d", &zx);switch (zx){case(1) : {printf("添加城市信息\n");add(G);break;}case(2) : {printf("修改城市信息\n");modify(G);break;}case(3) : {del_cityinfo(G);printf("删除城市信息\n");break;}case(4) : {printf("增加路径\n");add_citylane(G);break;}case(5) : {printf("修改路径\n");modify_lane(G);break;}case(6) : {printf("删除路径\n");del_lane(G);break;}case(7) : {present_delcityifo(G);break;}case(0) : {printf("exit the model of manger");break;}}} while (zx);break;}else{printf("验证失败");break;}case(0) : {printf("退出系统");break;}}}} while (temp);return 0;}

管理员密码应该在程序中能得到吧,截图就免了,挺麻烦的

但还是放几张图:

我的第一篇课程设计(交通咨询系统)相关推荐

  1. 太原理工大学2021数据结构课程设计(交通咨询系统(最短路径问题))

    太原理工大学数据结构课程设计(交通咨询系统(最短路径问题)) 声明:这里只是给出核心代码 核心代码指程序的计算部分,不是完整程序 背景题目 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环 ...

  2. 微型计算机接口与技术的交通灯,微机原理与接口技术课程设计——交通灯设计.doc...

    微机原理与接口技术课程设计--交通灯设计.doc 1 任务及要求 1.1设计任务 交通信号灯的控制: (1)通过8255A并口来控制LED发光二极管的亮灭. (2)A口控制红灯,B口控制黄灯,C口控制 ...

  3. 微型计算机接口与技术的交通灯,微机原理及接口技术课程设计交通灯

    微机原理及接口技术课程设计交通灯 序言 十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则.十字道 口的交通红绿灯控制是保证交通安全和道路畅通的关键.当前,国内大多数城市正在 采用" ...

  4. 用c语言设计交通咨询系统,交通咨询系统设计课程设计.doc

    交通咨询系统设计课程设计 课 程 设 计 报 告 课程名称 数据结构 课题名称 交通咨询系统 专 业 班 级 学 号 姓 名 指导教师 2013 年 月 日 设计内容与设计要求 1设计内容 [问题描述 ...

  5. 计算机控制系统课程设计交通灯,太原理工大学数字逻辑课设(交通灯)

    <太原理工大学数字逻辑课设(交通灯)>由会员分享,可在线阅读,更多相关<太原理工大学数字逻辑课设(交通灯)(25页珍藏版)>请在人人文库网上搜索. 1.太原理工大学计算机科学与 ...

  6. 【回忆一下】我的第一个课程设计(还记得你的第一个课设大作业吗?)

    前言 整理文件夹的时候,发现了以前写的课程设计 还是有一点点的感触 严格来说 应该是第一个课设 哈哈 1.设计目的和内容 1.1.设计目的 学习Visual C++的MFC开发程序的步骤. 综合运用所 ...

  7. 计算机硬件交通灯课程设计,交通灯计算机硬件课程设计(附件).doc

    交通灯管理系统的设计 专 业:自动化 班 级:2010级 04班 组长:梅 登 组员:陈 冶 组员:谢海龙 组员:徐拓燃 指导老师: 黄勤 2013年9月 目 录 1.基本功能设计1 1.1 基本功能 ...

  8. PowerBI开发 第一篇:设计PowerBI报表

    PowerBI是微软新一代的交互式报表工具,把相关的静态数据转换为酷炫的可视化的,能够根据filter条件,对数据执行动态筛选,从不同的角度和粒度上分析数据.PowerBI主要由两部分组成:Power ...

  9. 数据结构课程设计--交通咨询管理系统 C++(已实现GUI界面)

    使用到的数据结构 数组.栈.队列.图 使用到的算法 Dijkstra算法.Floyd算法.快速排序 实现的功能 验证武汉中心地位,即显示从武汉到我国34个省份的省会的中转次数(港澳台除外) 使用Dij ...

最新文章

  1. 求无序数组的第二小的元素
  2. PTA浙大版python程序设计题目集--第2章-4 特殊a串数列求和 (20 分)
  3. 【Java每日一题】20170113
  4. maven的基本命令
  5. cad钣金展开插件_简单的钣金CAD展开方法
  6. 微信支付phpv3给我们留下的坑
  7. mpvue(4)主页面静态页面的完成
  8. 1041: 数列求和2 C语言
  9. 如何方便输入德语、法语、俄语特殊字符
  10. 教你如何赚取你的第一桶金 - 2048(含源码)
  11. 计算机电脑Windows系统中了faust勒索病毒,phobos勒索家族介绍,Windows用户注意
  12. 炼钢行业皮带无人化管理的问题及解决
  13. 【笔记本】解决键盘粘键 -/- 按键自动输入
  14. linux缓存清除命令行,unix - Cookies和缓存,如何在Linux和Mac上从命令行清除它们? - 堆栈内存溢出...
  15. 关于小程序的https
  16. 计算机程序c语言教材,全国计算机等级考试二级C语言程序设计教材(2018年版)...
  17. WordPress主题添加鼠标点击特效
  18. “雪亮工程”实现大数据“千里眼”
  19. 双c9计算机硕士在阿里待遇,阿里程序员感慨:硕士毕业五年,工资才一万六,感觉自己很失败...
  20. 聊聊软件测试必会硬技能有哪些?

热门文章

  1. python竖排版输出_Python 让美文竖排显示-高大上
  2. Spring实战——清除缓存
  3. linux awk 排序,使用awk对字段进行排序和排列
  4. 小鲲Python嘎嘎炫~day1.3
  5. 【决策单调性分治优化/四边形不等式优化】监狱警卫
  6. STM32F407 正点原子 资料网址记录
  7. Elasticsearch教程(28) text和keyword区别 term和match区别 ik中文分词器使用
  8. 配准工具SimpleElastix安装详细步骤(Python版)
  9. vipJr国际文化博览会让学员与国际接轨
  10. Python线性规划实践