C语言课程设计-通讯录.doc

上传人:韩长文 文档编号:5089723 上传时间:2020-02-01 格式:DOC 页数:22 大小:236KB
返回 下载 相关 举报
C语言课程设计-通讯录.doc_第1页
第1页 / 共22页
C语言课程设计-通讯录.doc_第2页
第2页 / 共22页
C语言课程设计-通讯录.doc_第3页
第3页 / 共22页
C语言课程设计-通讯录.doc_第4页
第4页 / 共22页
C语言课程设计-通讯录.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C语言课程设计-通讯录.doc》由会员分享,可在线阅读,更多相关《C语言课程设计-通讯录.doc(22页珍藏版)》请在三一文库上搜索。

1、*湖南工学院软件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语言的基础知

2、识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。 4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;二、本组课题及各人任务 课题:设计一个通讯录管理系统 任务分配:康梁主要负责找资料完成源程序和流程图,排版,心得,以及报告书制作 廖凤祥主要负责程序分析,调试,流程图制作。以及在过程中遇到的一些错误分析三、程序功能简介 该

3、程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。四、主体内容1、设计分析1.1问题提出 计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式 1.2本系统涉及的知识点 本系统涉及到所学过的知识点有:编译预处理,函数,循环结构,循环结构,数组,结构体,指针等。1.3功能要求 1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编 2、能根据需要随时在通讯录中添加联系人 3、能根据联系人的名字查找他的详细联系方式 4、能根据需要修改某联系人的联系方式 5、能删除某特定联系人的所有联系方式 2、程序结构

4、流程图 (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 l

5、ength; /*保存记录长度*/ 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

6、: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 pri

7、nt(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(tj-1.name,tj.name); /*将后一条记录的姓名拷贝到前一条*/ strcpy(tj-1.units,tj.units); /*将后一条记录的单位拷贝到前一条*/ strcpy(tj-1.tele,tj.tele); /*将后一条记录的电话

8、拷贝到前一条*/ strcpy(tj-1.street,tj.street); /*将后一条记录的街道拷贝到前一条*/ strcpy(tj-1.city,tj.city); /*将后一条记录的城市拷贝到前一条*/ strcpy(tj-1.provience,tj.provience); /*将后一条记录的省份拷贝到前一条*/ strcpy(tj-1.num,tj.num); /*将后一条记录的邮编拷贝到前一条*/ n-; /*记录数减1*/ return n; /*返回记录数*/(3)List函数/*显示记录,参数为记录数组和记录条数*/void list(person t,int n) in

9、t 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.name,ti.units, ti.tele,ti.street,ti.city,ti.provience,ti.num); if(i+1)%10=0) /*判断输出是否达到10条记录*/ printf(Press any key continue.n); /*提示

10、信息*/ 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

11、(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,lengt

12、h);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 re

13、cord 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

