c城市区号查询-课程设计报告.doc
- 文档编号:4843185
- 上传时间:2023-05-07
- 格式:DOC
- 页数:23
- 大小:267KB
c城市区号查询-课程设计报告.doc
《c城市区号查询-课程设计报告.doc》由会员分享,可在线阅读,更多相关《c城市区号查询-课程设计报告.doc(23页珍藏版)》请在冰点文库上搜索。
计算机学院《高级语言程序设计》课程设计报告
学号
2016-2017学年第二学期
1608220203
《高级语言程序设计》
课程设计报告
题目:
城市区号查询
专业:
网络工程
班级
16(3)班
姓名:
代应豪
指导教师:
代美丽
成绩:
计算机学院
2017年4月25日
目录
1设计内容及要求 1
1.1设计内容 1
1.2设计任务及具体要求 1
2概要设计 2
2.1系统的功能简介 2
2.2总体程序框图 2
2.3各个模块之间的主要关系 3
3设计过程或程序代码 3
3.1各个模块的程序流程图 3
1、菜单函数 4
2、输入区号 4
3、显示区号查询 5
4、find函数 6
5、删除城市名称 7
6、查找城市区号 8
4设计结果与分析 11
5总结 12
参考文献 13
源程序 14
1设计内容及要求
1.1设计内容
本课程设计主要运用C语言中的结构体、数组、链表、等数据结构,设计一个简单的管理系统应用程序。
本程序设计出了区号查询系统的基本功能,并设计了简单的界面,主要考察对自定义函数的熟悉程度,使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。
通过完成本课题进一步熟悉C语言基本知识,并掌握数据结构的一些基本算法思想,进一步熟悉指针的用法,数组的建立运用和函数调用,加深对数据结构的理解,提高算法设计的能力,锻炼编程的能力。
1.2设计任务及具体要求
用C语言编程的区号查询系统,要求实现区号查询系统中,添加新记录、删除记录、显示记录信息、按城市查找信息和退出系统等功能。
①录入有关城市的名称和区号。
②显示所有城市的信息。
③通过输入城市名称查找对应城市的区号。
④通过输入城市名称查找到要删除的城市信息,然后可以进行删除,会显当前该城市信息。
⑤通过输入城市名称查找到要修改的城市信息,然后依次进行信息修改。
⑥添加城市信息。
2概要设计
2.1系统的功能简介
本系统设计的函数是由一个主函数几个子函数组成的。
首先构思大局编出一个主函数,然后根据要实现的功能逐步细分设计,分别解决输入、显示、查找、删除、修改,退出功能的子函数编程中遇到的问题。
首先通过结构体的定义,确定城市区号的项目和大小。
首先通过输入函数添加信息,然后再逐步编写和验证其它功能。
显示函数的设计利用C语言的循环功能依次输出信息。
查找是用一个字符串比较得出两个相同的字符串的方法找出用户要查找的人。
删除函数的设计是通过指定位置以后的数组下标减一实现删除目的的,for循环和while循环在这此设计中也起了很大的作用。
2.2总体程序框图
主菜单
输入城市名称和区号
退出查询系统
添加城市名称和区号
修改城市名称
删除城市名称
查找城市区号
显示城市名称和区号
图
(1)总体框图
2.3各个模块之间的主要关系
该程序的功能主要是实现城市区号查询,各个模块之间的关系是相互联系的。
首先,必须输入城市名称和区号才能进一步显示城市的名称和区号,然后才能查找城市和删除城市,是一环套一环的。
并且修改城市名称和查找城市区号两个模块查找城市需要在修改城市名称后再对新的名称进行查找。
3设计过程或程序代码
3.1各个模块的程序流程图
1)①主函数程序(N-S)流程图及运行界面
主函数程序(N-S)流程图(见图
(2))
输入错误,重新操作
结束
menu()=6?
menu()=1?
menu()=0?
?
menu()=2?
m>=0?
menu()=5?
menu()=4?
menu()=3?
开始
intlength,m=0
调用输入函数
调用显示函数
调用输出函数
调用退出函数
调用添加函数
调用修改函数
调用查找函数
图
(2)主函数流程图
真
假
真
假
真
假
真
假
真
假
真
假
真
真
假
假
3
1、菜单函数
菜单函数首先标出欢迎使用区号查询管理系,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图(3)所示:
intm
m<0||m>6
返回m
结束
开始
输入选项0—6—666
真
假
图(3)菜单函数流程图
2、输入区号
将结构体数组分成几个数组分别对每个数组赋值,用for循环对不同地址的数组分别赋值。
其流程图如图(4)所示:
i=0
i i++ 返回n 结束 开始 输入信息 输入数目n 真 假 图(4)输入函数流程图 3、显示区号查询 显示区号通过循环函数将全部的区号信息以此显示出来,其流程图如图(5)所示: inti i=0 i<=n-1? i++ 结束 开始 显示i位置信息 真 假 图(5)显示函数流程图 4、find函数 find函数通过输入姓名与原区号中存储的姓名,两字符串的比较,找到与输入姓名相同的城市的位置,其流程图如图(6)所示: i=0 i i++ returni 结束 开始 真 真 找到要找的城市 假 假 图(6)find函数图 5、删除城市名称 删除城市名称通过数组中该位置之后的数据存放位置向前移一位来实现删除功能,其流程图如图(7)所示: 图(7)删除函数流程图 Inti,j,ch i>n-1 ch==1 returnn 调用删除函数 是否重新输入 j=i+1 j j++ n-- j位置数据存放位置前移 输出信息 结束 开始 真 真 假 假 6、查找城市区号 查找系统通过find函数找到所查城市的位置,再将该位置的城市的信息显示如图(8): 调用find函数 i>n-1? 没有找到 是否继续 调用查找函数 真 开始 输出信息 结束 真 假 假 图(8) 简单说明: 该功能主要显示的是给用户一个进入界面,它主要的是显示该程序主要能够执行的有哪些功能。 下面是显示给用户的界面。 ②主函数程序运行界面: 图(9) 在主菜单中输入3后,输入要找的城市。 在系统没有要找信息时,系统会给出提示,确认用户是否继续查找,如图下图所示: 图(10) 在确认修改并输入修改后信息以后,系统便能按用户意愿修改的城市的信息如: 图(11) 在主菜单中输入4后输入要删除的城市,再按4键确定,系统便自动删除要删的市的信息,如图(12)所示: 图(12) 在主菜单中按6键,便显示出系统,如图所示: 图(13) 在主菜单中按0键,便可退出系统,如图所示: 图(14) 4设计结果与分析 当把程序写好并进行调试时,并不是一帆风顺的,总会遇到很多在调试时遇到的错误。 1.首先在定义函数时,不能输入汉字。 否则会程序会显示错误。 2.在程序中,如果定义城市名称和区号等为float型,而后面其相应的返回值为双精度浮点型,会出现相应的警告 3.前后定义变量要统一。 4.如果要调用添加函数,修改函数,修改函数,查找函数,统计函数等要在主函数前面进行申明。 否则会显示警告。 5.对背景颜色设置的时候,当你输入的颜色在内存中不存在时,运行程序过后,系统会告诉你相应的颜色符号常数及数值。 6.如果程序在运行的过程中,对于一个循环语句,如果你返回的值始终是真的,那么程序将进如死循环。 7.未注意int,float型数据的数值范围,int型数据的数值范围(-32768~32768)。 对定义工资变量时,如果将职工工资定义为float型,将会出现警告。 8.对应该有花括弧的复合语句,忘记加花括弧。 9.所调用的函数在调用语句之后才定义,而又在调用前未加说明。 5总结 从刚开始的不知道如何下手到最后看到自己的程序按自己的想法运行,心里时不时的有一种喜悦。 通过这次课程设计,我认识到书上和老师教的内容是有限的,要想掌握更多的知识我们必须多动脑,多思考,不断地靠自己去学习,同时我们还应向他人请教,从而了解更多自己不知道的知识。 回头看来,编写这个程序并不像原来想像的那么难,我们要相信自己,无论做什么事,只要我们仔细的思考了,认真的去做了,我们就一定能做好。 通过这次的编程我发现了自己的一些不足,在编写时经常犯一些低级错误,由于自己的马虎而浪费了不少时间。 在不知如何进行的时候有一种不自信,总想别人正在做什么,这些不足既然被发现就得在以后的做事中注意,争取改掉。 经过一周的努力我掌握了一些基本的C语言进行程序设计的技巧,更深的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,同时学会了一些调试一个较长程序的基本方法,提高了书写程序设计开发文档的能力。 这一周的实践让我受益匪浅,在此我要感谢孜孜不倦指导我们的老师,感谢在我困惑时给我帮助的同学,感谢学校给我们一个这样动手动脑的机会,使我们在理论与实践相结合方面又得到了一次很好的锻炼,其中我真的受益良多。 参考文献 1.姜灵芝,余健. C语言课程设计案例精编.北京: 清华大学出版社,2008 2.王新,孙雷. C语言课程设计.北京: 清华大学出版社,2009 3.游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京: 清华大学出版社,2011 4.王连相.C/C++程序设计上机指导与测试. 北京: 中国铁道出版社,2006 5.C语言函数手册,机械工业出版社,1999 源程序 #include #include #include typedefstructPersonalInfo {charname[50]; charaddress[30]; chartelno[30]; charpostcode[30]; structPersonalInfo*next;} INFO;INFO*head; voidInitiate(); voidMenu(); voidCreate();//的功能是: 创建新的区号查询。 voidAdd();//在系统的末尾,写入新的信息,并返回选单 voidFind();//查找记录 voidAlter();//修改记录如果未找到要修改的人,则提示系统中没有此人的信息,并返回选单。 voidDelete();//删除某人的信息,如果未找到要删的人,提示系统中没有此人的信息,并返回选单。 voidList();//的功能是: 显示系统中的所有记录。 //初始化 voidInitiate() {if((head=(INFO*)malloc(sizeof(INFO)))==NULL) exit (1); head->next=NULL;}//显示菜单 voidMenu(){printf("**************欢迎使用区号查询系统**************"); printf("\n"); printf("\n"); printf("1.创建区号系统。 \n"); printf("2.插入信息。 \n"); printf("3.查询记录\n"); printf("4.修改记录\n"); printf("5.删除记录! \n"); printf("6.显示所有记录\n"); printf("0.退出区号查询\n"); printf("请输入0~6\n");} //创建系统 voidCreate() {INFO*p1[100],*p2; intm,i; printf("请输入创建个数: "); scanf("%d",&m); for(i=1;i<=m;i++) {p1[i]=(INFO*)malloc(sizeof(INFO)); printf("请输入第%d条信息! \n",i); printf("城市: \n"); scanf("%s",&p1[i]->name); printf("区号: \n"); scanf("%s",&p1[i]->postcode); p1[i]->next=NULL; if(head->next==NULL) head->next=p1[i]; else { for(p2=head;p2->next! =NULL;p2=p2->next);//找到结点尾 p2->next=p1[i]; } } printf("信息已添加! \n"); return;} voidAdd() {INFO*p,*q; if((q=(INFO*)malloc(sizeof(INFO)))==NULL) exit (1); printf("请输入要添加的信息! \n"); printf("城市: \n");//添加信息 scanf("%s",&q->name); printf("区号: \n"); scanf("%s",q->postcode); for(p=head;p->next! =NULL;p=p->next); p->next=q; q->next=NULL; printf("此信息已添加! "); return;}//查找系统信息 voidFind() {INFO*p; charname[50]; if(head->next==NULL) {printf("此区号域为空! \n"); return;} printf("请输入要查找的城市: \n"); scanf("%s",&name); for(p=head->next;p! =NULL;p=p->next) {if(strcmp(p->name,name)==0) {printf("城市\t区号\n"); printf("%s\t%s\t\n",p->name,p->postcode); } elseif(p->next==NULL) return; } } //修改系统信息 voidAlter() {charname[50];//先查找后删除 INFO*p,*p1; if(head->next==NULL) {printf("此系统为空! \n"); return; } printf("请输入要修改的城市: \n"); scanf("%s",name); for(p=head->next;p! =NULL;p=p->next) { if(strcmp(p->name,name)==0) break; elseif(p->next==NULL) { return; } } p1=(INFO*)malloc(sizeof(INFO)); printf("城市: \n");//添加信息 scanf("%s",p1->name); strcpy(p->name,p1->name); printf("区号: \n"); scanf("%s",p1->postcode); strcpy(p->postcode,p1->postcode); printf("此信息已修改! \n");//显示修改的信息 printf("城市\t区号\t\n"); printf("%s\t%s\t\n",p->name,p->postcode); free(p1);}//删除系统信息 voidDelete() {charname[50];//先查找后删除 INFO*p=head->next, *p1=head->next,*p2; if(head->next==NULL) {printf("此系统为空! \n"); return;} printf("请输入要删除的城市: \n"); scanf("%s",name); while((strcmp(p->name,name)! =0)&&p->next! =NULL) {p1=p;p=p->next;} if(strcmp(name,p->name)==0)//输出删除信息 {if(p==head->next&&p->next! =NULL) head->next=p->next; elseif(p==head->next&&p->next==NULL) {head->next=p->next; printf("信息已删除,先此系统为空! ! \n"); return; } else p1->next=p->next; }else {printf("此信息不存在! ! ! \n");return;} printf("此信息已删除! "); printf("城市\t区号\t\n"); for(p2=head->next;p2! =NULL;p2=p2->next) printf("%s\t%s\t\n",p2->name,p2->postcode);} //显示所有记录 voidList() {INFO*p; if(head->next==NULL) {printf("此系统中无记录! \n");return;} printf("城市\t区号\t\n"); for(p=head->next;p! =NULL;p=p->next) printf("%s\t%s\t\n",p->name,p->postcode);} main() {intchoice;charyes_no; system("colora"); Initiate(); do {Menu(); printf("请选择0-6的数字\n"); scanf("%d",&choice); printf("\n"); switch(choice) {case1: Create();break; case2: Add();break; case3: Find();break; case4: Alter();break; case5: Delete();break; case6: List();break; case0: printf("************感谢您的使用************\n"); exit(0);break; default: printf("输入有误! 请重新输入\n");break; } printf("是否继续YorN? \n"); do {scanf("%c",&yes_no);} while(yes_no! ='Y'&&yes_no! ='y'&&yes_no! ='N'&&yes_no! ='n'); } while(yes_no=='Y'||yes_no=='y');} 21
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 城市 区号 查询 课程设计 报告