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

下载本文档

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

文档简介

1、软件学院课程设计报告设计名称: c语言课程设计 选题名称: 通讯录系统 姓 名: 宋汉鼎 学 号: 1415935054 专业班级: 网安一班 系 (院): 软件学院 设计时间: 2012.12.222012.12.26 设计地点: 实验室15#204 c语言课程设计报告 第 23 页,共16页1课程设计目的(1) 巩固和加深学生对c语言的基本知识的理解和掌握;(2) 掌握c语言编程和程序调试的基本技能;(3) 利用c语言进行简单软件设计的基本思路和方法;(4) 提高运用c语言解决实际问题的能力;(5) 掌握书写程序设计说明文档的能力。2课程设计任务与要求:任务设计题目从任务书所列选题表中选取

2、,每人1题。要求:1、在处理每个题目时,要求从分析题目的需求入手,进行合理的模块设计,定义正确函数和自定义数据类型(如结构体类型)、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、设计的题目要求达到一定工作量(200行以上代码),并具有一定的深度。3、程序设计语言推荐使用c,程序书写规范,源程序需加必要的注释并且缩进一致。4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算)

3、;6、课程设计实践作为培养学生动手能力的一种手段,单独考核。3课程设计说明书一 需求分析 利用c语言编写出通讯录程序,并且实现一个通讯录所拥有的基本功能,加强了c语言学习者将所学知识与生活实践相结合的能力,既能检验学习成果,又能发现c语言的应用市场,通讯录应用广泛,在日常生活中随处可见,最基本的通讯录至少应该满足以下要求:1.读出功能?列出所有记录(每项记录只列出姓名、序列、电话号码,邮箱);2.查询功能(姓名匹配查询;根据序列号查询;)3.修改功能4.增加功能(增加一个新的记录;)5.删除功能(删除一条联系人记录;)6. 保存功能(保存所输入的项)通讯录系统的使用很好的解决了日常生活中对联系

4、人保存和信息修改的难题,方便了生活。简单,易操作。二 系统设计 主要利用了c语言完成了这个小型的通讯录程序。本程序主要实现了输入并存储联系人的通讯信息、输入所有联系人的信息、按照姓名或编号查找输入的联系人信息、修改输入的联系人信息、输出所有联系人的通讯信息、增加联系人、保存输入信息的功能。 基本功能: 1、输入密码进入系统:通过调用字符串函数strcmp,将键入字符串与源程序中的字符串进行比较,如果吻合,出现“欢迎进入系统”字样,按任意键进入系统,反之,出现“密码错误“字样,按任意键,结束进程。 2、输入并存储联系人的信息:通过输入联系人的编号、姓名、和电话号码,电子邮箱,然后就可以把数据保存

5、在建立的list文件里面。 3、打印联系人的所有信息:通过一个printf语句就可以把所有输入的联系人的信息打印在屏幕上。 4、通过编号和姓名查找联系人:这个功能通过strcmp比较输入的字符串和保存的字符串是否有一致的,然后将吻合的字符串所在的联系人信息条目输出到屏幕上。 5、删除信息有误或信息变动的联系人信息:这个功能通过调用字符串函数strcmp和 strcpy来实现,以下一条信息来覆盖错误的信息,从而达到删除目的效果。 6、修改某条联系人的信息:这个功能仍然要通过字符串函数strcmp函数去比较键入字符串和已输入字符串,如果有相同的,就将所在的这一条联系人信息加以修改,如果没有则直接输

6、出“没有此联系人”。 7、存入所输入信息功能:这个功能通过使用文件操作,定义文件指针,将输入信息存放在文件夹内,方便下次查看系统的结构图,如图:有功能模块图和流程图 三 详细设计 1、首先写入头文件#include #include#include 2、定义一个结构体存储联系人的信息typedef struct char score10;/联系人序列char name20;/联系人姓名char sex8;/联系人性别char num15; /联系人号码char email20;/联系人邮箱person; 3、然后写入定义一个菜单函数,用于介绍通讯系统所具有的所有功能选项,以及输入数字实现选择功

