C语言程序设计实践——通讯录管理系统
六、程序源代码及注释
#include
#include
#include
#include
#define SUM 100
#define STOP 1000
typedef struct /*结构体,存放通讯录成员信息,重新定义成member型变量*/
{
char name[10];
char tel[15];
char cla[5];
char mail[20];
char qq[15];
}member;
member info[SUM]; //所有成员空间
FILE *fp; //文件指针,用于打开或保存通讯录文件
int count=0; //全局变量,用于计数已存入数量
/*------------------------------------------------------*/
int load(char filename[])//打开通讯录文件
{
member *p;
int i=0;
if((fp=fopen(filename,"rb"))==NULL)
return i;
else
{
while(!feof(fp))
{
p=(member *)malloc(sizeof(member));
if(fread(p,sizeof(member),1,fp)==1)
{
strcpy(info[i].name,p->name);
strcpy(info[i].tel,p->tel);
strcpy(info[i].cla,p->cla);
strcpy(info[i].mail,p->mail);
strcpy(info[i].qq,p->qq);
i++;
}
free(p);
}
return i;
}
}
/*-------------------------------------------------*/
void save(char filename[]) //保存通讯录文件
{
int i;
member *p;
if((fp=fopen(filename,"wb"))==NULL)
{
printf("无法保存!打开文件%s时出错\n",filename);
exit(1);
}
else
for(i=0;i { p=(member *)malloc(sizeof(member)); strcpy(p->name,info[i].name); strcpy(p->tel,info[i].tel); strcpy(p->cla,info[i].cla); strcpy(p->mail,info[i].mail); strcpy(p->qq,info[i].qq); fwrite(p,sizeof(member),1,fp); free(p); } fclose(fp); } /*------------------------------------------------*/ void display(void) //分类查看功能 { system("cls"); char dis; char way[5]; int i,j=0; choice: printf("********** 请选择查看分类***********\n"); printf("********** 1.亲友**********\n"); printf("********** 2.同学**********\n"); printf("********** 3.老师**********\n"); printf("********** 4.其他**********\n"); printf("********** 5.查看全部**********\n"); printf("********** 0.返回上一级菜单**********\n"); printf("*****************************************\n"); printf("请选择(1~5或0):"); dis=getchar(); getchar(); switch(dis) { case '1':strcpy(way,"亲友");break; case '2':strcpy(way,"同学");break; case '3':strcpy(way,"老师");break; case '4':strcpy(way,"其他");break; case '5':printf("*******全部通讯成员*******\n"); for(i=0;i printf(" 姓名:%s\n",info[i].name); printf(" 电话号码:%s\n",info[i].tel); printf(" 电子邮箱:%s\n",info[i].mail); printf(" QQ号:%s\n",info[i].qq); printf(" 分类:%s\n",info[i].cla); printf("*****************************\n"); j++; } if(j==0){ printf("************************\n"); printf("无任何通讯成员\n"); } j=0; Sleep(STOP); goto choice; break; case '0':return; break; default: printf("*************************\n"); printf(" 输入指令有误!\n"); printf("*************************\n"); Sleep(STOP); goto choice; } printf("********通讯成员之%s*******\n",way); for(i=0;i if(strcmp(info[i].cla,way)==0){ printf("**** 姓名:%s\n",info[i].name); printf("**** 电话号码:%s\n",info[i].tel); printf("**** 电子邮箱:%s\n",info[i].mail); printf("**** QQ号:%s\n",info[i].qq); printf("**** 分类:%s\n",info[i].cla); printf("**********************************\n"); j++; } } if(j==0){ printf("该分类中无通讯成员\n"); printf("******************\n"); } j=0; Sleep(STOP); goto choice; } /*-------------------------------------*/ int add(void) //增加新的成员 { member temp; int i; reinput_name: printf("请输入新成员的姓名:"); gets(https://www.sodocs.net/doc/0f16027895.html,); for(i=0;i if(strcmp(info[i].name,https://www.sodocs.net/doc/0f16027895.html,)==0){ printf("该姓名已存在!\n"); Sleep(STOP); goto reinput_name; } reinput_tel: printf("请输入新成员的电话号码:"); gets(temp.tel); for(i=0;i if(strcmp(info[i].tel,temp.tel)==0){ printf("该电话号码已存在!\n"); Sleep(STOP); goto reinput_tel; } printf("请输入新成员的电子邮箱:"); gets(temp.mail); printf("请输入新成员的QQ号:"); gets(temp.qq); printf("请输入新成员的分类:"); gets(temp.cla); info[count]=temp; count++; return count; } /*------------------------------------*/ int search(char sname[]) //查找功能 { int flag=0,i; for(i=0;i if(strcmp(info[i].name,sname)==0){ printf("*****************************\n"); printf("**** 姓名:%s\n",info[i].name); printf("**** 电话号码:%s\n",info[i].tel); printf("**** 电子邮箱:%s\n",info[i].mail); printf("**** QQ号:%s\n",info[i].qq); printf("**** 分类:%s\n",info[i].cla); printf("******************************\n"); flag=1; } return flag; } /*----------------------------------------*/ int rework(char rname[]) //修改功能 { int flag=0,i; for(i=0;i if(strcmp(info[i].name,rname)==0){ printf("*********************"); printf("请输入新的姓名:"); gets(info[i].name); printf("请输入新的电话号码:"); gets(info[i].tel); printf("请输入新的电子邮箱:"); gets(info[i].mail); printf("请输入新的QQ号:"); gets(info[i].qq); printf("请输入新的分类:"); gets(info[i].cla); printf("********************"); flag=1; } return flag; } /*-----------------------------*/ int erase(char ename[]) //删除功能 { int flag=0,i,j; for(i=0;i if(strcmp(info[i].name,ename)==0){ for(j=i;j info[j]=info[j+1]; count--; flag=1; } return flag; } /*-----------------------------*/ int call(void)//拨号功能 { int i,j,flag=0; char cname[10]; printf("**************************\n"); for(i=0;i printf("%s ",info[i].name); } putchar('\n'); printf("请输入需要拨号的姓名:"); gets(cname); for(i=0;i if(strcmp(info[i].name,cname)==0){ printf("正在拨号:"); for(j=0;info[i].tel[j]!='\0';j++){ printf("%c",info[i].tel[j]); Sleep(300); } putchar('\n'); flag=1; } return flag; } /*-----------------------*/ int main(void) //主函数 { char filename[40]; char c,save_j; int t; char s_r_e_name[10]; printf("欢迎使用通讯录系统!请输入通讯录文件的有效路径(若文件不存在则自动创建新通讯录)\n"); gets(filename); count=load(filename); system("cls"); printf(" ======================================\n"); printf(" ==========欢迎使用我的通讯录==========\n"); printf(" ============ 制作:石贵清===========\n"); begin: printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("※※\n"); printf("※通迅录※\n"); printf("※※\n"); printf("※ 1. 添加新联系人. 5. 分类显示查询. ※\n"); printf("※※\n"); printf("※ 2. 删除联系人. 6.拨出电话. ※\n"); printf("※※\n"); printf("※ 3. 查询通讯成员. 7.保存通讯文件. ※\n"); printf("※※\n"); printf("※ 4. 修改信息. 0. 关闭通迅录. ※\n"); printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("友情提醒:请在退出本程序之前按7保存通讯文件! \n"); printf("请输入您选择的操作:"); c=getchar(); getchar(); switch(c) { case '1': if(count==SUM){ printf("======= 通讯录空间已满,无法继续录入!===\n"); Sleep(STOP); goto begin; break; } t=add(); printf("===== 信息已建立,请尽快保存!=====\n"); if(t==SUM){ printf("===== 通讯录空间已满,无法继续录入!=====\n"); } Sleep(STOP); goto begin; break; case '2': if(count==0){ printf(" ========================\n"); printf("=== 通讯录中无任何成员!====\n"); printf(" ======================\n"); Sleep(STOP); goto begin; break; } printf("请输入要删除成员的姓名:"); gets(s_r_e_name); t=erase(s_r_e_name); if(!t) { printf("=================\n"); printf("==== 查无此人====\n"); printf("=================\n"); } else { printf("======================\n"); printf("======已成功删除======\n"); printf("======================\n"); } Sleep(STOP); goto begin; break; case '3': printf("请输入要查找的成员姓名:"); gets(s_r_e_name); t=search(s_r_e_name); if(!t) { printf("======================\n"); printf("===== 查无此人=======\n"); printf("======================\n"); } Sleep(STOP); goto begin; break; case '7': save(filename); printf("==============================\n"); printf("====== 保存成功!=======\n"); printf("==============================\n"); Sleep(STOP); goto begin; break; case '4': printf("请输入要修改的成员姓名:"); gets(s_r_e_name); t=rework(s_r_e_name); if(!t) { printf("======= 查无此人====\n"); } else { printf("=========================\n"); printf("==== 修改成功====\n"); } Sleep(STOP); goto begin; break; case '5': display(); Sleep(STOP); goto begin; break; case '6': t=call(); if(!t) { printf("=============================\n"); printf("====== 输入姓名错误!=======\n"); printf("============================\n"); } else { printf("=========================\n"); printf("====== 电话已经拨出=====\n"); printf("=======================\n"); } Sleep(STOP); goto begin; break; case '0': printf("是否保存数据文件?(Y:是/N:否)"); save_j=getchar(); if(save_j=='Y'||save_j=='y'){ save(filename); printf(" ====== 保存成功!=======\n"); printf("======= 感谢您的使用!再见!======\n"); } else { printf("========================\n"); printf("=== 感谢您的使用!再见!===\n"); printf("========================\n"); } exit(0); default: printf("===== 输入指令无效!===="); Sleep(STOP); goto begin; } return 0; } 通讯录的设计 一、设计思路: 经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。以下为我的设计思路:首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应 enter ())、删除(程序中对应delete())、显示通讯录(程序中对应list())、搜索(程序中对应search())、保存(程序中对应save())、装载(程序中对应 load())。 其次,对于存储的数据结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。 二、程序源代码: #include #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()和一系列的功能函数,只有通过这些函数才可实现程序 #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.主函数 主函数设计要求简洁,只提供部分提示语和函数的调用 【程序】 C语言程序设计学生通讯录管理系统 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208] #define null 0 struct record { char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; struct LinkList { struct record US; struct LinkList *next; }a; struct LinkList *head=null; int num=0; FILE *fp; int menu_select(); int adduser(); int list(); int search(); int display(); int add(); int listbyname(); int dele(); int save(); int exit(); void main() { system("cls"); for(;;) { switch(menu_select()) { case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() { char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\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. Quit\n"); printf("\t\t***********************************************\n"); do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); return a; } adduser() 目录: 课程设计任务书..................... 错误!未定义书签。目录:................................... 错误!未定义书签。 一、目的..................................................错误!未定义书签。 二、基本情况..............................................错误!未定义书签。 三、时间安排..............................................错误!未定义书签。 四、设计和调试过程规范化要求..............................错误!未定义书签。 五、设计内容和设计要求....................................错误!未定义书签。 六、考核方式..............................................错误!未定义书签。一通讯录的主要功能: .................... 错误!未定义书签。 一、问题描述: .............................................错误!未定义书签。 二、功能要求: .............................................错误!未定义书签。 三、算法提示: .............................................错误!未定义书签。 四、测试数据: .............................................错误!未定义书签。 二、课题的主要功能模块划分:............. 错误!未定义书签。 三、主要功能的实现....................... 错误!未定义书签。 一、按名字查找显示函数 void search( ) ................错误!未定义书签。 二、快速查找函数:void qseek( ) ...........................错误!未定义书签。 四、程序调试:........................... 错误!未定义书签。 五、总结................................. 错误!未定义书签。 六、源程序............................... 错误!未定义书签。机械工程学院课程设计评分表............... 错误!未定义书签。 一、实践的目的和要求 加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力. 二、内容 在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等); 运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用以及文件的读写操作等. 三、实验任务:通讯录 设计要求:实现菜单设计,使用数据文件保存和修改,应用结构体和指针 功能要求:通讯录信息生成,存储,查询,修改,插入,删除,打印等. 四、设计思路 1.通讯录的主要信息包括:编号,姓名,性别,联系电话.住址,邮编. 2.用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Show函 数来显示打印信息,用Data_Sreach函数来查找信息,用Data_Insert函数来插入信 息,用Data_Alter 函数来修改信息,用Data_Delete函数来删除信息,用Data_Save 函数来保存信息,用Exit函数来退出通讯录. 3.小组分工,每个人分配几个函数,按情况进行分配任务. 五、程序代码 #include c语言课程设计学生通讯录管理系统 文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256) 题目:学生通讯录管理系统任务说明:主要利用c语言的文件操作能力设计开发一个小型的通讯录管理系统,至少具有如下功能:①记录通讯录内的人员的学号、姓名、地址、电话号码。 ②显示所有人员的信息。 ③通过输入姓名查找人员信息。 ④通过输入姓名查找到要删除的人员信息,然后可以进行删除。 ⑤通过输入姓名查找到要修改的人员信息,然后可以进行修改。 ⑥添加人员信息。 系统功能描述: 本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字(只能是英文关键字进行查找)查找功能,可以对数据进行修改、删除、添加等操作。 各按钮的功能如下: 查找记录:以姓名为关键字,查找并显示该记录。若查找不到,则显示“好象没有”; 添加记录:将当前记录按姓名序加入通讯录,然后显示第一条记录; 修改记录:修改当前记录,显示当前记录。姓名为关键字,不允许修改; 删除记录:删除当前记录,然后显示第一条记录; 第一条记录:将当前记录指针移动至首节点,若已为首节点,则不移动; 前一条记录:将当前记录指针向前移动一个节点,若已为首节点,则不移动; 后一条记录:将当前记录指针向后移动一个节点,若已为尾节点,则不移动; 最后一条记录:将当前记录指针移动至尾节点,若已为尾节点,则不移动; 加载:从文件中掉入已保存的通讯录数据; 保存:保存通讯录数据; 退出:退出系统; 设计思路: 根据要求,电话录数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。 图1 系统功能模块图 软件中使用的结构体和结构体数组,如: struct callmember { char name[20]; char address[20]; char code[20]; char callnumber[20]; 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; } 航空航天大学金城学院 《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 语言课程综合实验设计 设计题目:同学通讯录程序设计 学院: 计算机与信息科学学院、软件学院班级:2012级教育技术学 姓名:曾雪庆 学号:222012321092022 2013年6月14日 1.题目功能分析以及整体思路 1.1整体设计思路 建立一个函数,用来添加、显示、删除、查询、修改、保存,读取和统计通讯录等信息,完成通讯录的功能。主函数采用密码,保护了通讯录数据,可以调用8个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、读取记录、统计记录、退出系统等功能。在主函数中可以以1、2、3、4、5、6、7、8、0数字键分别可以执行某个功能模块。 1.2程序设计 1.2.1根据图1定义数据类型建立函数 typedef struct { long score; /*学号*/ char name[10]; /*姓名*/ char sex[8]; /*性别*/ char adds[20]; /*工作单位*/ char num[15]; /*电话号码*/ char email[20]; /*邮箱*/ }Person; Person pe[80]; 1.2.2主函数设置密码和调用函数 主函数通过for 循环和字符比较函数可以实现密码功能,登陆成功后可以调用menu 通讯录信息管理系统 添加记录 显示记录 删除记录 保存记录 查询记录 修改记录 退出程序 读取记录 统计记录 函数。我们定义的menu 函数主要是利用switch 语句对数据进行处理,流程图如下: 开 始 选择1 Y 添加记录 选择2 Y Y Y Y Y 保存记录 修改记录 查找记录 删除记录 显示记录 选择6 选择5 选择4 选择3 N N N N N N 结 束 选择8 选择7 读取记录 统计记录 个人通讯录管理系统C语言源程序优秀版 Last revision date: 13 December 2020. #i n c l u d e 中国地质大学本科生课程论文封面 课程名称C语言程序设计 教师姓名 本科生姓名 本科生学号 本科生专业 所在院系 类别: 日期: 课程设计评语 对课程论文的评语: 平时成绩:课程论文成绩: 总成绩:评阅人签名: 注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。 目录 课程设计评语 (2) 目录 (3) 1.课程论文题目 (4) 2.程序设计思路 (4) 3.功能模块图 (5) 4.数据结构设计 (5) 5.算法设计 (5) 6.程序代码 (14) 7.程序运行结果 (14) 8.编程中遇到的困难及解决方法 (27) 9.总结心得及良好建议 (28) 10.致谢 (28) 1.课程论文题目 通讯录管理系统 要求:设计具有数据插入、修改、删除、显示和查询功能的电话簿管理系统。 ⑴数据包括:人名、工作单位、电话号码和E-mail地址。 ⑵可对记录中的姓名和电话号码进行修改。 ⑶可增加或删除记录。 ⑷可显示所有保存的记录。 ⑸可按人名或电话号码进行查询。 2.程序设计思路 根据题目的要求,程序应该采用结构体数组和文件系统实现。应该有动态的存储空间和文件输入、输出等操作功能;在程序中应该包括添加、显示、删除、查询和修改以及保存和退出的功能;另外还应提供键盘式选择菜单实现功能选择。 3.功能模块图 4.数据结构设计 整个程序中用到的数据主要是全局变量MAX 100和字符变量name[10]、addr[20]、phnum[20]、email[20]。 5.算法设计 1.主函数 主函数的设计一般比较的简单,只提供输入,功能处理和输出部分的函数调用。其中个功能模块用菜单方式选择。菜单部分也可以写成函数。 [流程图] 一课程设计要求 1通讯录要求惯例的信息结构体成员有:姓名,单位,电话,家庭住址。2程序菜单为: ************************MEUN*************************** 0.Enter record /*输入记录*/ 1.List the file /*显示全部记录*/ 2.Search record on name /*查找记录*/ 3.display record on name /*按序号显示记录*/ 4.Delete a record /*删除记录*/ 5.add record /*增加记录*/ 6.sort by name /*按姓名排序*/ 7.Quit /*退出*/ 3定义多个子函数与菜单对应: /***********以下是函数原型************/ int menu_Select(); /*主菜单函数*/ void Init();/*单链表初始化*/ void Create();/*创建单链表,输入记录*/ void List (ADDRESS t[],int n); /*显示全部记录*/ void SearchByName (ADDRESS t[],int n); /*按姓名查找*/ int Delete (ADDRESS t[],int n); /*删除记录*/ int Delete (ADDRESS t[],int n); /*删除记录*/ int Add (ADDRESS t[],int n); /*插入记录*/ void SearchByIndex (ADDRESS t[],int n); /*按序号查找显示序列 */ void Sort(ADDRESS t[],int n); /*按姓名排序*/ 二功能框图 C语言编程-通讯录 #include FILE *fp; void Data_load() /*数据载入函数*/ { int j; fp=fopen("friend.txt","r+"); /*打开文件friend.txt*/ if(fp==NULL) /*判断是否存在friend.txt,如果不存在则创建*/ { fp=fopen("friend.txt","w"); i=0; } else { for(i=0;i<50;i++) { j=fgetc(fp); if(j==EOF) /*判断是否到了文件尾*/ return; fseek(fp,i*sizeof(struct friend),0); fread(&friends[i],sizeof(struct friend),1,fp); /*从文件中读取一条记录*/ } } } void Menu_Select() /*显示菜单界面*/ { printf(" \n"); printf(" \n"); printf(" \n"); printf(" Address Book Management System \n"); printf(" \n"); printf(" ======================\n"); printf(" 1.Address book data Entry\n"); /*数据输入*/ printf(" 2.Address Book data Show\n"); /*数据显示*/ printf(" 3.Address Book data Search\n"); /*数据查找*/ printf(" 4.Address Book data Alter\n"); /*数据修改*/ printf(" 5.Address Book data Insert\n"); /*数据插入*/ printf(" 6.Address Book data Delete\n"); #include<> /*字符函数和字符串函数*/ #include<> /*字符模式函数(调用getch()函数)*/ #include<> /*输入输出函数*/ int i; struct friend /*电子通讯录 结构定义*/ { char num[5]; /*编号*/ char name[11]; /*名字*/ char sex[2]; /*性别*/ char phone[12]; /*电话*/ char address[26]; /*地址*/ char post_num[11]; /*邮编*/ }friends[50]; FILE *fp; void Data_load() /*数据载入函数*/ { int j; fp=fopen("","r+"); /*打开文件*/ if(fp==NULL) /*判断是否存在,如果不存在则创建*/ { fp=fopen("","w"); i=0; } else { for(i=0;i<50;i++) { j=fgetc(fp); if(j==EOF) /*判断是否到了文件尾*/ return; fseek(fp,i*sizeof(struct friend),0); fread(&friends[i],sizeof(struct friend),1,fp); /* 从文件中读取一条记录*/ } } } void Menu_Select() /*显示菜单界面*/ { printf(" \n"); printf(" \n"); printf(" \n"); printf(" Address Book Management System \n"); printf(" \n"); printf(" ======================\n"); printf(" book data Entry\n"); /*数据输入*/ c语言课程设计---手机通讯录管理系统 中国地质大学 本科生C语言课程论文报告 课程名称C语言课程设计 教师姓名 本科生姓名 本科生学号20101001298 本科生专业应用化学 所在院系材料与科学学院 类别: 本科生 日期: 2012年7月10日 目录 目录 (3) 1.课程论文题目 (4) 2.程序设计思路 (4) 3.功能模块图 (5) 4.数据结构设计 (14) 5.算法设计 (24) 6.程序代码 (41) 7 程序运行结果 (52) 8、编程中遇到的困难及解决方法 (41) 9.总结心得及良好建议 (41) 10.致谢 (41) 1.课程论文题目 (1)、题目名称:手机通讯录管理系统 (2)、题目要求 ①录入人员的编号、姓名、个人邮箱、地址、联系电话。 ②显示所有人员的信息。 ③通过输入姓名查找人员信息。 ④通过输入姓名查找到要删除的人员信息,然后可以进行删除,回显当前通讯录信息。 ⑤通过输入姓名查找到要修改的人员信息,然后依次进行信息修改。 ⑥添加人员信息。 2.程序设计思路 分析整个系统,根据以上的需求分析及题目要求,可将整个系统的设计分为以下五个模块:保存信息,信息输入、录入比赛结果、查询信息、退出.(每个功能模块都标注函数名称,如图1) A、需求分析:根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。 B、总体设计:根据上面的需求分析,可以将这个系统的设计分为1添加模块2显示模块3删除模块 4 查询模块 5 修改模块 6 保存模块。 C、数据结构:数据结构采用结构体数组,包括姓名,归属地,电话号 #include fgetc(fp); counter1++; } fclose(fp); counter1--; counter1/=sizeof(A); return counter1; } void shuru() { int i,counter=0,l; A a[100]; printf("原通讯录中人数有:%d人!!!\n",counter1); printf("请输入你的通讯录,例如:\t姓名通讯地址邮编联系电话\n\n最后输入“0 0 0 0回车”后结束!\n\n"); if((fp=fopen("f:\\tongxunlu.dat","ab+"))==NULL) { printf("can not open this file\n"); exit(0); } printf("如果现在想退出输入,请输0继续1\n"); scanf("%d",&l); if(l==0)xuanxiang(); else printf("请输入:"); for(i=0;;i++) { scanf("%s",&a[i].xm); scanf("%s",&a[i].dz); scanf("%s",&a[i].yb); scanf("%s",&a[i].dh); if(strcmp(a[i].xm,"0")==0)break; else counter++; } for(i=0;i通讯录的制作(数据结构C语言版)
c语言通讯录源代码
C语言程序设计课程设计-通讯录管理系统
个人通讯录管理系统c语言源程序优秀版)
C语言通讯录管理系统程序代码
C语言程序设计学生通讯录管理系统
C语言程序设计 通讯录程序
通讯录C语言程序设计报告书
c语言课程设计学生通讯录管理系统精编版
c语言通讯录源代码打印
C语言程序的设计报告_个人通讯录
C语言同学通讯录程序设计
个人通讯录管理系统C语言源程序优秀版
/*头文件*/ #include C语言课程设计--_通讯录管理系统
c语言通讯录管理系统
C语言编程-通讯录
c语言编程通讯录
c语言课程设计---手机通讯录管理系统
C语言程序通讯录完美版