# include "stdio.h"
# include"stdlib.h"
# include"string.h"
# define N 20
typedef struct
{
char kind[20];
int score;
char name[10];
char num[15];
char email[20];
char age[8];
char adds[20];
}Person;
Person pe[80];
int menu_select()
{
char c;
do{
system("cls");
printf("\t\t *****通讯录***** \n");
printf("\t\t┌───────┐\n");
printf("\t\t│1. 注册│\n");
printf("\t\t│2. 登陆│\n");
printf("\t\t│3. 添加记录│\n");
printf("\t\t│4. 显示记录│\n");
printf("\t\t│5. 查询记录│\n");
printf("\t\t│6. 修改记录│\n");
printf("\t\t│7. 删除记录│\n");
printf("\t\t│8. 拨号│\n");
printf("\t\t│9. 保存记录│\n");
printf("\t\t│0. 退出程序│\n");
printf("\t\t└───────┘\n");
printf("\t\t请您选择(0-9):");
c=getchar();
}while(c<'0'||c>'9');
return(c-'0');
}
void CHS()
{
Person per[3]={
{"A",11,"wang","12","34654","vhyrdb","bfhvjgk"},
{"B",22,"li","13","45647","dvgfyug","vbkhkgt"},
{"c", 33,"hu","14","65765","dygvtrh","gvyufgb"}
};
FILE *fp;
fp=fopen("shuju.dat","wb");
fwrite(per,sizeof(Person),3,fp);
fclose(fp);
}
void zhuce( )
{
FILE *fp;
if((fp=fopen("mima.dat","wb"))==NULL)
{
printf("cannot open file!\n");
exit(0);
}
int sign=1;
int k=1;
int j,i=1;
int m=1;
int len=0;
char code1[N],code2[N],user[N];
printf("用户名仅限于字母");
while(m!=0)
{
printf("\n输入用户名\n");
getchar();
gets(user);
len=strlen(user);
for(j=0;j { if(!((user[j]>='a'&&user[j]<='z')||(user[j]>='A'&&user[j]<='Z'))) { m=1; } else m=0; } } printf("密码权限仅限数字或字母"); while(k!=0) { printf("输入密码\n"); gets(code1); len=strlen(code1); for(j=0;j { if(!((code1[j]>='a'&&code1[j]<='z')||(code1[j]>='A'&&code1[j]<='Z')||(code1[j]>='0'&&code 1[j]<='9'))) { k=1; } else k=0; } } while(sign!=0) { printf("再输入一次密码\n"); gets(code2); if(!strcmp(code1,code2)) { printf("注册成功\n"); sign=0; } else { sign=1; printf("密码出错,与第一次不符"); i++; } if(i>3) { printf("\n你已经超过2次输错密码,已无法输入,再见"); break; } } fputs(user,fp); fputs(code1,fp); fclose(fp); } void denglu( ) { int i=0; char user[N]; FILE *fp; if((fp=fopen("mima.dat","rb"))==NULL) { printf("cannot open file!\n"); exit(0); } while(!feof(fp)) { fgets(user,20,fp); } char s1[N],s2[N]; printf("输入用户名\n"); getchar(); gets(s1); printf("输入密码\n"); gets(s2); strcat(s1,s2); if(strcmp(s1,user)==0) printf("登陆成功\n"); else printf("登陆失败\n"); fclose(fp); } int Input(Person per[],int n) { int i=0; char sign=1; while(sign!=0) { printf("\t请在以下类别选择: p.个人类b.商务类w.办公类"); scanf("%s",per[n+i].kind); printf("\t编号:"); scanf("%d",&per[n+i].score); printf("\t姓名:"); scanf("%s",per[n+i].name); printf("\t年龄:"); scanf("%s",per[n+i].age); printf("\t电话号码:"); scanf("%s",per[n+i].num); printf("\t通讯住址:"); scanf("%s",per[n+i].adds); printf("\t电子邮箱:"); scanf("%s",per[n+i].email); getchar(); printf("\n\t是否继续添加?(0,1)); scanf("%c",&sign); i++; } return(n+i); } void Display(Person per[],int n) { int i; printf("----------------------------------------------------------------------\n"); printf("分类编号姓名年龄电话号码通讯地址电子邮箱\n"); printf("----------------------------------------------------------------------\n"); for(i=1;i { printf("%-5s%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].kind,per[i-1].score,per[i-1].name, per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t-----------------------------------\n"); printf("\t"); system("pause"); printf("\t-----------------------------------\n"); } } printf("----------------------------------------------------------------------\n"); system("pause"); } void Query_a_record(Person per[],int n) { int m; system("cls"); printf("\t\n请选择查询方式:\n"); printf("\t┌──────——┐\n"); printf("\t│1------准确姓名│\n"); printf("\t│2------准确电话│\n"); printf("\t│3------模糊查询│\n"); printf("\t│4------分类查询│\n"); printf("\t│5------返回│\n"); printf("\t└──────——┘\n"); printf("请选择:"); scanf("%d",&m); while(m!=1&&m!=2&&m!=3&&m!=4&&m!=5) { printf("输入错误,请重新选择:"); scanf("%d",&m); } if(m==1) { char s[20]; int i=0; printf("\t请输入想查询的姓名:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t所属类别:%s\n",per[i].kind); printf("\t此人编号: %d\n",per[i].score); printf("\t此人年龄: %s\n",per[i].age); printf("\t电话号码: %s\n",per[i].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[i].email); } ; if(m==2) { char s[20]; int i=0; printf("\t请输入想查询的电话:"); scanf("%s",s); while(strcmp(per[i].num,s)!=0&&i if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t所属类别:%s\n",per[i].kind); printf("\t此人编号: %d\n",per[i].score); printf("\t此人姓名: %s\n",per[i].name); printf("\t此人年龄: %s\n",per[i].age); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[i].email); } ; if(m==3) { int i=0,z; system("cls"); printf("\t请选择模糊查询方式:\n"); printf("\t┌──────———┐\n"); printf("\t│1------姓名首字│\n"); printf("\t│2------号码首位│\n"); printf("\t└─────——─—┘\n"); printf("请选择:"); scanf("%d",&z); while(z!=1&&z!=2) { printf("输入错误,请重新选择:"); scanf("%d",&z); } if(z==1) { int i,j,k; int flag=0; char s[20]; printf("\t请输入想查询的姓名首字:"); scanf("%s",s); for(i=0;i { for(j=0,k=0;per[i].name[k]!='\0'&&s[j]!='\0';) { if(per[i].name[k]==s[j]) { k++; j++; } else { k++; j=0; } if(s[j]=='\0') { printf("find person match:%s\t%d\t%s\t%s\t%s\t%s\t%s\n",per[i].kind,per[i].score,per[i].name,per[i].age,per[i].num,p er[i].adds,per[i].email); flag++; } if(!flag) printf("not found!\n"); } } } if(z==2) { int i,j,k; int flag=0; char s[20]; printf("\t请输入想查询的号码首位:"); scanf("%s",s); for(i=0;i { for(j=0,k=0;per[i].num[k]!='\0'&&s[j]!='\0';) { if(per[i].num[k]==s[j]) { k++; j++; } else { k++; j=0; } if(s[j]=='\0') { printf("find person match:%s\t%d\t%s\t%s\t%s\t%s\t%s\n",per[i].kind,per[i].score,per[i].name,per[i].age,per[i].num,p er[i].adds,per[i].email); flag++; } if(!flag) printf("not found!\n"); } } } }; if(m==4) { int i,j; char searchkind[20]; printf("\n\t请输入要查询记录的相关类别: p.个人类b.商务类w.办公类"); scanf("%s",searchkind); getchar(); for(i=0;i for(j=0;j<=i;j++) { if(strcmp(searchkind,per[j].kind)==0) { printf("\t所属类别: %s\n",per[j].kind); printf("\t此人编号: %d\n",per[j].score); printf("\t此人姓名: %s\n",per[j].name); printf("\t此人年龄: %s\n",per[j].age); printf("\t电话号码: %s\n",per[j].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[j].email); printf("\n\t按回车请继续"); getchar(); } } }; } void Change(Person per[],int n) { char s[20]; int i=0; printf("\t请输入想修改的记录中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t类别:"); scanf("%s",per[i].kind); printf("\t此人编号:"); scanf("%d",&per[i].score); printf("\t姓名:"); scanf("%s",per[i].name); printf("\t年龄:"); scanf("%s",per[i].age); printf("\t电话号码:"); scanf("%s",per[i].num); printf("\t通讯住址:"); scanf("%s",per[i].adds); printf("\t电子邮箱:"); scanf("%s",per[i].email); printf("\t修改成功!"); } void bohao(Person per[],int n) { char s[20]; int i=0; system("cls"); printf("请输入要拨号的联系人姓名:\n"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i if(n==0) { printf("当前没有任何联系人信息\n\n"); system("pause"); return; } system("cls"); if(strcmp(s,"0")==0) return; else { if(strcmp(s,per[i].name)==0) printf("\n拨号成功\n\n"); else printf("\n拨号失败\n\n"); } } int Delete(Person per[],int n) { char s[20]; int i=0,j; printf("\t请输入想删除记录中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i if(i==n) { printf("\t通讯录中没有此人!\n"); return(n); } for(j=i;j { strcpy(per[j].kind,per[j+1].kind); strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t已经成功删除!\n"); return(n-1); } void save(Person pe[],int n) { int i=0; FILE *fp; fp=fopen("shuju.dat","wb"); for(i=0;i fwrite(&pe[i],sizeof(Person),1,fp); /* fprintf(fp,"******************************************通讯录******************************************\n"); fprintf(fp," 类别编号姓名年龄电话号码通讯地址电子邮箱\n"); fprintf(fp,"------------------------------------------------------------------------------------------\n"); while(i { fprintf(fp,"%-5s%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].kind,per[i].score,per[i].na me,per[i].age,per[i].num,per[i].adds,per[i].email); i++; } fprintf(fp,"------------------------------------------------------------------------------------------\n"); fprintf(fp,"***************************************共有%d条记录****************************************\n",n); fclose(fp); */ printf("\t保存成功!\n"); getchar(); } void main() { int n=0; int i; FILE * fp; if((fp=fopen("shuju.dat","rb"))==NULL) { CHS(); n=3; } else { for(i=0;!feof(fp);i++) fread(&pe[i],sizeof(Person),1,fp); n=i-1; fclose(fp); } for(;;) { switch(menu_select()) { case 1: zhuce(); system("pause"); break; case 2: denglu(); system("pause"); break; case 3: printf("\n\t添加记录到通讯录\n"); n=Input(pe,n); break; case 4: printf("\n\t显示通讯录记录表\n"); Display(pe,n); break; case 5: printf("\n\t在通讯录中查找记录\n"); Query_a_record(pe,n); printf("\t"); system("pause"); break; case 6: printf("\n\t修改通讯录中的记录\n"); Change(pe,n); printf("\t"); system("pause"); break; case 7: printf("\n\t从通讯录中删除记录\n"); n=Delete(pe,n); printf("\t"); system("pause"); break; case 8: printf("\n\t拨号功能\n"); bohao(pe,n); printf("\t"); system("pause"); break; case 9: printf("\n\t保存功能\n"); save(pe,n); printf("\t"); system("pause"); break; case 0: printf("\n\t\t谢谢使用,再见!\n"); printf("\n\t\t"); system("pause"); exit(0); } } } #include C程序课程设计报告 --手机通讯录管理系统 姓名:谢骏 学院:珠宝学院 学号:649 班级:141082 一课程设计目的和内容概述 1.目的:加深对《C语言》课程所学知识的理解,进一步巩固C语言编程方法。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。 2.内容:设计一个简易的手机通讯录管理系统。该题目要求在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等。 其中结构体,函数的调用,算法的设计是尤为重要的。 二题目 手机通讯录管理系统。 [问题描述] 该系统模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 [基本要求] 要能提供以下几种功能: (1)查看功能:选择此功能时,列出下列三类选择: A:办公类B:个人类C:商务类 (2)当选中某类时,显示出此类所有数据中的姓名和电话号码 (3)添加数据功能:能录入新数据,每个结点包括:姓名,电话号码,分类(可能选项有:w为办公类p为个人类b为商务类),电子邮件。例如:杨春商务类 当录入重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 三程序设计 1.总体设计 首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。然后利用模块来分别实现程序的各个功能。各个模块用函数来实现。在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。最后将输入的文件保存在文件里,以便重复使用。 2.详细设计 通讯录的设计 一、设计思路: 经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。以下为我的设计思路:首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应 enter ())、删除(程序中对应delete())、显示通讯录(程序中对应list())、搜索(程序中对应search())、保存(程序中对应save())、装载(程序中对应 load())。 其次,对于存储的数据结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。 二、程序源代码: #include 通讯录信息管理系统设计计算机学院计算机科学与技术专业 1.课程设计的目的 学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。 通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。 本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。 通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。 2.设计方案论证 2.1设计思路 建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息,完成通讯录的功能。主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、退出系统等功能。在主函数中可以以1、2、3、4、5、6数字键分别可以执行某个功能模块。 2.2程序设计 2.2.1根据图1定义数据类型建立函数 typedef struct { char Num; //编号 char Name[10]; //姓名 char Tel[15]; //电话号码 char Email[20]; //邮箱 char age[8]; //年龄 char adds[20]; //住址 }Person; 2.2.2主函数及其流程图 定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序 二〇〇八~ 二〇〇九学年第二学期 信息科学与工程学院 课程设计报告书 课程名称: C语言课程设计 班级: 学号: 姓名: 指导老师: 月九年二〇〇九 通讯录管理系统 一.需求分析 设计题目及要求: ◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等; ◆能够提供添加、删除和修改通讯录信息的功能; ◆能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询; ◆将通讯录保存在文件中; ◆能够按表格方式输出通讯录信息。 系统功能需求分析: 主要包含一下多种功能: 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 查询:查询通讯录记录 修改:修改通讯录记录 保存:将信息保存到文件 二.概要设计 系统功能模块图: 添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。. 显示:可以以表格形式输出所有通讯录里的记录 删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询 修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改 保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件 三.详细设计 (1).通讯录: typedef struct { char score; /*编号*/ char name[10]; /*姓名*/ char num[15]; /*号码*/ char email[20]; /*邮箱*/ char age[8]; /*年龄*/ char adds[20]; /*住址*/ }Person; void main() /*主函数*/ { int n=0; for(;;) { switch(menu_select()) #include #include void chazhao_xingming(); /*按姓名查找*/ void chazhao_dianhua(); /*按号码查找*/ void shanchu(); /*删除联系人函数*/ void shanchu_quanbu(); /*全部删除*/ void shanchu_dange(); /*单个删除*/ void xianshi(); /*号码显示*/ //程序主函数模块六 void main() /*主函数main*/ { readfile(); /*读入文件*/ while(1) /* 循环(永远进行)*/ { zhucaidan(); /*调用主菜单函数*/ } } //读取文件函数部分开始模块七 void readfile() { if((fp=fopen("c:\\通讯录.txt","r"))==NULL) /*以只读方式打开判定文件是否为空*/ { printf("\n\t\t\t 通讯录文件不存在"); /*判断结论*/ if ((fp=fopen("同通讯录.txt","w"))==NULL) /*只写方式判断*/ 一、课程设计题目及要求 题目通讯录管理系统 任务:自学C语言中相关知识,设计出通讯录管理系统。要求如下所述: ◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子 邮箱等;; ◆能够提供添加、删除和修改通讯录信息的功能; ◆能够提供按姓名或电话等查询; ◆将通讯录保存在文件中; ◆能够按表格方式输出通讯录信息。 二、系统设计方案 (一)总体框架图: 通讯录管理系统:1、录入通讯录信息 2、修改通讯录信息 3、查询通讯录信息 4、浏览通讯录信息 5、增加通讯录信息 6、推出系通讯录统 (二)模块设计 模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:录入通讯录信息 声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt" 模块三:通讯录信息的查找 声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支 模块四:通讯录信息的修改 声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块五:通讯录信息按学号排序 声明void sort()将录入通讯录信息系按升序排列,用的是“冒泡排序法”实现排序模块六:加通讯录信息 声明void insert()插入通讯录信息,先通过判断通讯录是否存在,若否则继续输入,若是跳出,重新循环 模块七:通讯录信息 声明void del()实现通讯录信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。 模块八:示学生信息 通过display()函数输出通讯录信息 模块九;存信息 通过fp=fopen("student.txt","w");写入信息 模块十:界面菜单 通过switch(num)调用,以上各函数,实现功能 三、设计详情 1.主函数 主函数设计要求简洁,只提供部分提示语和函数的调用 【程序】 太原学院计算机工程系 课程设计报告 课程名称:数据结构课程设计 姓名:苏建花 专业班级:计算机工程系网络三班 指导教师:翟婷婷 2015年12 月30日 计算机工程系课程设计报告 课程名称:C语言课程设计 课程设计题目:通讯录管理系统 班级:网络14-3班姓名:苏建花学号: 目录(参考) 1.设计目的与要求…………………………………………X 1.1题目与设计要求……………………………………X 1.2本程序涉及的知识点………………………………X 2.功能设计………………………………………………X 2.1总体设计……………………………………………X 2.2详细设计……………………………………………X 3.程序实现……………………………………………X 3.1程序实现时应考虑的问题…………………………X 3.2 XX模块核心代码…………………………………X 4.测试分析……………………………………………X 4.1 测试结果及分析…………………………………X 4.总结…………………………………………………X 参考文献………………………………………………X 1、设计目的与要求 这次课程设计的目的在于: 1.熟练的掌握C语言课程中所学的理论知识,并对其进行应用; 2.通过综合C语言的基本知识来解决实际问题; 3.加强分析和解决问题的能力; 4.提高实践动手能力,将知识化为实际成果 1.1 题目与设计要求 (1)题目:通讯录 (2)设计要求 a、建立通讯录信息,信息至少包含姓、名、电话号码、住址、分类(如同事、朋友、 同学、家人等)等。 b、该系统提供添加、删除、修改和查找功能,其中按姓名方式删除、修改,按姓名、 姓氏方式查找。 c、将通讯录保存在文件中。 d、能够输出通讯录中的信息。 1.2 本程序设计的知识点 (1)采用结构体数组。 struct Person { char a[16]; char s[16]; char d[16]; char f[24]; struct Person *next; }stu; (2)运用函数之间的调用 主函数可以调用子函数,子函数之间可以相互调用,子函数不能调用主函数,主函数可以多次调用一个子函数,也可以一次调用多个子函数。 (3)利用指针变量 struct Person *head; struct Person *p1,*p2 2 、功能设计 添加:添加通讯录记录 修改:修改通讯录记录 删除:删除通讯录记录 查找:查询通讯录记录 显示:显示通讯录记录 统计:统计通讯录数目 2.1需求分析 信息记录要存放到文件中去,因而要实现文件的输入输出操作;要实现数据的插入、删除、修改和显示功能,因而要实现插入、删除、修改和显示操作;要实现按人名或姓氏进行查询的功能,因而要提供查找操作;另外还应该提供键盘式选择菜单以实现功能选择。 C语言课程设计:通讯录管理系统 目录 一、需求分析 (2) 二、概要设计 (2) 三、详细设计 (3) 四、上机操作 (14) 五、实习心得 (19) 六、源程序 (20) 一、需求分析 具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。 (1)数据包括:人名、工作单位、电话号码和E-MAIL地址。 (2)可对记录中的姓名和电话号码进行修改。 (3)可增加和删除记录。 (4)可显示所有的保存记录。 (5)可按人名或电话号码进行查询。 [提示] 建议采用结构体数组和文件系统实现。结构体成员包括人名、工作单位、电话号码和E-MAIL地址。 根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。 二、概要设计 根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。 通讯录管理系统 修改退出 插入显示删除查询保存 三、详细设计 1、 主函数; 主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。 流程图 N Y 【程序】 int main() //主函数 { Man man[500],*pman=man;; char control; int size; printf("\t\t**********************************************\n"); //窗口初始化 printf("\t\t********** 欢迎使用通讯录管理系统! ***********\n"); printf("\t\t*--------------------------------------------*\n"); printf("\t\t* 请按回车键继续! *\n"); printf("\t\t**********************************************\n"); 开始 显示一系列功能选项 输入n ,判断是否是0~6 根据n 的值调用各功能模块函数 结束 通讯录系统的设计与实现电子科技大学电信三班傅得耕 3.1系统的需求分析 通讯录系统作为一个应用软件将为人民提供一个可以串联人与人之间的信息的一个平台。根据系统界面的提示信息对通讯录进行查询、初始化等操作。 系统功能需求分析描述如下: (1)创建联系人。 (2)显示所有联系人:显示可以进行的操作。 (3)删除联系人。 (4)查询:根据进行查询,并可显示所有关于该人的信息。(5) :退出。 3.2系统的设计 3.2.1 系统的总体设计 下面从系统的整体流程的功能模块、系统界面及数据结构进行总体设计。 (1)总体思想 本系统主要设计思想是实现通讯录系统信息的创建联系人、删除、查找等主要功能。系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解联系人的情况。 (2)系统模块结构图 根据需求分析结果,通讯录系统可以分为五大模块:创建联 系人模块、显示功能模块、查找联系人功能模块、删除联系人模块以及退出模块。 系统模块结构如图: 3.2.2 系统的概要设计 ㈠系统主菜单。 显示系统的主菜单,里面有相应的功能代码,根据选择各功能代码进入不同的界面。功能主要包括:退出系统、查询、创建显示及删除。 ㈡查询人物信息 进入此菜单功能模块,输入您要查询的图书的名字。 图书查询模块流程如图: 否是 是 重新输入 否 退出系统 3.3 测试结果 系统主界面 创建 显示系统 查询系统 删除系统 3.4 源代码 #include 开放教育 课程设计报告书 课程名称:通讯录管理系统 班级:综合邮政07秋 学号: 0 姓名:王芬 指导老师:高海东 通讯录管理系统 一.需求分析 设计题目及要求: ◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子 邮箱等; ◆能够提供添加、删除和修改通讯录信息的功能; ◆能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询; ◆将通讯录保存在文件中; ◆能够按表格方式输出通讯录信息。 系统功能需求分析: 主要包含一下多种功能: 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 查询:查询通讯录记录 修改:修改通讯录记录 保存:将信息保存到文件 二.概要设计 系统功能模块图: 添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。 显示:可以以表格形式输出所有通讯录里的记录 删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询 修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改 保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件 三.详细设计 (1).通讯录: typedef struct { char score; /*编号*/ char name[10]; /*姓名*/ char num[15]; /*号码*/ char email[20]; /*邮箱*/ char age[8]; /*年龄*/ char adds[20]; /*住址*/ }Person; 辽宁工程技术大学 高级语言程序设计(C)课程设计报告书 设计题目:电子通讯录 2013年01月 目录 一、引言…………………………………… 二、系统功能和原始数据……………………………………… 三、程序总体设计……………………………………………… 四、功能模块函数设计和调试……………………………… 五、程序清单…………………………………………………… 六、课程设计总结…………………………………………… 一、引言 通过使用C语言编程实现通讯录管理系统的基本功能,并设计了简单的界面。该程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。用到的知识点是结构体类型定义结构提数组的的定义及应用。另外还用到了大量的自定义函数。本人设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、添加等必要的功能。 二、系统功能和原始数据 2.1 原始数据 录入内容包括ID号,姓名,性别,出生日期,固定电话号码,移动电话号码,QQ号码,电子邮箱,通讯地址和邮编等。其中出生日期又包括年份,月份和日期三项。 2.2 系统功能 ●查找功能:能够提供检索除功能,他可以随心所欲的查找通讯录中任意一位 朋友的详细信息。通讯录结构中的许多项,都可以作为查找的线索,例如出生日期,邮编和姓名。 ●自动排序功能:它能提供按姓名等排序的功能 ●纪录和读盘功能:在用户结束程序时,如果做了改动操作,程序会提示用户 是否存盘。 三、程序总体设计和调试 3.1 总体设计:包括系统总体设计框架和系统功能模块图; 按出生日期查询:输入出生日期显示对应朋友资料 按邮编查询:输入邮编显示对应的朋友资料 3.2 详细设计: 1、主函数:main() 显示系统工作菜单,罗列该系统所有功能。先声明所有将会调用到的函数名。再运用选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。亮点:定义一个全局指针变量 *p和全局变量a。其中a表示当前系统中职工人数,p指向a的地址,追踪人数变化,这样在添加或者删除导致人数变化后,浏览函数display()能够正确显示出当前人数的职工信息。宏定义define N指定首次输入的职工人数,可根据不同需要随时更改。 2、输入函数:void input() c语言通讯录源代码打 印 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] #include <> #include <> #include <> #include <> struct person { char name[15]; char sex[2]; int nianling; long int youbian; char addr[50]; char celephone[22]; char homephone[22]; char company[20]; char email[40]; long int QQ; }per[500]; int num=0;2aame); if(strlen(per[num].name)>15) { printf("对不起!您的输入有误!请重新输入"); goto name; } printf("\n请输入性别:\n"); sex: scanf("%s",&per[num].sex); if(strlen(per[num].sex)==0) { printf("对不起!您的输入有误!请重新输入"); goto sex; } printf("\n请输入年龄:"); nianling: scanf("%d",&per[num].nianling); if(per[num].nianling<10||per[num].nianling>1 10) { printf("对不起!您的输入有误!请重新输入"); goto nianling; } printf("\n请输入邮编\n"); youbian: scanf("%d",&per[num].youbian); if(per[num].youbian<10000||per[num].youbia n>999999) { printf("对不起!您的输入有误!请重新输入"); goto youbian; } printf("\n请输入地址\n"); addr: scanf("%s",&per[num].addr); if(strlen(per[num].addr)>50||strlen(per[num].a ddr)<4) { printf("对不起!您的输入有误!请重新输入\n"); goto addr; } printf("\n请输入手机号码:\n"); celephone: scanf("%s",&per[num].celephone); if(strlen(per[num].celephone)!=11) { printf("对不起!您的输入有误!请重新输入\n"); goto celephone; } 说明 1、设计的目的 1)复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握;2)利用所学知识,理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;3)培养学生在项目开发中团队合作精神、创新意识及实战能力。 2、设计的任务 根据学生的实际情况,进行分组选题。主要的课程设计题目如下(学生也可自主选题): 1、图书管理系统 2、学生信息管理系统 3、学生成绩管理系统 4、学生通讯录管理系统 5、职工信息管理系统 6、设计简单的计算器 课程设计采用学生自主设计和指导老师辅导相结合的方式。 3、设计要求与设计报告 设计要求: 1、任选上述题目之一,或自选题目。 2、模块化的程序设计 3、锯齿形的程序书写格式。 4、必须通过编译连接运行 设计报告: 1、设计目的和任务 2、总体设计:包括程序设计组成框图、流程图。 3、详细设计:包括模块功能说明:函数功能、入口及出口参数说明,函数调用关系描述等。 4、调试与测试:包括调试方法,测试结果分析与讨论,测试过程中遇到的主要问题及采取的解决措施。 5、源程序清单和执行结果:清单中应有足够的注释。 设计目的和任务 (主要介绍设计的任务,为什么要设计,设计要达到什么样的目的。) 设计目的:(1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题 程序功能:(1).学生基本信息及成绩所选科目成绩的录入。 (2).基本信息的查询(分系、班级;分科目)与修改。 (3).对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率); (4).对所开课程的成绩分析(求其平均成绩,最高分和最低分); (5).对学生考试成绩进行排名; 目录 一、总体设计 (3) 二、详细设计 (4) 三、调试与测试 (5) 四、源程序清单和执行结果 (6) 五、建议和体会 (7) 六、参考文献 (8) 3.6 实例6 通讯录程序 本实例希望设计一个通讯录程序,要求实现通讯录信息的录入,并具有添加、查询、删除、显示等功能;使用结构体存储通讯录中记录信息;使用链表来实现通讯录信息的添加、删除、查询及显示等操作;通讯录程序可实现文件读写,在通讯录信息录入结束之后,可存入文件中,在下次程序运行时可将通讯录中的记录读取到程序中。通讯录程序可采用基于Win32控制台程序构建或采用基于MFC应用向导.EXE的应用程序,下面对这两种方法进行详细介绍。 3.6.1. 设计目的 1、掌握结构体的基本工作原理和工作方式。 2、熟悉结构体与链表的使用方法。 3、熟悉C语言下数据的输入与输出。 4、掌握C语言下对TXT文件的读写操作。 5、熟悉函数的设计方法及调用方法。 3.6.2. 基本要求 1、本实例要求实现对通讯录信息的查找、添加、删除、显示等功能,每个功能模块均能实现随时从模块中退出,可以通过键盘对功能进行选择,完成一个通讯录管理系统的运行。 2、要使用结构体来实现对通讯录信息的存储。 3、使用链表来实现对通讯录信息的查找、添加、删除、浏览显示。 4、使用文件对记录进行存储,程序运行时还可以从文件中读取记录。 5、系统设计完成后应实现类似下图所示界面。 3.6.3 设计结构及算法分析 在进行程序设计时,选择一种合理的数据存储结构是非常关键的。本实例根据题目要求,采用结构体来存放通讯录中的信息,并采用文件存储通讯录中的信息。 1、存储结构 本实例存储数据时,除了采用最常用的基本类型存储外,采用结构体的方式来存储通讯录中的个人信息,结构体如下所 示: struct stu { char name[20]; /*人名*/ char telephone[20]; /*电话*/ char sex[4]; /*性别*/ char company[20]; /*单位*/ struct stu *next; /*链表节点*/ }; typedef struct stu STU; 2、main()主函数 采用模块化设计,功能放在各模块函数中实现。主函数是程序的入口,在其中采用循环结构,根据用户的键盘输入,依次调用各功能函数。 3、mycreate()函数------创建链表函数 函数根据用户输入的信息,存储到结构体中,并建立链表结构,函数返回链表的头指针。链表建立完成后,可根据链表的头指针来添加后续指针。 4、myadd()函数------添加学生信息记录函数 函数根据用户输入信息,分配内存,将数据存储到结构体中,并建立新的链表节点,链接到已经建立好的链表尾部。 5、mydelete()函数------删除链表节点 广州大学物理与电子工程学院 程序与设计训练 通讯录管理系统实验报告 专业班级:电子121 设计人员:元达鹏 学号:1219200065 2013年6月24日 通讯录管理系统 一.需求分析 设计题目及需求: (1)查看功能:选择此功能时,列出下列三类选择。A 办公类 B 个人类 C 商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件。例如:杨春135******** 商务类chuny@https://www.wendangku.net/doc/b03545526.html, (3)当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 系统功能需求分析: 主要包含以下几种功能: 1.建立通讯录(建立功能) 2.删除通讯人(删除功能) 3.保存通讯录(保存功能) 4.读取通讯录文件(读取功能) 5.查找通讯人(查找功能) 6.添加通讯人(添加功能) 7.修改通讯人信息(修改功能) 8.退出通讯录系统 二.概要设计 系统功能模块图: 主菜单 建立删除保存读取查找添加修改退出 建立功能:在主菜单中输入1,进入建立功能。用户自己输入通讯录文件名,建立一个新的通讯录,便开始输入信息,一旦想结束添加,在输入姓名处输入“*”结束录入。(当录入相同的姓名和电话时,系统会告 诉你已经重复录入) 删除功能:在主菜单中输入2,进入删除功能。用户输入待删除人的姓名,系统会自动显示待删除人的信息,并且提示是否删除该通讯人。(当输 入的姓名不存在的时候,系统会告诉你此人不存在) 保存功能:在主菜单中输入3,进入保存功能。将你已经写好的通讯录保存在建立时创建的文件里面。(当保存成功后,系统会告诉你保存成功) 读取功能:在主菜单中输入4,进入读取功能。读取一个任意一个已经存在的文件,用户可以输入想要读取的文件,一旦文件读取成功,系统会告诉你文件读取成功。 查找功能:在主菜单中输入5,进入查找功能。查找方式有三种:1. 按姓名查 航空航天大学金城学院 《C语言程序设计》课程设计报告个人通讯录系统 学号:: 学号:: 日期: 目录 一、需求分析: (3) 二、程序的主要功能: (3) 三、程序运行平台: (3) 四、系统总框架图: (6) 五、程序类的说明: (6) 六、模块分析: (8) 七、比较有特色的函数: (9) 八、存在的不足与编程体会 (10) 九、程序源代码: (10) 一、需求分析 各类存储和通信电子产品都带有通讯录的功能,可以对联系人进行简单的信息管理和存储。 二、程序的主要功能 ?用户信息界面美观、简洁,采用菜单式显示功能选择; ?能够从磁盘文件输入和输出数据; ?能够对联系人信息进行增、删和改的操作; ?能够根据联系人的的拼音顺序从高到低排序; 三、程序运行平台 VC6.0 运行程序“perosnalcontact.exe”,进入登录界面如下 **************************** * * * * * 通讯录文件不存在! * * 通讯录文件已建立! * * * * * **************************** 按任意键进入主菜单 请输入您的数字选择: 一、按下任意键进入主菜单 您好! 欢迎使用通讯录! 1: 添加个人信息 2: 查询个人信息 3: 删除个人信息 4: 修改个人信息 5: 信息排序 6: 输出全部信息 7: 写入文件 8: 读取文件 9: 删除所有 0: 退出 请输入您的数字选择: 选择1进入添加信息模块: 请输入您要添加的联系人的信息: 请输入: 选择2进入查询个人信息模块: 欢迎使用查询菜单 1-按查询 2-按QQ查询 3-返回主菜单 请输入您的选择 选择3进入删除个人信息模块 删除菜单 1-删除单个 2-返回主菜单 请输入您的数字选择: 选择4.进入修改个人信息模块 1-按修改 请输入您的数字选择: 选择5.进入联系人排序模块 排序菜单 1-按排序 2-返回主菜单请输入您的数字选择: 选择6.进入输出信息模块 *************** 以下为通讯录所有信息************ ________________________________ 名字: 13213 性别: 2144444444444 手机: 44444444444 电子:44444444444 QQ:444444444 ________________________________ ************************************************ 请按任意数字键返回主菜单 选择7.进入写入文件模块 一、实践的目的和要求 加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力. 二、内容 在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等); 运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用以及文件的读写操作等. 三、实验任务:通讯录 设计要求:实现菜单设计,使用数据文件保存和修改,应用结构体和指针 功能要求:通讯录信息生成,存储,查询,修改,插入,删除,打印等. 四、设计思路 1.通讯录的主要信息包括:编号,姓名,性别,联系电话.住址,邮编. 2.用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Show函 数来显示打印信息,用Data_Sreach函数来查找信息,用Data_Insert函数来插入信 息,用Data_Alter 函数来修改信息,用Data_Delete函数来删除信息,用Data_Save 函数来保存信息,用Exit函数来退出通讯录. 3.小组分工,每个人分配几个函数,按情况进行分配任务. 五、程序代码 #includeC语言-通讯录管理系统
C语言课程设计报告—手机通讯录管理系统
通讯录的制作(数据结构C语言版)
C语言程序设计课程设计-通讯录管理系统
通讯录管理系统课程设计报告书C语言
c语言通讯录源代码
个人通讯录管理系统c语言源程序优秀版)
C语言通讯录管理系统程序代码
C语言课程设计通讯录实验报告
c语言通讯录管理系统
C语言通讯录系统课程设计报告
通讯录管理系统课程设计报告书(C语言)[1]
C语言设计报告(电子通讯录)
c语言通讯录源代码打印
通讯录管理系统(C语言)
C语言通讯录程序课程设计报告书
通讯录管理系统(C语言)—单链表
C语言程序的设计报告_个人通讯录
通讯录C语言程序设计报告书