搜索
您的当前位置:首页正文

C语言集中上机实验报告通讯录管理

来源:筏尚旅游网


C语言集中上机实验报告

学院: 年级: 班级: 姓名: 学号:

题目

通讯录管理

1、设一个通信录由以下几项数据信息构成: 数据项类型

姓名字符串 地址字符串 邮政编码字符串 电话号码字符串

试为通信录数据定义类型和定义通信录变量,实现功能:存取、显示、删除记录、查询记录等功能。

2、要求:界面友好,易于操作

一、 程序设计 1、 主要功能

添加:添加通讯录记录。 显示:显示通讯录记录。 删除:删除通讯录记录。 查询:查询通讯录记录。 保存:将信息保存到文件。

2、 数据类型定义

typedefstruct { char score; /*编号*/ char name[10]; /*姓名*/ char num[15]; /*号码*/ char email[20]; /*邮箱*/ char age[8]; /*年龄*/ char adds[20]; /*住址*/ }Person;

3、 函数的定义

intmenu_select()

int Input(Person per[],int n)

void Display(Person per[],int n) intDelete_a_record(Person per[],int n) voidQuery_a_record(Person per[],int n) voidWritetoText(Person per[],int n)

4、 每个函数模板可实现的功能

 添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子

   

邮箱后,会提示是否继续添加。

显示:可以以表格形式输出所有通讯录里的记录

删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询

保存:输入文件名(带后缀名,如.txt)后,即可将通讯录信息保存到文件

二、 流程图

主函数main 增加记录到通讯录显示信息Case2 删除信息Case1 Case3 查询个人信息保存信息Case5 Case4 While语句

For语句 Strcmpstrcpy函数调用 调用while语句 Fprintf语句

三、程序代码

#include #include #include

typedefstruct {

char score; /*编号*/ char name[15]; /*姓名*/ char num[15]; /*号码*/ char adds[20];

/*住址*/

/*邮编*/

char post[15];

}Person;

char qq[20];

/*QQ号*/

