C语言课程设计-通讯录.doc_第1页
C语言课程设计-通讯录.doc_第2页
C语言课程设计-通讯录.doc_第3页
C语言课程设计-通讯录.doc_第4页
C语言课程设计-通讯录.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*湖南工学院软件0901班课程设计报告*c课程设计报告题 目:通讯录设 计 者 :专业班级:软件0901班学 号:指导教师:所属系部:计算机与信息科学系2010年 06 月 20 日目录一 设计任务书3二 本组课题及各人任务3三 程序功能简介3四 主体内容31. 设计分析32. 程序结构43. 各模块的功能及程序说明3.1各模块的功能43.2程序说明54. 源程序75. 操作方法146. 试验结果157. 设计体会17五 附录1. 整体程序流程图172. 程序自定义函数变量193. 部分自定义流程图194. 参考资料205. 编写中出现的错误及分析21一、设计任务书1)复习、巩固c语言的基础知识,进一步加深对c语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。 4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;二、本组课题及各人任务 课题:设计一个通讯录管理系统 任务分配:康梁主要负责找资料完成源程序和流程图,排版,心得,以及报告书制作 廖凤祥主要负责程序分析,调试,流程图制作。以及在过程中遇到的一些错误分析三、程序功能简介 该程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。四、主体内容1、设计分析1.1问题提出 计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式 1.2本系统涉及的知识点 本系统涉及到所学过的知识点有:编译预处理,函数,循环结构,循环结构,数组,结构体,指针等。1.3功能要求 1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编 2、能根据需要随时在通讯录中添加联系人 3、能根据联系人的名字查找他的详细联系方式 4、能根据需要修改某联系人的联系方式 5、能删除某特定联系人的所有联系方式 2、程序结构流程图 (1)系统的界面如图1.1所示(下图)主菜单,请选择选项编号(0-5)0添加联系人1显示记录2查找3删除联系人信息4添加联系人5退出菜单图1系统的菜单选项2.2、删除模块流程图:如图(2) 打开文件判断不成立,关闭文件成立调用函数,删除信息将信息保存至文件关闭文件,退出 图(2)删除模块流程图3各模块的功能及程序说明3.1各模块的功能:* main模块:根据选单内容实现调用函数 * delete模块:删除通讯录中某人的信息,其程序如下* list模块:显示通讯录中的所有记录 3.2程序说明:(1)main函数/*主函数开始*/main() int i; person pm; int length; /*保存记录长度*/ clrscr();/*清屏*/ for(;)/*无限循环*/ switch(menu()() /*调用主菜单函数,返回值整数作开关语句的条件*/ case 0:length=create(p);break; case 1:list(p,length);break; /*显示全部记录*/ case 2:search(p,length);break; /*查找记录*/ case 3:length=delete(p,length);break; /*删除记录*/ case 4:length=add(p,length); break; /*插入记录*/ case 5:exit(0); /*如返回值为5则程序结束*/ (2) delete函数/*删除函数,参数为记录数组和记录条数*/int delete(person t,int n) char s20; /*要删除记录的姓名*/ int ch=0; int i,j; printf(please deleted namen); /*提示信息*/ scanf(%s,s); /*输入姓名*/ i=find(t,n,s); /*调用find函数*/ if(in-1) /*如果in-1超过了数组的长度*/ printf(no found not deletedn); /*显示没找到要删除的记录*/ else print(ti); /*调用输出函数显示该条记录信息*/ printf(are you sure delete it(1/0)n); /*确认是否要删除*/ scanf(%d,&ch); /*输入一个整数0或1*/ if(ch=1) /*如果确认删除整数为1*/ for(j=i+1;jn;j+) /*删除该记录,实际后续记录前移*/ strcpy(,); /*将后一条记录的姓名拷贝到前一条*/ strcpy(tj-1.units,tj.units); /*将后一条记录的单位拷贝到前一条*/ strcpy(tj-1.tele,tj.tele); /*将后一条记录的电话拷贝到前一条*/ strcpy(tj-1.street,tj.street); /*将后一条记录的街道拷贝到前一条*/ strcpy(tj-1.city,tj.city); /*将后一条记录的城市拷贝到前一条*/ strcpy(vience,vience); /*将后一条记录的省份拷贝到前一条*/ strcpy(tj-1.num,tj.num); /*将后一条记录的邮编拷贝到前一条*/ n-; /*记录数减1*/ return n; /*返回记录数*/(3)list函数/*显示记录,参数为记录数组和记录条数*/void list(person t,int n) int i; clrscr(); printf(nn*address*n); printf(name unit telephone street city provience numn); printf(-n); for(i=0;in;i+) printf(%-20s%-30s%-10s%-20s%-20s%-20s%-20sn,,ti.units, ti.tele,ti.street,ti.city,vience,ti.num); if(i+1)%10=0) /*判断输出是否达到10条记录*/ printf(press any key continue.n); /*提示信息*/ getch();/*压任意键继续*/ printf(*end*n);4、源程序:#include stdio.h#include stdlib.h#include string.h#include ctype.h#define m 50typedef struct char name20; char units30; char tele10; char street20; char city20; char provience20; char num20;person;int create(person t);void list(person t,int n);void search(person t,int n);int delete(person t,int n);int add(person t,int n);int find(person t,int n,char *s) ;int menu();main() int i; person pm; int length; clrscr(); for(;) switch(menu() case 0:length=create(p);break; case 1:list(p,length);break; case 2:search(p,length);break; case 3:length=delete(p,length);break; case 4:length=add(p,length); break; case 5:exit(0); menu() char s80; int c; gotoxy(1,25); printf(press any key into menu.n); getch(); clrscr(); gotoxy(1,1); printf(menu*hu nan gong xue yuan ruan jian 0901 ban*nn); printf( 0. create recordn); printf( 1. list the filen); printf( 2. search record on namen); printf( 3. delete a recordn); printf( 4. add record n); printf( 5. quitn); printf(*by kangliang liaofengxiang*n); do printf(n create you choice(05):); scanf(%s,s); c=atoi(s); while(c5); return c;int create(person t) int i,n; char *s; clrscr(); printf(nplease input num n); scanf(%d,&n); printf(please input record n); printf(name unit telephone street city provience numn); printf(-n); for(i=0;in;i+) scanf(%s%s%s%s%s%s%s,,ti.units,ti.tele,ti.street, ti.city,vience,ti.num); printf(-n); return n;void list(person t,int n) int i; clrscr(); printf(nn*address*n); printf(name unit telephone street city provience numn); printf(-n); for(i=0;in-1) printf(not foundn); else print(ti);print(person temp) clrscr(); printf(nn*n); printf(name unit telephone street city provience numn); printf(-n); printf(%-20s%-30s%-10s%-20s%-20s%-20s%-20sn,,temp.units,temp.tele,temp.street,temp.city,vience,temp.num); printf(*end*n);int find(person t,int n,char *s) int i; for(i=0;in-1) printf(no found not deletedn); else print(ti); printf(are you sure delete it(1/0)n); scanf(%d,&ch); if(ch=1) for(j=i+1;j=i;j-) strcpy(tj+1.name,); strcpy(tj+1.units,tj.units); strcpy(tj+1.tele,tj.tele); strcpy(tj+1.street,tj.street); strcpy(tj+1.city,tj.city); strcpy(tj+1.provience,vience); strcpy(tj+1.num,tj.num); strcpy(,); strcpy(ti.units,temp.units); strcpy(ti.tele,temp.tele); strcpy(ti.street,temp.street); strcpy(ti.city,temp.city); strcpy(vience,vience); strcpy(ti.num,temp.num); n+; return n;void sort(person t,int n) int i,j,flag; person temp; for(i=0;in;i+) flag=0; for(j=0;j0) flag=1; strcpy(,); strcpy(temp.units,tj.units); strcpy(temp.tele,tj.tele); strcpy(temp.street,tj.street); strcpy(temp.city,tj.city); strcpy(vience,vience); strcpy(temp.num,tj.num); strcpy(,tj+1.name); strcpy(tj.units,tj+1.units); strcpy(tj.tele,tj+1.tele); strcpy(tj.street,tj+1.street); strcpy(tj.city,tj+1.city); strcpy(vience,tj+1.provience); strcpy(tj.num,tj+1.num); strcpy(tj+1.name,); strcpy(tj+1.units,temp.units); strcpy(tj+1.tele,temp.tele); strcpy(tj+1.street,temp.street); strcpy(tj+1.city,temp.city); strcpy(tj+1.provience,vience); strcpy(tj+1.num,temp.num); if(flag=0)break; printf(sort sucess!n);5、操作方法 本程序通俗易通,运行后根据界面文字提示即可操作。在程序运行时显示“press any key into menu”,此时按任意键即可进入主菜单,进入主菜单的显示为:*menu*hu nan gong xue yuan ruan jian 0901 ban* 0.create record 1.list the file 2.search record on name 3.delete a record 4.add record 5.quitcreate you choice:输入你想要选择的项目数字即可。0是创建记录,1是文件清单,2是在名字中查找,3是删除记录,4是增加记录,5是退出。6、试验结果含输入数据和输出结果 通过很多次的实验,本程序(源程序在程序清单中)终于可以正常运行,任何一项功能都能顺利实现,下图为程序运行界面: 图4.1 开始时 图 4.2 任意键进入界面 图 4.3 选择0时的界面 图 4.4 选择3时的界面 图 4.5 选择4时的界面 7、设计体会以前没做过课程设计,甚至连设计的概念都不是很清晰,因此在做课程设计时遇到了较大的困难,本身题目对于我来说确实有点难度,找了很多的资料,开始以为能写一些很简单的程序就不错了,在编写这个程序时才发现自己的能力还很不行,知识储备还很贫乏。经过这些天的辛苦实践,认真踏实的获取新知识,积极的提高自己的上机操作能力,不断的吸取经验和教训,终于使自己的各项能力都有了较大的提高。俗话说:“学得越深才会发现自己不明白的地方越多”,确实如此,如将在我的印象中以前只把c语言比作小溪,那么现在c语言已经成为海洋,当我做完课程设计才发现c语言竟是如此的神秘,如此具有魅力。编写过程中也体会到了做事情一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在整个的设计过程中更加体会到了团队合作的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有团队合作才会更好的完成设计!在另外一组里我也参与了,只是这两份所做的事不同,那份主要是做的流程图,在此次设计中深切的体会到合作的重要性和必要性!通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!由于c语言是近年在国内外得到迅速推广应用的一种语言。c语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!五、附录1.程序的整体流程图开始进入主函数输入指令(a)调用create函数调用list函数调用search函数调用delete函数调用add函数执行printf退出系统a!=0,1,2,3,4,5执行printf()函数2.程序中自定义的函数及变量:函数 说明create 添加项目list显示记录,参数为记录数组和记录条数search用于查找已有的联系人delete删除已有的联系人add增加联系人3.部分自定义函数流程图delete函数流程图执行printf()执行for()循环执行if()执行printf()结束执行for()循环结束4.参考资料谭浩强编著.c程序设计第三版m.北京:清华大学出版社电脑知识与技术学术交流版谭浩强,张基温,唐永炎编著. c语言程序设计教程.m北京: 高等教育出版社,秦友淑,曹化工编著.c语言程序设计教程. m武汉:华中理工大学出版社罗庆云,高为民主编 c语言程序设计 中国水利水电出版社文库资料知道5.编写中出现的错误c语言的最大特点是:功能强、使用方便灵活。c编译的程序对语法检查并不象其它高级语言那么严格,这就给我们留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对我们这些初学c语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,我通过这次编程,也积累了一些c编程时常犯的错误:1. 书写标识符时,忽略了大小写字母的区别。编译程序把a和a认为是两个不同的变量名,而显示出错信息。c语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。c规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:a和,而把它赋给一个字符变量是不行的。4.忽略了“=”与“=”的区别。在c语言中,“=”是赋值运算符,“=”是关系运算符。如: if (a=3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是c语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论