当前位置:文档之家› 通讯录管理系统课程设计报告

通讯录管理系统课程设计报告

设计课题题目一、课程设计目的与要求1.课程设计目的(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。

(2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。

2. 课程设计要求制作一个通讯录系统。

(1)该程序具有查找、添加、修改、删除功能。

(2)通讯录包括:、、街道、城市、省、邮编等。

二、总体设计根据系统的要求,系统总体设计如图1所示。

三、详细设计1、数据结构设计#include<stdio.h> /*标准输入输出函数库*/#include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"struct date //定义一个结构体类型数组{ char name[10]; /**/char phone[12]; /**/char email[20]; /**/char QQ[20]; /*QQ*/} per[10];int menu() //主菜单选择函数2.函数说明(1) 主函数main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。

(2)四、程序清单1、头文件#include<stdio.h> /*标准输入输出函数库*/#include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"2、主函数void main() //主函数{int n=0,i;while(1){ switch (menu()){ case 1: { printf("\n\t 通讯信息录入\n"); //信息录入 n=Input(per, n);}break;case 2:printf("\n\t\t\t 通讯录记录表\n"); //显示记录Display(per,n);break;case 3:printf("\n\t保存功能\n");WritetoText(per,n); //保存数据printf("\t");system("pause"); //操作完成后进行暂停break;case 4:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(per,n); //删除记录printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(per,n); //修改数据printf("\t");system("pause");break;case 6:printf("\n\t添加记录到通讯录\n"); //添加记录n=Input(per,n);break;case 7:printf("\n\t在通讯录中查找记录\n");Query_a_record(per,n); //查找记录printf("\t");system("pause"); //从程序里调用”pause”命令break;case 0:printf("\n\t\t使用,再见!\n"); //结束程序printf("\n\t\t");system("pause");exit(0);}五、总程序和分工执行结果#include<stdio.h> /*标准输入输出函数库*/#include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"struct date //定义一个结构体类型数组{ char name[10]; /**/char phone[12];char email[20]; /**/char QQ[20];}per[10];int menu() //主菜单选择函数{ int c; //定义一个整型变量do{system("cls"); //清屏printf("\t*******通讯录*******\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 6、通讯信息增加 \n");printf("\t 7、通讯信息查询 \n");printf("\t 0. 退出 \n");printf("\t--------------------\n");printf("\t请您选择(0-7):");scanf("%d",&c);}while(c>7&&c<0);return(c);}int Input(struct date per[10],int n){ int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){ printf("\t:");scanf("%s",per[n+i].name);printf("\t:");scanf("%s",per[n+i].phone);printf("\t电子:");scanf("%s",per[n+i].email);printf("\tQQ:");scanf("%s",per[n+i].QQ);gets(x);printf("\n\t是否继续添加?(Y/N)");fflush(stdin); //清空缓存scanf("%c",&sign);i++;}return(n+i);}void writeToFile(struct date per[10],int n){ FILE *fp=NULL;int i=0;fp=fopen("phone.dat","wb");if(fp==NULL){ printf("打开文件出错!\n");exit(0);}for(i=0;i<10;i++)fwrite(&per[i],sizeof(per),1,fp); //把字节为1的信息写入文件fclose(fp);}void Display(struct date per[10],int n){ int i;printf("----------------------------------------------------------------------\n"); //格式/printf(" QQ 电子\n");printf("----------------------------------------------------------------------\n");for(i=1;i<n+1;i++){printf("%-15s%-14s%-14s%-14s\n",per[i-1].name,per[i-1].phone,per[i-1].QQ,per[i-1].email);if(i>1&&i%10==0){ printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_a_record(struct date per[10],int n){ char s[20];int i=0,j;printf("\t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return(n);}for(j=i;j<n-1;j++){ strcpy(per[j].phone,per[j+1].phone);strcpy(per[j].name,per[j+1].name);strcpy(per[j].QQ,per[j+1].QQ);strcpy(per[j].email,per[j+1].email);}printf("\t\t\t已经成功删除!\n");return(n-1);}void Query_a_record(struct date per[10],int n){ int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------ │\n");printf("\t│2------ │\n");printf("\t│3------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){ char s[20];int i=0;printf("\t请输入想查询的:");scanf("\t%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人QQ: %s\n",per[i].QQ);printf("\t: %s\n",per[i].phone);printf("\t电子: %s\n",per[i].email);} ;if(m==2){ char s[20];int i=0;printf("\t请输入想查询的:");scanf("\t%s",s);while(strcmp(per[i].phone,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人: %s\n",per[i].name);printf("\t此人QQ: %s\n",per[i].QQ);printf("\t电子: %s\n",per[i].email);} ;}void Change(struct date per[10],int n){ char s[20];int i=0;printf("\t请输入想修改的记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){ printf("\t通讯录中没有此人!\n");return;}printf(":");scanf("%s",per[i].name);printf(":");scanf("%s",per[i].phone);printf("QQ:");scanf("%s",per[i].QQ);printf("电子:");scanf("%s",per[i].email);printf("\n修改成功!");}void WritetoText(struct date per[10],int n){ int i=0;FILE *fp; //定义文件指针char filename[20]; //定义文件名printf("\t保存到文件\n"); //输入文件名if((fp=fopen("phone.dat","w"))==NULL){ printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"***************************************通讯录********************************\n");fprintf(fp," QQ 电子\n");fprintf(fp,"-----------------------------------------------------------------------------\n");while(i<n){ fprintf(fp,"%-10s\t%-3s\t%-20s\t%-20s\n",per[i].name,per[i].phone,per[i].QQ,per[i].em ail);i++;}fprintf(fp,"-------------------------------------------------------------------------\n ");fprintf(fp,"********************************共有%d条记录***************************\n",n);fclose(fp); //关闭文件printf("保存成功!\n");}void main() //主函数{ int n=0,i;while(1){ switch (menu()){ case 1: { printf("\n\t 通讯信息录入\n"); //信息录入 n=Input(per, n);}break;case 2:printf("\n\t\t\t 通讯录记录表\n"); //显示记录Display(per,n);break;case 3:printf("\n\t保存功能\n");WritetoText(per,n); //保存数据printf("\t");system("pause"); //操作完成后进行暂停break;case 4:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(per,n); //删除记录printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(per,n); //修改数据printf("\t");system("pause");break;case 6:printf("\n\t添加记录到通讯录\n"); //添加记录n=Input(per,n);break;case 7:printf("\n\t在通讯录中查找记录\n");Query_a_record(per,n); //查找记录printf("\t");system("pause");break;case 0:printf("\n\t\t使用,再见!\n"); //结束程序printf("\n\t\t");system("pause");exit(0);}}}图1 通讯录主菜单结果图2 信息录入图3 通讯信息显示图4 通讯信息保存五、调试与测试所谓程序调试是对程序的查错和排错。

相关主题