![C语言课程设计报告-手机通讯录管理系统_第1页](http://file4.renrendoc.com/view/924cd93454c0f8740a67b774ec534d76/924cd93454c0f8740a67b774ec534d761.gif)
![C语言课程设计报告-手机通讯录管理系统_第2页](http://file4.renrendoc.com/view/924cd93454c0f8740a67b774ec534d76/924cd93454c0f8740a67b774ec534d762.gif)
![C语言课程设计报告-手机通讯录管理系统_第3页](http://file4.renrendoc.com/view/924cd93454c0f8740a67b774ec534d76/924cd93454c0f8740a67b774ec534d763.gif)
![C语言课程设计报告-手机通讯录管理系统_第4页](http://file4.renrendoc.com/view/924cd93454c0f8740a67b774ec534d76/924cd93454c0f8740a67b774ec534d764.gif)
![C语言课程设计报告-手机通讯录管理系统_第5页](http://file4.renrendoc.com/view/924cd93454c0f8740a67b774ec534d76/924cd93454c0f8740a67b774ec534d765.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序课程设计报告--通讯录管理系统姓名:谢骏学院:珠宝学院学号:20231002649班级:141082一课程设计目的和内容概述1.目的:加深对《C语言》课程所学知识的理解,进一步稳固C语言编程方法。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。2.内容:设计一个简易的通讯录管理系统。该题目要求在熟练掌握C语言的根本知识:数据类型〔整形、实型、字符型、指针、数组、结构等〕;运算类型〔算术运算、逻辑运算、自增自减运算、赋值运算等〕;程序结构〔顺序结构、判断选择结构、循环结构〕;大程序的功能分解方法〔即函数的使用〕等。进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等。其中结构体,函数的调用,算法的设计是尤为重要的。二题目通讯录管理系统。[问题描述]
该系统模拟通讯录管理系统,实现对中的通讯录进行管理
[根本要求]
要能提供以下几种功能:
(1)查看功能:选择此功能时,列出以下三类选择:
A:办公类
B:个人类
C:商务类
(2)中选中某类时,显示出此类所有数据中的姓名和号码
(3)添加数据功能:能录入新数据,每个结点包括:姓名,号码,分类(可能选项有:w为办公类p为个人类b为商务类),电子邮件。。
(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。三程序设计1.总体设计首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。然后利用模块来分别实现程序的各个功能。各个模块用函数来实现。在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。最后将输入的文件保存在文件里,以便重复使用。2.详细设计根据功能需要建立显示,添加,查看,删除,修改,保存五个模块。在模块中通过调用各个函数来实现功能。详细设计如下:〔1〕构建结构体,写入文件FILE*fp;inti;structaddress{chara[40];//email地址};structffriend{intnum;charname[20];charkind[20];longtelephone;structaddressaddress;}friends[50];voidLoad(){intj;longk;fp=fopen("friend.txt","a+");//翻开文件friend.txtif(fp!=NULL){for(i=1;i<50;i++){j=fgetc(fp);if(j==EOF)//判断是否到了文件尾return;k=i-1;fseek(fp,k*sizeof(structffriend),SEEK_SET);fread(&friends[i],sizeof(structffriend),1,fp);//从文件中读取一条记录}}else{fp=fopen("friend.txt","w");i=1;}〔2〕构造函数与模块构造显示模块,增加模块,删除模块,修改模块,查询模块。程序如下:voidShow(intj){system("cls");//实现分屏操作的函数printf("\n\n\t编号-Nnumber:%3d",friends[j].num);printf("\n\t姓名-Name:%-20s",friends[j].name);printf("\n\t性别-kind:%s",friends[j].kind);printf("\n\t联系-Telephone:%-13ld",friends[j].telephone);printf("\n\temail-address:%-40s",friends[j].address.a);}voidAppend(intj){system("cls");friends[j].num=j;printf("\n\t\t\t序号-Number:%d",j);printf("\n\t\t\t姓名-Name:");scanf("%s",friends[j].name);printf("\t\t\t类别-kind:");scanf("%s",&friends[j].kind);printf("\t\t\t联系-telephone:");scanf("%ld",&friends[j].telephone);{printf("号码不合法!请重新输入:");scanf("%ld",&friends[j].telephone);}printf("\t\t\temail-Address:");scanf("%s",friends[j].address.a);getchar();}voidDelete(){intk;intj;system("cls");printf("\n\tDelete序号-Number:");scanf("%d",&k);if(k<=i){for(j=k;j<i+1;j++)/*插入位置后的元素顺序后移*/{strcpy(friends[j].name,friends[j+1].name);/*交换元素内容*/strcpy(friends[j].kind,friends[j+1].kind);friends[j].telephone=friends[j+1].telephone;strcpy(friends[j].address.a,friends[j+1].address.a);}i--;}else{printf("输入的序号太大!");}}voidModify(intj){system("cls");Append(j);}voidSave(){inti,j;system("cls");printf("\n\n\t\t请耐心等待,信息正在保存!\n");printf("\n\n\n\n\t\t\tSaving");for(i=0;i<20;i++){Sleep(300);printf(".");}printf("\n\n信息已经保存成功!\n");fp=fopen("friend.txt","w");for(j=1;j<=i;j++){fwrite(&friends[j],sizeof(structffriend),1,fp);}fclose(fp);}〔3〕主函数调用各个模块用switch语句判断输入者要使用的功能,然后调用函数,模块实现功能。程序如下:voidmain(){intj;chara;charx;chargrade;charsearchkind[20]; charsearchname[20];i--;system("cls");do{printf("\n\n\t\t\t=========================================\n");printf("\t\t\t\t通讯录\n");printf("\t\t\t\t功能选择\n");//输出主界面printf("\t\t\t=========================================\n");printf("\t\t\tA.查看*\n");printf("\t\t\tB.增添*\n");printf("\t\t\tC.删除*\n"); printf("\t\t\tD.查询*\n");printf("\t\t\tE.修改*\n");printf("\t\t\tF.保存*\n");printf("\t\t\t=========================================\n");printf("\t\t\n请选择(Choice)\n\n\t\t注:输入a~h或A~H的字母:");scanf("%c",&grade);switch(grade)//用switch判断使用者要选择的功能{case'a':case'A':j=0;while(getchar()!=0x1b&&j<=i){Show(j++);printf("\n\n请按回车键继续!");}while(getchar()==0x1b||j>i){printf("\n\t空文档,无任何记录-EmptyNote\n");printf("\n\n请按回车键继续!");getchar();break;}printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'b':case'B':while(i<=50){i++;Append(i);printf("\t是否继续增加?(y/n)");a=getchar(); if(a=='n')break;}if(i==51)printf("\n\t文档已满,无法增加记录-notefull");printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");getchar();break;case'c':case'C':Delete();if(i<1)printf("\n没有记录-Norecords\n");printf("\n\n请按回车键继续!");getchar();getchar();printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'd':case'D':system("cls");printf("\n\t请输入要查询记录的相关类别:p.个人类b.商务类w.办公类");scanf("%s",searchkind);for(j=0;j<=i;j++){if(strcmp(searchkind,friends[j].kind)==0){Show(j);}}getchar();break;case'e':case'E':printf("\n\t请输入要修改记录的相关姓名:");gets(searchname);scanf("%s",searchname);for(j=0;j<=i;j++){if(strcmp(searchname,friends[j].name)==0){Modify(j);}}if(i<1){printf("\n没有您所要修改的记录-Norecords");printf("\n请按回车键继续!");getchar();getchar();}printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'f':case'F':system("cls");Save();getchar();printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;default:printf("\n\t输入有误,请输入正确的序列号!");printf("\n请按回车键继续!");getchar();printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");}}while(1);}上述三局部实现整个程序的功能。四程序源代码#include<stdlib.h>#include<string.h>#include<conio.h>#include<stdio.h>#include<dos.h>#include<windows.h>#include<time.h>voidMenu();FILE*fp;inti;structaddress{chara[40];};structffriend{intnum;charname[20];charkind[20];longtelephone;structaddressaddress;}friends[50];voidLoad(){intj;longk;fp=fopen("friend.txt","a+");if(fp!=NULL){for(i=1;i<50;i++){j=fgetc(fp);if(j==EOF)return;k=i-1;fseek(fp,k*sizeof(structffriend),SEEK_SET);fread(&friends[i],sizeof(structffriend),1,fp);}}else{fp=fopen("friend.txt","w");i=1;}system("cls");}voidShow(intj){system("cls");printf("\n\n\t编号-Nnumber:%3d",friends[j].num);printf("\n\t姓名-Name:%-20s",friends[j].name);printf("\n\t性别-kind:%s",friends[j].kind);printf("\n\t联系-Telephone:%-13ld",friends[j].telephone);printf("\n\temail-address:%-40s",friends[j].address.a);}voidAppend(intj){system("cls");friends[j].num=j;printf("\n\t\t\t序号-Number:%d",j);printf("\n\t\t\t姓名-Name:");scanf("%s",friends[j].name);printf("\t\t\t类别-kind:");scanf("%s",&friends[j].kind);printf("\t\t\t联系-telephone:");scanf("%ld",&friends[j].telephone);{printf("号码不合法!请重新输入:");scanf("%ld",&friends[j].telephone);}printf("\t\t\temail-Address:");scanf("%s",friends[j].address.a);getchar();}voidDelete(){intk;intj;system("cls");printf("\n\tDelete序号-Number:");scanf("%d",&k);if(k<=i){for(j=k;j<i+1;j++){strcpy(friends[j].name,friends[j+1].name);strcpy(friends[j].kind,friends[j+1].kind);friends[j].telephone=friends[j+1].telephone;strcpy(friends[j].address.a,friends[j+1].address.a);}i--;}else{printf("输入的序号太大!");}}voidModify(intj){system("cls");Append(j);}voidSave(){inti,j;system("cls");printf("\n\n\t\t请耐心等待,信息正在保存!\n");printf("\n\n\n\n\t\t\tSaving");for(i=0;i<20;i++){Sleep(300);printf(".");}printf("\n\n信息已经保存成功!\n");fp=fopen("friend.txt","w");for(j=1;j<=i;j++){fwrite(&friends[j],sizeof(structffriend),1,fp);}fclose(fp);}voidmain(){intj;chara;charx;chargrade;charsearchkind[20]; charsearchname[20];i--;system("cls");do{printf("\n\n\t\t\t=========================================\n");printf("\t\t\t\t通讯录\n");printf("\t\t\t\t功能选择\n");printf("\t\t\t=========================================\n");printf("\t\t\tA.查看*\n");printf("\t\t\tB.增添*\n");printf("\t\t\tC.删除*\n"); printf("\t\t\tD.查询*\n");printf("\t\t\tE.修改*\n");printf("\t\t\tF.保存*\n");printf("\t\t\t=========================================\n");printf("\t\t\n请选择(Choice)\n\n\t\t注:输入a~h或A~H的字母:");scanf("%c",&grade);switch(grade){case'a':case'A':j=0;while(getchar()!=0x1b&&j<=i){Show(j++);printf("\n\n请按回车键继续!");}while(getchar()==0x1b||j>i){printf("\n\t空文档,无任何记录-EmptyNote\n");printf("\n\n请按回车键继续!");getchar();break;}printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'b':case'B':while(i<=50){i++;Append(i);printf("\t是否继续增加?(y/n)");a=getchar(); if(a=='n')break;}if(i==51)printf("\n\t文档已满,无法增加记录-notefull");printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");getchar();break;case'c':case'C':Delete();if(i<1)printf("\n没有记录-Norecords\n");printf("\n\n请按回车键继续!");getchar();getchar();printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;case'd':case'D':system("cls");printf("\n\t请输入要查询记录的相关类别:p.个人类b.商务类w.办公类");//增添查询按列号的scanf("%s",searchkind);for(j=0;j<=i;j++){if(strcmp(searchkind,friends[j].kind)==0){Show(j);}}getchar();break;case'e':case'E':printf("\n\t请输入要修改记录的相关姓名:");gets(searchname);scanf("%s",searchname);for(j=0;j<=i;j++){if(strcmp(searchname,friends[j].name)==0){Modify(j);}}if(i<1){printf("\n没有您所要修改的记录-Norecords");printf("\n请按回车键继续!");getchar();getchar();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球印刷柔性电池行业调研及趋势分析报告
- 最标准的房屋装修合同范本
- 贷款融资居间合同
- 车辆订购合同范本年
- 宣传片协议合同
- 2025域名收购合同范文
- 灭火器买卖合同
- 幼儿园聘用保育员合同模板
- 2025非专利项目技术转让合同
- 江西省十校协作体2024-2025学年高三上学期第一次联考语文含答案
- 充电桩知识培训课件
- 2025年七年级下册道德与法治主要知识点
- 2025年交通运输部长江口航道管理局招聘4人历年高频重点提升(共500题)附带答案详解
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版)解读
- 偏瘫足内翻的治疗
- 药企质量主管竞聘
- 信息对抗与认知战研究-洞察分析
- 手术室专科护士工作总结汇报
- 2025届高三听力技巧指导-预读、预测
- 苏州市2025届高三期初阳光调研(零模)政治试卷(含答案)
- 2024年安徽省初中学业水平考试中考数学试卷(真题+答案)
评论
0/150
提交评论