




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c程序课程设计报告 -手机通讯录管理系统组长: 学院:电子信息工程学号:10071050班级:电二 成员: 一 课程设计目的和内容概述1.目的:加深对c语言课程所学知识的理解,进一步巩固c语言编程方法。学会编制结构清晰、风格良好、数据结构适当的c语言程序,从而具备解决综合性实际问题的能力,加强动手能力。2.内容:设计一个简易的手机通讯录管理系统。该题目要求在熟练掌握c语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数
2、的应用,包括时间函数、绘图函数,以及文件的读写操作等。其中结构体,函数的调用,算法的设计是尤为重要的。二 题目 手机通讯录管理系统。问题描述 该系统模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 基本要求 要能提供以下几种功能: (1)查看功能:选择此功能时,列出下列三类选择:a:办公类b:个人类c:商务类 (2)当选中某类时,显示出此类所有数据中的姓名和电话号码 (3)添加数据功能:能录入新数据,每个结点包括:姓名,电话号码,分类(可能选项有:w为办公类 p为个人类b为商务类),电子邮件。 例如:杨务类chuny 当录入重复的姓名和电话号码时,则提示数据录入重
3、复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。三 程序设计1.总体设计 首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。然后利用模块来分别实现程序的各个功能。各个模块用函数来实现。在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。最后将输入的文件保存在文件里,以便重复使用。2.详细设计根据功能需要建立显示,添加,查看,删除,修改,保存五个
4、模块。在模块中通过调用各个函数来实现功能。详细设计如下:(1)构建结构体,写入文件file *fp;int i; struct address char a40; /email地址;struct ffriend int num; char name20; char kind20; long telephone; struct address address; friends50; void load() int j,k; fp=fopen(friend.txt,a+); if(fp!=null) for(k=0;k50;k+) j=fgetc(fp); if(j=eof) i=k-1;retu
5、rn; fseek(fp,k*sizeof(struct ffriend),seek_set); fread(&friendsk,sizeof(struct ffriend),1,fp); else fp=fopen(friend.txt,w); i=1; system(cls); (2)构造函数与模块构造显示模块,增加模块,删除模块,修改模块,查询模块。程序如下:void show(int j) system(cls); /实现分屏操作的函数 printf(nnt编号-nnumber: %3d,friendsj.num); printf(nt姓名-name:%-20s,friendsj.na
6、me); printf(nt性别-kind:%s,friendsj.kind); printf(nt联系电话-telephone:%-13ld,friendsj.telephone); printf(ntemail-address:%-40s,friendsj.address.a);void append(int j) system(cls); friendsj.num=j; printf(nttt序号-number : %d,j); printf(nttt姓名-name : ); scanf(%s,); printf(ttt类别-kind : ); scanf(%s
7、,&friendsj.kind); printf(ttt联系电话-telephone : ); scanf(%ld,&friendsj.telephone); while(friendsj.telephone16000000000) printf(电话号码不合法!请重新输入 : ); scanf(%ld,&friendsj.telephone); printf(tttemail-address : ); scanf(%s,friendsj.address.a); getchar();void delete() int k;int j; system(cls); printf(ntdelete
8、序号-number : ); scanf(%d,&k); if(k-1=i) for(j=k-1;ji+1;j+) /*插入位置后的元素顺序后移*/ strcpy(,friendsj+1.name); /*交换元素内容*/ strcpy(friendsj.kind,friendsj+1.kind); friendsj.telephone=friendsj+1.telephone; strcpy(friendsj.address.a,friendsj+1.address.a); i-; else printf(输入的序号太大!); void modify(int j)
9、system(cls); append(j);void save() int k,j; system(cls); printf(nntt请耐心等待,信息正在保存!n); printf(nnnntttsaving); for(k=0;k20;k+) sleep(300); printf(.); printf(nn信息已经保存成功!n); fp=fopen(friend.txt,w); for(j=0;j=i;j+) fwrite(&friends0,sizeof(struct ffriend),1,fp); fclose(fp);(3)主函数调用各个模块用switch语句判断输入者要使用的功能,
10、然后调用函数,模块实现功能。程序如下:void main() int j;char a;char x; char grade; char searchkind20;char searchname20;load();system(cls); do printf(nnttt=n); printf(tttt手机通讯录 n); printf(tttt功能选择 n); /输出主界面 printf(ttt=n); printf(ttt a.查看 *n); printf(ttt b.增添 *n); printf(ttt c.删除 *n);printf(ttt d.查询 *n); printf(ttt e.修
11、改 *n); printf(ttt f.保存 *n); printf(ttt=n); printf(ttn请选择(choice)nntt注:输入ah或ah的字母:); scanf(%c,&grade); switch(grade) /用switch判断使用者要选择的功能 case a: case a: j=0; while(getchar()!=0x1b&ji) if(j=0)printf(nt空文档,无任何记录-empty noten); else printf(nt记录已全部显示n); printf(nn请按回车键继续!); getchar(); break; printf(ntttttt
12、t此次操作结束); printf(nt-ttn); break; case b: case b: while(i50) i+; append(i); printf(t是否继续增加?(y/n); a=getchar(); if(a=n) break; if(i=50) printf(nt文档已满,无法增加记录-note full); printf(nttttttt此次操作结束); printf(nt-ttn); getchar(); break; case c: case c: delete(); if(i1) printf(n没有记录-no recordsn); printf(nn请按回车键继
13、续!); getchar(); getchar(); printf(nttttttt此次操作结束); printf(nt-ttn); break; case d: case d: system(cls); printf(nt请输入要查询记录的相关类别: p.个人类 b.商务类 w.办公类); scanf(%s,searchkind); for(j=0;j=i;j+) if(strcmp(searchkind,friendsj.kind)=0) show(j); getchar(); break; case e: case e: printf(nt请输入要修改记录的相关姓名:); gets(se
14、archname); scanf(%s,searchname); for(j=0;j=i;j+) if(strcmp(searchname,)=0) modify(j); if(i1) printf(n 没有您所要修改的记录-no records); printf(n 请按回车键继续!); getchar(); getchar(); printf(nttttttt此次操作结束); printf(nt-ttn); break; case f: case f: system(cls); save(); getchar(); printf(nttttttt此次操作结束);
15、printf(nt-ttn); break; default: printf(nt输入有误,请输入正确的序列号!); printf(n请按回车键继续!); getchar(); printf(nttttttt此次操作结束); printf(nt-ttn); while(1);上述三部分实现整个程序的功能。四 程序源代码#include #include #include #include file *fp;int i; struct address char a40; ;struct ffriend int num; char name20; char kind20; long telepho
16、ne; struct address address; friends50; void load() int j,k; fp=fopen(friend.txt,a+); if(fp!=null) for(k=0;k50;k+) j=fgetc(fp); if(j=eof) i=k-1;return; fseek(fp,k*sizeof(struct ffriend),seek_set); fread(&friendsk,sizeof(struct ffriend),1,fp); else fp=fopen(friend.txt,w); i=1; system(cls); void show(i
17、nt j) system(cls); printf(nnt编号-nnumber: %3d,friendsj.num); printf(nt姓名-name:%-20s,); printf(nt性别-kind:%s,friendsj.kind); printf(nt联系电话-telephone:%-13ld,friendsj.telephone); printf(ntemail-address:%-40s,friendsj.address.a);void append(int j) system(cls); friendsj.num=j+1;printf(nttt类别:p
18、.个人类 b.商务类 w.办公类); printf(nttt序号-number : %d,j+1); printf(nttt姓名-name : ); scanf(%s,); printf(ttt类别-kind : ); scanf(%s,&friendsj.kind); printf(ttt联系电话-telephone : ); scanf(%ld,&friendsj.telephone); while(friendsj.telephone16000000000) printf(电话号码不合法!请重新输入 : ); scanf(%ld,&friendsj.teleph
19、one); printf(tttemail-address : ); scanf(%s,friendsj.address.a); getchar();void delete() int k;int j; system(cls); printf(ntdelete 序号-number : ); scanf(%d,&k); if(k-1)=i) for(j=k-1;ji+1;j+) strcpy(,friendsj+1.name); strcpy(friendsj.kind,friendsj+1.kind); friendsj.telephone=friendsj+1.te
20、lephone; strcpy(friendsj.address.a,friendsj+1.address.a); i-; else printf(输入的序号太大!); void modify(int j) system(cls); append(j);void save() int k,j; system(cls); printf(nntt请耐心等待,信息正在保存!n); printf(nnnntttsaving); for(k=0;k20;k+) sleep(300); printf(.); printf(nn信息已经保存成功!n); fp=fopen(friend.txt,w); for
21、(j=0;j=i;j+) fwrite(&friendsj,sizeof(struct ffriend),1,fp); fclose(fp);void main() int j;char a;char x; char grade; char searchkind20;char searchname20; load(); system(cls); do printf(nnttt=n); printf(tttt手机通讯录 n); printf(tttt功能选择 n); printf(ttt=n); printf(ttt a.查看 *n); printf(ttt b.增添 *n); printf(t
22、tt c.删除 *n);printf(ttt d.查询 *n); printf(ttt e.修改 *n); printf(ttt f.保存 *n);printf(ttt g.推出 *n); printf(ttt=n); printf(ttn请选择(choice)nntt注:输入ah或ah的字母:); scanf(%c,&grade); switch(grade) case a: case a: j=0; while(getchar()!=0x1b&ji) if(j=0)printf(nt空文档,无任何记录-empty noten); else printf(nt记录已全部显示n); print
23、f(nn请按回车键继续!); getchar(); break; printf(nttttttt此次操作结束); printf(nt-ttn); break; case b: case b: while(i50) i+; append(i); printf(t是否继续增加?(y/n); a=getchar(); if(a=n) break; if(i=50) printf(nt文档已满,无法增加记录-note full); printf(nttttttt此次操作结束); printf(nt-ttn); getchar(); break; case c: case c: delete(); if(i0) printf(n没有记录-no recordsn); printf(nn请按回车键继续!); getchar(); getchar(); printf(nttttttt此次操作结束); printf(nt-ttn); break; case d: case d: system(cls); printf(nt请输入要查询记录的相关类别: p.个人类 b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学习动力与创新思维教育心理学的奥秘
- 以技术驱动创新如何将虚拟现实技术融入商业教育中
- 前锋线比较法分析进度偏差
- 广西柳州铁一中、南宁三中 2025年物理高二第二学期期末预测试题含解析
- 中职教案课件
- 智慧城市公共交通的大数据治理与优化实践
- 医疗领域的教育心理学应用与实践
- 技术进步如何重塑商业模式与战略
- 教育心理学的创新应用对幼教的启示和影响
- 中职手工课课件
- 全国职业院校技能大赛赛项规程(高职)(高职)化工生产技术
- 零工市场(驿站)运营管理 投标方案(技术方案)
- 2024-2030年全球及中国光学器件中的透镜行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- KBR气化炉-合成氨
- DL∕T 741-2019 架空输电线路运行规程
- 临时用电安全责任确认书
- 网络运维专项方案
- 赫力昂:2024中国年轻群体痤疮外用药治疗白皮书
- 国家开放大学《合同法》章节测试参考答案
- 巡察知识讲解课件
- 多囊卵巢综合征诊治路径专家共识
评论
0/150
提交评论