7、能。int menu_select() /选择菜单函数 char c; do system(cls);/清屏 printf(ttn);printf(tt# 通讯录 n); printf(tt# 1. 添加联系人 n); printf(tt# 2. 显示信息 n); printf(tt# 3. 删除信息 n); printf(tt# 4. 查询信息 n); printf(tt# 5. 修改信息 n); printf(tt# 6. 保存信息 n);printf(tt# 0. 退出通讯录 n);printf(ttn); printf(tt*n);printf(tt请您选择(0-6):); c=get

8、char(); while(c6); return(c-0); 4、输入信息函数(包括:序列、名字、性别、手机号码、电子邮箱等。)以及选择是否需要继续添加信息。 int input(person per,int n) int i=0; char sign,x10; while(sign!=n&sign!=n) printf(t序列:); scanf(t%s,&pern+i.score); printf(t姓名:); scanf(t%s,pern+); printf(t性别:); scanf(t%s,pern+i.sex);printf(t号码:); scanf(t%s,pern+i

9、.num); printf(t邮箱:); scanf(t%s,pern+i.email); gets(x); printf(nt是否继续添加?(y/n); scanf(t%c,&sign); i+; return(n+i); 6、显示函数(显示所输入的所有联系人信息) fvoid display(person per,int n) int i; printf(&n); /*格式*/ printf(序列 姓名 性别 号码 电子邮箱 n); printf(-n); for(i=1;in+1;i+) printf(%-9s%-10s%-15s%-20sn,peri-1.score,peri-1.na

10、me,peri-1.sex,peri-1.num,peri-1.email); system(pause); 7、删除目标联系人函数int delete_a_news(person per,int n) char s20; int i=0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(,s)!=0&in) i+;if(i=n) printf(t没有此联系人!n); return(n); for(j=i;jn-1;j+) strcpy(perj.score,perj+1.score); strcpy(

11、,perj+1.name); strcpy(perj.sex,perj+1.sex);strcpy(perj.num,perj+1.num);strcpy(perj.email,perj+1.email); printf(ttt已经成功删除!n); return(n-1); 8、查询信息函数函数(分为姓名查询和序列号码查询) void query_a_record(person per,int n) int m;printf(tn请选择查询方式:n); printf(t*n); printf(t* 1.联系人姓名 *n); printf(t* 2.联系人序列号 *n); printf(t*n)

12、; printf(请选择:); scanf(%d,&m); while(m!=1&m!=2) printf(输入错误,请重新选择:);scanf(%d,&m);if(m=1)char s20; int i=0; printf(t请输入想查询联系人的姓名:); scanf(t%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(t记录中没有此联系人!n); return; printf(t联系人序列: %sn,peri.score);printf(t联系人姓名: %sn,);printf(t联系人性别: %sn,p

13、eri.sex); printf(t联系人号码: %sn,peri.num);printf(t联系人邮箱: %sn,peri.email); ;if(m=2)char s20; int i=0; printf(t输入查询联系人序列:); scanf(t%s,s); while(strcmp(peri.score,s)!=0&in) i+; if(i=n) printf(t系统中没有此记录!n); return; printf(t联系人序列: %sn,peri.score);printf(t联系人姓名: %sn,);printf(t联系人性别: %sn,peri.sex); p

14、rintf(t联系人号码: %sn,peri.num);printf(t联系人邮箱: %sn,peri.email); ;9、联系人信息修改函数fvoid change(person per,int n) char s20; int i=0; printf(t请输入想修改的联系人的名字:); scanf(%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(t系统中没有此联系人!n); return; printf(t序列:); scanf(t%s,&peri.score); printf(t姓名:); scanf(t%s,per

15、); printf(t性别:); scanf(t%s,peri.sex);printf(t号码:); scanf(t%s,peri.num); printf(t邮箱:); scanf(t%s,peri.email);printf(t修改成功!); 3、写一个存储函数来把数据保存到文件中。void writetotext(person per,int n) int i=0; file *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(t保存到文件n); /*输入文件名*/ printf(t请输入所保存的文件名:); scanf(t%s

16、,filename); if(fp=fopen(filename,w)=null) printf(t无法打开文件n); system(pause); return; fprintf(fp,*通讯录*n);fprintf(fp,序列 姓名 性别 号码 电子邮箱 n); fprintf(fp,-n);while(in) fprintf(fp,%-2st%-10st%-15dt%-20dtn,peri.score,,peri.sex,peri.num,peri.email); i+; fprintf(fp,-n);fprintf(fp,*共有%d条联系人信息*n,n); fclos

17、e(fp); /*关闭文件*/ printf(保存成功!n); 密码函数(进入系统前先输对密码)void mima()char mm8;char shishu=123456;printf(tttt请输入您的密码:n);gets(mm);if(strcmp(mm,shishu)=0)printf(ttt欢迎进入系统!n);printf(请按任意键进入系统,谢谢n);system(pause); elseprintf(tttt您的密码错误n);printf(按任意键自动退出程序n);exit(0); 10、 写出主函数,调用所有自定义函数。void main() /*主函数*/ void mima

18、(); int n=0;mima();for(;) switch(menu_select() case 1: printf(nt添加联系人到系统n); /*添加*/ n=input(pe,n); break; case 2: printf(nt联系人记录表n); /*显示记录*/ display(pe,n); break;case 3: printf(nt从系统中删除信息n); n=delete_a_news(pe,n); /*删除记录*/ printf(t); system(pause); break; case 4: printf(nt在系统中查找信息n); query_a_record(

19、pe,n); /*查找记录*/ printf(t); system(pause); break;case 5: printf(nt修改系统信息n); change(pe,n); /*修改数据*/ printf(t); system(pause); break; case 6: printf(nt保存功能n); writetotext(pe,n); /*保存数据*/ printf(t); system(pause); break; case 0: printf(t- n);printf(t game over n); printf(t谢谢使用,再见! n); printf(tn); /*结束程序

20、*/ printf(ntt); system(pause); exit(0); 四 设计与调试分析1、选择菜单操作的核心步骤:c=getchar(); while(c6); return(c-0); 2、输入信息的核心步骤:printf(t序列:); scanf(t%s,&pern+i.score); printf(t姓名:); scanf(t%s,pern+); printf(t性别:); scanf(t%s,pern+i.sex);printf(t号码:); scanf(t%s,pern+i.num); printf(t邮箱:); scanf(t%s,pern+i.email)

21、; 3、显示信息的核心代码如下: printf(&n); /*格式*/ printf(序列 姓名 性别 号码 电子邮箱 n); printf(-n); for(i=1;in+1;i+) printf(%-9s%-10s%-15s%-20sn,peri-1.score,,peri-1.sex,peri-1.num,peri-1.email); 在程序的设计中,我写的代码的错误很多。刚开始不知道为什么然后根据错误查找方法找到了。有的时候,忘了将中英文切换,将中英文标点混为一谈;用ifelse时else找不到对应的if;调用函数时调用语句不规范等。做完这个程序,并修正所有错误后

22、,觉得除了一些低级错误意外,又从错误中学到了很多,觉得有进步了一点。五 系统运行与演示1、密码输入界面:2、 主菜单界面:2、输入1得到输入联系人信息的界面,如图。3、输入2得到的打印所有联系人的信息的界面,如图。4、选择3得到的运行界面如下图。4、输入4得到不及格的学生如下图。5、输入5修改信息,如图。6、输入6得到界面如下图。7、选择0退出系统。七、附录(代码)#include #include#include typedef struct char score10;/联系人序列char name20;/联系人姓名char sex8;/联系人性别char num15; /联系人号码char

23、 email20;/联系人邮箱person; person pe100; int menu_select() /选择菜单函数 char c; do system(cls);/清屏 printf(ttn);printf(tt# 通讯录 n); printf(tt# 1. 添加联系人 n); printf(tt# 2. 显示信息 n); printf(tt# 3. 删除信息 n); printf(tt# 4. 查询信息 n); printf(tt# 5. 修改信息 n); printf(tt# 6. 保存信息 n);printf(tt# 0. 退出通讯录 n);printf(ttn); print

24、f(tt*n);printf(tt请您选择(0-6):); c=getchar(); while(c6); return(c-0); int input(person per,int n) int i=0; char sign,x10; while(sign!=n&sign!=n) printf(t序列:); scanf(t%s,&pern+i.score); printf(t姓名:); scanf(t%s,pern+); printf(t性别:); scanf(t%s,pern+i.sex);printf(t号码:); scanf(t%s,pern+i.num); printf(

25、t邮箱:); scanf(t%s,pern+i.email); gets(x); printf(nt是否继续添加?(y/n); scanf(t%c,&sign); i+; return(n+i); void display(person per,int n) int i; printf(&n); /*格式*/ printf(序列 姓名 性别 号码 电子邮箱 n); printf(-n); for(i=1;in+1;i+) printf(%-9s%-10s%-15s%-20sn,peri-1.score,,peri-1.sex,peri-1.num,peri-1.email

26、); system(pause); int delete_a_news(person per,int n) char s20; int i=0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(,s)!=0&in) i+;if(i=n) printf(t没有此联系人!n); return(n); for(j=i;jn-1;j+) strcpy(perj.score,perj+1.score); strcpy(,perj+1.name); strcpy(perj.sex,perj+1.sex);strcp

27、y(perj.num,perj+1.num);strcpy(perj.email,perj+1.email); printf(ttt已经成功删除!n); return(n-1); void query_a_record(person per,int n) int m;printf(tn请选择查询方式:n); printf(t*n); printf(t* 1.联系人姓名 *n); printf(t* 2.联系人序列号 *n); printf(t*n); printf(请选择:); scanf(%d,&m); while(m!=1&m!=2) printf(输入错误,请重新选择:);scanf(%

28、d,&m);if(m=1)char s20; int i=0; printf(t请输入想查询联系人的姓名:); scanf(t%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(t记录中没有此联系人!n); return; printf(t联系人序列: %sn,peri.score);printf(t联系人姓名: %sn,);printf(t联系人性别: %sn,peri.sex); printf(t联系人号码: %sn,peri.num);printf(t联系人邮箱: %sn,peri.email); ;if

29、(m=2)char s20; int i=0; printf(t输入查询联系人序列:); scanf(t%s,s); while(strcmp(peri.score,s)!=0&in) i+; if(i=n) printf(t系统中没有此记录!n); return; printf(t联系人序列: %sn,peri.score);printf(t联系人姓名: %sn,);printf(t联系人性别: %sn,peri.sex); printf(t联系人号码: %sn,peri.num);printf(t联系人邮箱: %sn,peri.email); ;void change(p

30、erson per,int n) char s20; int i=0; printf(t请输入想修改的联系人的名字:); scanf(%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(t系统中没有此联系人!n); return; printf(t序列:); scanf(t%s,&peri.score); printf(t姓名:); scanf(t%s,); printf(t性别:); scanf(t%s,peri.sex);printf(t号码:); scanf(t%s,peri.num); printf(t

31、邮箱:); scanf(t%s,peri.email);printf(t修改成功!);void writetotext(person per,int n) int i=0; file *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(t保存到文件n); /*输入文件名*/ printf(t请输入所保存的文件名:); scanf(t%s,filename); if(fp=fopen(filename,w)=null) printf(t无法打开文件n); system(pause); return; fprintf(fp,*通讯录*n);fprin

32、tf(fp,序列 姓名 性别 号码 电子邮箱 n); fprintf(fp,-n);while(in) fprintf(fp,%-2st%-10st%-15dt%-20dtn,peri.score,,peri.sex,peri.num,peri.email); i+; fprintf(fp,-n);fprintf(fp,*共有%d条联系人信息*n,n); fclose(fp); /*关闭文件*/ printf(保存成功!n); void mima()char mm8;char shishu=123456;printf(tttt请输入您的密码:n);gets(mm);if(st

33、rcmp(mm,shishu)=0)printf(ttt欢迎进入系统!n);printf(请按任意键进入系统,谢谢n);system(pause); elseprintf(tttt您的密码错误n);printf(按任意键自动退出程序n);/exit(0); void main() /*主函数*/ void mima(); int n=0;mima();for(;) switch(menu_select() case 1: printf(nt添加联系人到系统n); /*添加*/ n=input(pe,n); break; case 2: printf(nt联系人记录表n); /*显示记录*/ display(pe,n); break;case 3: printf(nt从系统中删除信息n); n=delete_a_news(pe,n); /*删除记录*/ printf(t); system(pause); break; case 4: printf(nt在系统中查找信息n); query_a_record(pe,n); /*查找记录*/ printf(t); system(pause); break;case 5: printf(nt修改系统信息n); change(pe,n); /*修改数据*/ printf(t); system(pau

温馨提示

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

评论

0/150

提交评论