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 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;i 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&&i { 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&&i } 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&&i 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&&i 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&&i 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&&i 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(i 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语言的很多知识都陌生了,通过参考网上的代码和同学的讲解才完成了本次编程。 因篇幅问题不能全部显示,请点此查看更多更全内容