Person pe[1000]; intmenu_select() {

char c; do{

system(\"cls\");

printf

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

printf(\"\ ***************欢迎进入******************* \\n\");

printf(\"\ *----重庆邮电大学通信与信息工程学院2010级学生

信息管理系统----* \\n\"); printf

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

printf (\" 添加个人信息:1\\n\"

\" 显示个人信息:2\\n\" \" 删除个人信息:3\\n\" \" 查询个人信息:4\\n\" \" 保存个人信息:5\\n\" \" 退出系统:0\\n\");

printf

(\"\***************************************************************\\n\"); }

int Input(Person per[],int n) { int i=0;

charsign,x[10];

printf(\"\\请选择(0-5):\"); c=getchar(); }while(c<'0'||c>'5'); return(c-'0');

while(sign!='n'&&sign!='N') {

printf(\"\编号:\");

scanf(\"\%d\ printf(\"\姓名:\");

scanf(\"\%s\printf(\"\手机号码:\"); scanf(\"\%s\ printf(\"\通讯地址:\"); scanf(\"\%s\

printf(\"\邮编:\"); }

return(n+i); }

gets(x);

printf(\"\\n\是否继续添加?(Y/N)\"); scanf(\"\%c\ i++;

scanf(\"\%s\printf(\"\QQ号:\"); scanf(\"\%s\

void Display(Person per[],int n) { int i;

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

printf(\" * --- 编号姓名电话号码通讯地址邮编 QQ号-- *\\n\");

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

for(i=1;iprintf(\"\%-5d%-10s%-13s%-15s%-8s%-15s\\n\[i-1].name,per[i-1].num,per[i-1].adds,per[i-1].post,per[i-1].qq); /*对长度的定义*/

if(i>1&&i%10==0) {

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

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

}

}

printf(\"\***************************************************************\\n\"); system(\"pause\"); }

intDelete_a_record(Person per[],int n) {

char s[20]; int i=0,j;

printf(\"\请输入想删除记录中的名字:\"); scanf(\"%s\

while(strcmp(per[i].name,s)!=0&&ifor(j=i;jprintf(\"\通讯录中没有此人!\\n\"); return(n);

{

strcpy(per[j].num,per[j+1].num); /*将后一

个人的信息替代所删除人的信息*/

strcpy(per[j].name,per[j+1].name); strcpy(per[j].adds,per[j+1].adds);

strcpy(per[j].post,per[j+1].post); }

printf(\"\\\已经成功删除!\\n\"); return(n-1); }

voidQuery_a_record(Person per[],int n) { int m;

printf(\"\*****************\\n\"); printf(\"\ 请选择查询方式:\\n\"); printf(\"\*****************\\n\"); printf(\"\ 姓名:1 \\n\"); printf(\"\ 电话:2 \\n\");

strcpy(per[j].qq,per[j+1].qq); per[j].score=per[j+1].score;

printf(\"\ 地址:3 \\n\"); printf(\"\ 邮编:4 \\n\"); printf(\"\ QQ号:5 \\n\"); printf(\"\ 返回:6 \\n\"); printf(\"\*****************\\n\"); printf(\"\请选择:\"); scanf(\"%d\

while(m!=1&&m!=2&&m!=3&&m!=4&&m!=5&&m!=6) { } if(m==1) {

char s[20]; int i=0;

printf(\"\请输入想查询的姓名:\"); scanf(\"\%s\

while(strcmp(per[i].name,s)!=0&&iprintf(\"输入错误,请重新选择:\"); scanf(\"%d\

}

printf(\"\对不起!通讯录中没有此人!\\n\"); return;

printf(\"\编号: %d\\n\printf(\"\姓名: %s\\n\ printf(\"\电话号码: %s\\n\ printf(\"\通讯地址: %s\\n\

printf(\"\邮编: %s\\n\ } ; if(m==2) {

char s[20]; int i=0;

printf(\"\请输入想查询的电话号码:\"); scanf(\"\%s\

while(strcmp(per[i].num,s)!=0&&iprintf(\"\对不起!通讯录中没有此人!\\n\"); return;

printf(\"\QQ号: %s\\n\

}

printf(\"\编号: %d\\n\printf(\"\姓名: %s\\n\ printf(\"\电话号码: %s\\n\ printf(\"\通讯地址: %s\\n\

printf(\"\邮编: %s\\n\ } ; if(m==3) {

char s[20]; int i=0;

printf(\"\请输入想查询的地址:\"); scanf(\"\%s\

while(strcmp(per[i].adds,s)!=0&&iprintf(\"\对不起!通讯录中没有此人!\\n\"); return;

printf(\"\QQ号: %s\\n\

printf(\"\编号: %d\\n\

printf(\"\姓名: %s\\n\ printf(\"\电话号码: %s\\n\ printf(\"\通讯地址: %s\\n\

printf(\"\邮编: %s\\n\ } ; if(m==4) {

char s[20]; int i=0;

printf(\"\请输入想查询的邮编:\"); scanf(\"\%s\

while(strcmp(per[i].post,s)!=0&&iprintf(\"\编号: %d\\n\printf(\"\姓名: %s\\n\

printf(\"\对不起!通讯录中没有此人!\\n\"); return;

printf(\"\QQ号: %s\\n\

printf(\"\电话号码: %s\\n\ printf(\"\通讯地址: %s\\n\

printf(\"\邮编: %s\\n\ } ; if(m==5) {

char s[20]; int i=0;

printf(\"\请输入想查询的QQ号:\"); scanf(\"\%s\

while(strcmp(per[i].qq,s)!=0&&iprintf(\"\编号: %d\\n\printf(\"\姓名: %s\\n\ printf(\"\电话号码: %s\\n\ printf(\"\通讯地址: %s\\n\printf(\"\对不起!通讯录中没有此人!\\n\"); return;

printf(\"\QQ号: %s\\n\

printf(\"\邮编: %s\\n\ printf(\"\QQ号: %s\\n\

} ; }

voidWritetoText(Person per[],int n) { int i=0;

FILE *fp; 定义文件指针*/

char filename[20]; 义文件名*/

printf(\"\保存到文件\\n\"); 入文件名*/

printf(\"\请输入所保存的文件名:\"); scanf(\"\%s\

if((fp=fopen(filename,\"w\"))==NULL) { printf(\"\无法打开文件\\n\");

system(\"pause\");

/*/*定/*输 }

return;

fprintf(fp,\"******************************************通讯录******************************************\\n\");

fprintf(fp,\" * 编号姓名电话号码通讯地址邮编 QQ号* \\n\");

fprintf(fp,\"------------------------------------------------------------------------------------------\\n\");

/*fprintf函数与scanf函数相仿,都是格式化读写函数,读写对象是磁盘文件*/ while(ifprintf(fp,\"%-3d\%-6s\%-13s\%-20s\%-8s\%-20s\\n\core,per[i].name,per[i].num,per[i].adds,per[i].post,per[i].qq); }

fprintf(fp,\"------------------------------------------------------------------------------------------\\n\");

fprintf(fp,\"***************************************有

%d

共录

i++;

****************************************\\n\ fclose(fp); /*

关闭文件*/

printf(\"保存成功!\\n\"); }

void main() /*主函数*/ { int n=0; for(;;) { switch(menu_select()) { case 1:

printf(\"\\n\

/*添加记录*/ n=Input(pe,n); break;

case 2:

printf(\"\\n\\\

/*显示记录*/

Display(pe,n);

通讯录记录表\\n\"); \\n\");

break; case 3:

printf(\"\\n\从通讯录中删除记录\\n\"); n=Delete_a_record(pe,n);

/*

删除记录*/ printf(\"\\"); system(\"pause\"); break;

case 4:

printf(\"\\n\在通讯录中查找个人信息\\n\");

Query_a_record(pe,n);

查找记录*/ printf(\"\\"); system(\"pause\"); break;

case 5:

printf(\"\\n\保存功能\\n\"); /*

WritetoText(pe,n); /*

保存数据*/

case 0:

printf(\"\\n\\Thank you!\\n\"); /*printf(\"\\"); system(\"pause\"); break;

结束程序*/ } }

三、 各功能的效果

1初始界面: ○

printf(\"\\n\\\"); system(\"pause\"); exit(0); }

2添加个人信息:○

3显示个人信息 ○

4删除个人信息 ○

<没有记录>

<有记录>

5查询个人信息 ○

6保存个人信息 ○

四、 心得体会

通过本次编程对一些简单的运用加深了了解,因为很久没有编程了,对C语言的很多知识都陌生了,通过参考网上的代码和同学的讲解才完成了本次编程。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top