版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C程序课程设计报告-手机通讯录管理系统组长:曾闯 学院:电子信息工程学号:10071050班级:电二 成员:晶,鄂跃宇,金迪 景飞,兴一 课程设计目的和容概述1.目的:加深对C语言课程所学知识的理解,进一步巩固C语言编程方法。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。2.容:设计一个简易的手机通讯录管理系统。该题目要求在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用
2、)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以与文件的读写操作等。其中结构体,函数的调用,算法的设计是尤为重要的。二 题目手机通讯录管理系统。问题描述 该系统模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 基本要求 要能提供以下几种功能: (1)查看功能:选择此功能时,列出下列三类选择:A:办公类 B:个人类 C:商务类 (2)当选中某类时,显示出此类所有数据中的和 (3)添加数据功能:能录入新数据,每个结点包括:,分类(可能选项有:w为办公类 p为个人类 b为商务类),电子。 例如: 春 商务类 chu
3、ny126. 当录入重复的和时,则提示数据录入重复并取消录入;当通讯录中超过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
5、;k<50;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");(2)构造函数与模块构造显示模块,增加模块,删除模块,修改模块,查询模块。程序如下:void Show(int j) system("c
6、ls"); /实现分屏操作的函数 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
7、Append(int j) system("cls"); friendsj.num=j; printf("nttt序号-Number : %d",j); printf("nttt-Name : "); scanf("%s",); printf("ttt类别-kind : "); scanf("%s",&friendsj.kind); printf("ttt联系-telephone : "); scanf("%ld
8、",&friendsj.telephone); while(friendsj.telephone<0|friendsj.telephone>) printf("不合法!请重新输入 : "); scanf("%ld",&friendsj.telephone); printf("tttemail-Address : "); scanf("%s",friendsj.address.a); getchar();void Delete() int k;int j; system(&quo
9、t;cls"); printf("ntDelete 序号-Number : "); scanf("%d",&k); if(k-1<=i) for(j=k-1;j<i+1;j+) /*插入位置后的元素顺序后移*/ strcpy(,friendsj+1.name); /*交换元素容*/ strcpy(friendsj.kind,friendsj+1.kind); friendsj.telephone=friendsj+1.telephone; strcpy(friendsj.address.a,frie
10、ndsj+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;k<20;k+) Sleep(300); printf("."); printf("
11、;nn信息已经保存成功!n"); fp=fopen("friend.txt","w"); for(j=0;j<=i;j+) fwrite(&friends0,sizeof(struct ffriend),1,fp); fclose(fp);(3)主函数调用各个模块用switch语句判断输入者要使用的功能,然后调用函数,模块实现功能。程序如下:void main() int j;char a;char x; char grade; char searchkind20;char searchname20;load();system(&
12、quot;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.修改
13、 *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&&j<=i) Show(j+); printf("nn请
14、按回车键继续!"); while(getchar()=0x1b|j>i) if(j=0)printf("nt空文档,无任何记录-Empty Noten"); else printf("nt记录已全部显示n"); printf("nn请按回车键继续!"); getchar(); break; printf("nttttttt此次操作结束"); printf("nt-ttn"); break; case 'b': case 'B': while(i&l
15、t;50) 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(i<1) printf("
16、n没有记录-No recordsn"); printf("nn请按回车键继续!"); getchar(); getchar(); printf("nttttttt此次操作结束"); printf("nt-ttn"); break; case 'd': case 'D': system("cls"); printf("nt请输入要查询记录的相关类别: p.个人类 b.商务类 w.办公类"); scanf("%s",searchkind)
17、; for(j=0;j<=i;j+) if(strcmp(searchkind,friendsj.kind)=0) Show(j); getchar(); break; case 'e': case 'E': printf("nt请输入要修改记录的相关:"); gets(searchname); scanf("%s",searchname); for(j=0;j<=i;j+) if(strcmp(searchname,)=0) Modify(j); if(i<1) printf(
18、"n 没有您所要修改的记录-No records"); printf("n 请按回车键继续!"); getchar(); getchar(); printf("nttttttt此次操作结束"); printf("nt-ttn"); break; case 'f': case 'F': system("cls"); Save(); getchar(); printf("nttttttt此次操作结束"); printf("nt-ttn&q
19、uot;); break; default: printf("nt输入有误,请输入正确的序列号!"); printf("n请按回车键继续!"); getchar(); printf("nttttttt此次操作结束"); printf("nt-ttn"); while(1);上述三部分实现整个程序的功能。四 程序源代码#include <stdlib.h>#include <string.h>#include <stdio.h>#include <windows.h>
20、FILE *fp;int i; struct address char a40; ;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;k<50;k+) j=fgetc(fp); if(j=EOF) i=k-1;return; fseek(fp,k*sizeof
21、(struct ffriend),SEEK_SET); fread(&friendsk,sizeof(struct ffriend),1,fp); else fp=fopen("friend.txt","w"); i=1; system("cls");void Show(int j) system("cls"); printf("nnt编号-Nnumber: %3d",friendsj.num); printf("nt-Name:%-20s",friendsj.nam
22、e); 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.个人类 b.商务类 w.办公类"); printf("nttt序
23、号-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.telephone<0|friendsj
24、.telephone>) printf("不合法!请重新输入 : "); scanf("%ld",&friendsj.telephone); printf("tttemail-Address : "); scanf("%s",friendsj.address.a); getchar();void Delete() int k;int j; system("cls"); printf("ntDelete 序号-Number : "); scanf("%d
25、",&k); if(k-1)<=i) for(j=k-1;j<i+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) system("cls&quo
26、t;); Append(j);void Save() int k,j; system("cls"); printf("nntt请耐心等待,信息正在保存!n"); printf("nnnntttSaving"); for(k=0;k<20;k+) Sleep(300); printf("."); printf("nn信息已经保存成功!n"); fp=fopen("friend.txt","w"); for(j=0;j<=i;j+) fwrite(
27、&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
28、("ttt A.查看 *n"); printf("ttt B.增添 *n"); printf("ttt 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的字母:"
29、); scanf("%c",&grade); switch(grade) case 'a': case 'A': j=0; while(getchar()!=0x1b&&j<=i) Show(j+); printf("nn请按回车键继续!"); while(getchar()=0x1b|j>i) if(j=0)printf("nt空文档,无任何记录-Empty Noten"); else printf("nt记录已全部显示n"); printf(&
30、quot;nn请按回车键继续!"); getchar(); break; printf("nttttttt此次操作结束"); printf("nt-ttn"); break; case 'b': case 'B': while(i<50) i+; Append(i); printf("t是否继续增加?(y/n)"); a=getchar(); if(a='n') break; if(i=50) printf("nt文档已满,无法增加记录-note full&qu
31、ot;); printf("nttttttt此次操作结束"); printf("nt-ttn"); getchar(); break; case 'c': case 'C': Delete(); if(i<0) 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北师大版数学五下《这月我当家》课件
- 人教版数学六下《自行车里的数学》课件1
- 佟韦学校《水滴里的生物》课件
- 上海科教版品社四下《主题2 我们时刻在呼吸》课件3
- 热力学与统计物理第四章
- 液化石油气瓶装供应站建设项目可行性研究报告
- 实验室外来人员准入培训课件
- 危险化学品应急器材使用基础知识安全培训
- 通信基站建设工程施工组织设计编制规范
- 预制菜中央厨房项目可行性研究报告
- 山东省济南市2025-2026学年七年级上册期末复习:文言文阅读(课外阅读)练习题与答案
- 江苏省泰州市泰州中学2026-2027学年高二上学期10月第一次质量检测生物试卷(无答案)
- 恶性胸腔积液诊断与治疗教学课件
- 2026年宁波市文化旅游投资集团有限公司人员招聘笔试备考试题及详细答案解析
- 中医科医院感染管理制度-001
- 2026年传承红色薪火 勇担少年使命 - 纪念长征胜利90周年校长主题讲话
- 会议音视频系统维护保养手册
- GB/T 8334-2026液化石油气和液化二甲醚钢瓶定期检验与评定
- 动力配电系统施工方案-技术交底
- 2025-2026学年七年级上学期期中考试语文试题(无答案)
- 2025青岛水务集团有限公司招聘(89人)笔试历年备考题库附带答案详解
评论
0/150
提交评论