14、); 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.name,ti.units,ti.tele,ti.street, ti.city,ti.provience,ti.num); printf(-n); return n;void list(person t,int n) int i; clrscr(); printf(nn*ADDRESS*n); printf(nam

15、e 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.name,temp.units,temp.tele,temp.st

16、reet,temp.city,temp.provience,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,tj.name); strcpy(tj+1.units,tj.units); strcpy(

17、tj+1.tele,tj.tele); strcpy(tj+1.street,tj.street); strcpy(tj+1.city,tj.city); strcpy(tj+1.provience,tj.provience); strcpy(tj+1.num,tj.num); strcpy(ti.name,temp.name); strcpy(ti.units,temp.units); strcpy(ti.tele,temp.tele); strcpy(ti.street,temp.street); strcpy(ti.city,temp.city); strcpy(ti.provience

18、,temp.provience); 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(temp.name,tj.name); strcpy(temp.units,tj.units); strcpy(temp.tele,tj.tele); strcpy(temp.street,tj.street); strcpy(temp.city,tj.city); strcpy(

19、temp.provience,tj.provience); strcpy(temp.num,tj.num); strcpy(tj.name,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(tj.provience,tj+1.provience); strcpy(tj.num,tj+1.num); strcpy(tj+1.name,temp.name); strcpy(tj+1.u

20、nits,temp.units); strcpy(tj+1.tele,temp.tele); strcpy(tj+1.street,temp.street); strcpy(tj+1.city,temp.city); strcpy(tj+1.provience,temp.provience); strcpy(tj+1.num,temp.num); if(flag=0)break; printf(sort sucess!n);5、操作方法 本程序通俗易通,运行后根据界面文字提示即可操作。在程序运行时显示“press any key into menu”,此时按任意键即可进入主菜单,进入主菜单的显

21、示为:*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 开始时

22、图 4.2 任意键进入界面 图 4.3 选择0时的界面 图 4.4 选择3时的界面 图 4.5 选择4时的界面 7、设计体会以前没做过课程设计,甚至连设计的概念都不是很清晰,因此在做课程设计时遇到了较大的困难,本身题目对于我来说确实有点难度,找了很多的资料,开始以为能写一些很简单的程序就不错了,在编写这个程序时才发现自己的能力还很不行,知识储备还很贫乏。经过这些天的辛苦实践,认真踏实的获取新知识,积极的提高自己的上机操作能力,不断的吸取经验和教训,终于使自己的各项能力都有了较大的提高。俗话说:“学得越深才会发现自己不明白的地方越多”,确实如此,如将在我的印象中以前只把C语言比作小溪,那么现在C

23、语言已经成为海洋,当我做完课程设计才发现C语言竟是如此的神秘,如此具有魅力。编写过程中也体会到了做事情一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在整个的设计过程中更加体会到了团队合作的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有团队合作才会更好的完成设计!在另外一组里我也参与了,只是这两份所做的事不同,那份主要是做的流程图,在此次设计中深切的体会到合作的重要性和必要性!通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!由于C语言是近年在国内外得到迅速推广应用的一种语言

24、。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.部分自

25、定义函数流程图Delete函数流程图执行printf()执行for()循环执行if()执行printf()结束执行for()循环结束4.参考资料谭浩强编著.C程序设计第三版M.北京:清华大学出版社电脑知识与技术学术交流版谭浩强,张基温,唐永炎编著. C语言程序设计教程.M北京: 高等教育出版社,秦友淑,曹化工编著.C语言程序设计教程. M武汉:华中理工大学出版社罗庆云,高为民主编 C语言程序设计 中国水利水电出版社文库资料知道5.编写中出现的错误C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给我们留下“灵活的余地”,但还是由于这个灵活给程序的调

26、试带来了许多不便,尤其对我们这些初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,我通过这次编程,也积累了一些C编程时常犯的错误:1. 书写标识符时,忽略了大小写字母的区别。编译程序把a和A认为是两个不同的变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。混淆了字符常量与字符串常量,字符常量是由一对单

27、引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。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”也作为上一行语句的一部分,这就会出现语

28、法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。6.多加分号。对于一个复合语句,如: z=x+y; t=z/100; printf(%f,t); ;复合语句的花括号后不应再加分号,否则将会画蛇添足。又如:if (a%3=0);I+;本是如果3整除a,则I加1。但由于if (a%3=0)后多加了分号,则if语句到此结束,程序将执行I+语句,不论3是否整除a,I都将自动加1。7.输入变量时忘记加地址运算符“&”。8.输入数据的方式与要求不符。scanf(%d%d,&a,&b);输入时,不能用逗号作两个数据间的分隔符。9.输入字符的格式与要求不一致。在用“%c”

29、格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。scanf(%c%c%c,&c1,&c2,&c3);如输入a b c 字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。10.输入输出的数据类型与所用格式说明符不一致。11.C语言的变量一定要先定义才能使用;12.输入输出的数据的类型与所用格式说明符不一致13.未注意int型数据的数值范围14.输入变量时忘记使用地址符scanf(“%d%d”,a,b);15.输入时数据的组织与要求不符对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入16

30、.误把”=“作为”等于”比较符“=“为附值运算符“=“为比较运算符17.语句后面漏分号18.不该加分号的地方加了分号19.对应该有花括弧的复合语句,忘记加花括弧20.括弧不配对21.在用标识时,忘记了大写字母和小写字母的区别22.引用数组元素时误用发圆括弧23.在定义数组时,将定义的”元素个数”误认为是”可使用的最大下标值24.对二维或多维数组的定义和引用的方法不对25.误以为数组名代表数组中全部元素26.混淆字符数组与字符指针的区别29.使用自加(+)和自减(-)运算符时出的错误30.所调用的函数在调用语句之后才定义,而又在调用前未加说明编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意22By 康梁 廖凤翔

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 绩效管理


经营许可证编号:宁ICP备18001539号-1