通讯录C语言程序设计报告书

  • 格式:doc
  • 大小:270.00 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实践的目的和要求

加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力.

二、内容

在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等);

运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用以及文件的读写操作等.

三、实验任务:通讯录

设计要求:实现菜单设计,使用数据文件保存和修改,应用结构体和指针

功能要求:通讯录信息生成,存储,查询,修改,插入,删除,打印等.

四、设计思路

1.通讯录的主要信息包括:编号,姓名,性别,联系电话.住址,邮编.

2.用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Show函

数来显示打印信息,用Data_Sreach函数来查找信息,用Data_Insert函数来插入信

息,用Data_Alter 函数来修改信息,用Data_Delete函数来删除信息,用Data_Save

函数来保存信息,用Exit函数来退出通讯录.

3.小组分工,每个人分配几个函数,按情况进行分配任务.

五、程序代码

#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("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"); /*数据删除*/ printf(" 7.Address Book data Save\n"); /*数据保存*/ printf(" 0.Exit\n"); /*退出*/ printf(" ======================\n");

printf( " Please chioce 0-7 \n\n");

}

int Data_check(int k,char ID[5]) /*检查通讯录中是否存在相同ID或ID输入格式错误*/ {

int j;

if(ID[0]=='0')

k=1;

for(j=0;ID[j]!='\0';j++)

{

if(ID[j]>'9'||ID[j]<'0')

k++;

}

for(j=0;j

{

if(strcmp(ID,friends[j].num)==0)

k++;

}

return k;

}

void Data_Input() /*数据输入函数*/ {

char yes_no='1';

char ID[5];

int k=0;

if(i>=50)

printf("\n\n Storage full!\n\n");

if(i<50)

{

printf("

************************************************************************\n"); printf(" ******************* Add Address Book Information

***********************\n");

printf("

************************************************************************\n"); printf("

************************************************************************\n");

}

for(;i<50;i++)

{

do

{

switch(yes_no)

{

case'1': /*如果输入为'1',则进行数据输入*/ printf(" ****** No.(4) Name(10) Sex(M/F) Phone(11) Address(25)

Zip_Code(10)*******\n");

scanf("%s%s%s%s%s%s",ID,friends[i].name,friends[i].sex,friends[i].phone,friends [i].address,friends[i].post_num);

Data_check(k,ID);

while(Data_check(k,ID)>0) /*检查输入的ID是否已存在,如果存在重新输入*/ {

printf("The No. already exists Or The No. isn't correct, please re-enter\n");

scanf("%s",ID);

Data_check(k,ID);