【文档】C语言程序设计----通讯录

合集下载

c语言程序设计之通讯录

c语言程序设计之通讯录

#include<stdio.h>#include<string.h>#include<stdlib.h>int mimayanzheng(char a[],char b[]);void luru(int n);void xinxichaxun(struct txl_type mulu[],int n); int chazhao(struct txl_type mulu[],int n,int j); void xiugai(struct txl_type mulu[],int n);void shanchu(struct txl_type mulu[],int n);void paixu(struct txl_type mulu[],int n);void baocun(struct txl_type mulu[],int n);struct txl_type{ char name[15] ;char sex[5] ;char age[4] ;char phnum[15] ;char email[20];char adr[30] ;};void main(){char a[8]="1234567",b[8];int i,j;FILE *fp;for(i=0;i<3;i++){printf("请输入密码并按回车键确认\n");if(mimayanzheng(a,b)==1){printf("密码正确,成功");printf("进入系统\n");break;}elseprintf("密码错误请重新输入\n");}if(i==3){printf("退出程序\n");goto loop;}if((fp=fopen("tx1.txt","a"))==NULL)goto loop;fclose(fp);for(;;){struct txl_type mulu[500],*p;char ch;int n;FILE *fp;fp=fopen("tx1.txt","r");n=0;p=mulu;while((ch=fgetc(fp))!=EOF){fscanf(fp,"%s%s%s%s%s%s",p->name,p->sex,p->age,p->phnum,p->email,p->adr);p++;n++;};do{printf("1.信息录入 2.信息修改 3.信息查询4信息删除5信息排序6信息保存7退出\n");scanf("%d",&j);fflush(stdin);}while(j!=1&&j!=2&&j!=3&&j!=4&&j!=5&&j!=6&&j!=7);switch(j){case 1:printf("进入信息录入系统\n");luru(n);break;case 2:printf("进入信息修改系统\n");xiugai(mulu,n);break;case 3:printf("进入信息查询系统\n");xinxichaxun(mulu,n);break;case 4:printf("进入信息删除系统\n");shanchu(mulu,n);break;case 5:printf("进入信息排序系统\n");paixu(mulu,n);break;case 6:printf("进入信息保存系统\n");baocun(mulu,n);break;case 7:goto loop;}}loop:;}mimayanzheng(char a[],char b[]){int i;scanf("%7s",b);for(i=0;i<7;i++){ if(a[i]!=b[i])return 0;}return 1;}void luru(int n){struct txl_type t;int i;FILE *fp;fp=fopen("tx1.txt","a");i=1;while(i==1){fflush(stdin);printf("请输入联系人姓名\n");scanf("%s",);fflush(stdin);printf("请输入联系人性别\n");scanf("%s",t.sex);fflush(stdin);printf("请输入联系人年龄\n");scanf("%s",t.age);fflush(stdin);printf("请输入联系人手机号\n");scanf("%s",t.phnum);fflush(stdin);printf("请输入联系人邮箱\n");scanf("%s",t.email);fflush(stdin);printf("请输入联系人地址\n");scanf("%s",t.adr);fflush(stdin);fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s", ,t.sex ,t.age ,t.phnum ,t.email,t.a dr);printf("------------------------------------------------\n");n++;printf("新增联系人成功还可以添加%d个是否继续添加?\n",(500-n));printf(" 1.是 2. 否\n");scanf("%d",&i);fflush(stdin);}printf("已有%d名联系人\n",n);printf("还可以新增%d个联系人人\n",(500-n));fclose(fp);}void xinxichaxun(struct txl_type mulu[],int n){struct txl_type *p;int k=1,j;while(k==1){p=mulu;printf("请选择:1.用姓名查找 2.用电话号码查找\n");scanf("%d",&j);fflush(stdin);chazhao(p,n,j);/*调用查找程序*/printf("\n");printf(" 查找结束,是否继续查找?\n");printf(" 1.是 2.否\n");scanf("%d",&k);fflush(stdin);}}int chazhao(struct txl_type *p,int n,int j){int i,m[10],a=0,b;char keyName[10],keyphnum[15];if(j==1){printf("请输入姓名:\n");scanf("%s", keyName);fflush(stdin);printf("查找结果:\n");for(i=0;i<n;i++){if(strcmp(keyName,p->name)==0){printf("联系人%d: name:%s age:%s phnum:%s email:%s adr:%s\n",(a+1),p->name,p->age,p->phnum,p->email,p->adr);a++;m[a]=i;}p++;}}else if(j==2){printf("请输入电话号码:\n");scanf("%s", keyphnum);fflush(stdin);printf("查找结果:\n");for(i=0;i<n;i++){if(strcmp(keyphnum,p->phnum)==0){printf("联系人%d: name:%s age:%s phnum:%s email:%s adr:%s\n",(a+1),p->name,p->age,p->phnum,p->email,p->adr);a++;m[a]=i;}p++;}}if(a==0){printf(" 该联系人不存在!\n");return i;}else{printf("共找到以上%d个联系人\n",a);printf("请选择你要找的联系人(输入该联系人序号)\n");scanf("%d",&b);}return m[b];}void xiugai(struct txl_type mulu[],int n){struct txl_type *p,k;int m,i,t,j=1;FILE *fp;p=mulu;t=chazhao(p,n,j);/*调用查找程序*/if(t>=n);else{printf("请对该联系人资料进行修改进行修改\n");printf("请输入修改后联系人姓名\n");scanf("%s",);fflush(stdin);printf("请输入修改后联系人性别\n");scanf("%s",k.sex);fflush(stdin);printf("请输入修改后联系人年龄\n");scanf("%s",k.age);fflush(stdin);printf("请输入修改后联系人手机号\n");scanf("%s",k.phnum);fflush(stdin);printf("请输入修改后联系人邮箱\n");scanf("%s",k.email);fflush(stdin);printf("请输入修改后联系人地址\n");scanf("%s",k.adr);fflush(stdin);printf("修改前联系人资料:name:%s age:%s phnum:%s email:%s adr:%s\n",mulu[t].name,mulu[t].age,mulu[t].phnum,mulu[t].email,mulu[t].adr);printf("修改后联系人资料:name:%s age:%s phnum:%s email:%s adr:%s\n",,k.age,k.phnum,k.email,k.adr);printf("是否保存对联系人的修改? 1.是 2.否\n");scanf("%d",&m);if(m==1){mulu[t]=k;if((fp=fopen("tx1.txt","w"))!=NULL){for(i=0;i<n;i++){fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s",mulu[i].name ,mulu[i].sex ,mulu[i].age , mulu[i].phnum ,mulu[i].email,mulu[i].adr);}printf("已保存修改\n");}fclose(fp);}}}void shanchu(struct txl_type mulu[],int n){struct txl_type *p;int m,i,t,j=1;FILE *fp;p=mulu;t=chazhao(p,n,j);/*调用查找程序*/if(t>=n);else{printf(" 是否删除该联系人?\n");printf(" 1.是 2.否\n");scanf("%d",&m);fflush(stdin);if(m==1){for(i=t;i<n-1;i++)mulu[i]=mulu[i+1];if((fp=fopen("tx1.txt","w"))!=NULL){for(i=0;i<n-1;i++){fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s",mulu[i].name ,mulu[i].sex ,mulu[i].age , mulu[i].phnum ,mulu[i].email,mulu[i].adr);}}printf("该联系人已删除\n");fclose(fp);}}}void paixu(struct txl_type mulu[],int n){int i,j,m;struct txl_type t;FILE *fp;printf("请选择排序方式: 1.按姓名排序 2.按年龄排序\n");scanf("%d",&m);for(i=1;i<=n-1;i++){for(j=0;j<n-i;j++){if(m==1){if(strcmp(mulu[j].name,mulu[j+1].name)==1){t=mulu[j];mulu[j]=mulu[j+1];mulu[j+1]=t;}}else if(m==2){if(strcmp(mulu[j].age,mulu[j+1].age)==1){t=mulu[j];mulu[j]=mulu[j+1];mulu[j+1]=t;}}}}printf("排序后\n");if((fp=fopen("tx1.txt","w"))!=NULL){for(i=0;i<n;i++){fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s",mulu[i].name ,mulu[i].sex ,mulu[i].age , mulu[i].phnum ,mulu[i].email,mulu[i].adr);printf("name:%-12s sex:%-2s age:%-3s phnum:%-8s email:%-5s adr:%-5s\n",mulu[i].name,mulu[i].sex,mulu[i].age,mulu[i].phnum,mulu[i].email,mulu[i].adr);}}fclose(fp);printf("排序已完成,按回车键返回主菜单\n");fflush(stdin);if(m){char a;scanf("%c",&a);}}void baocun(struct txl_type mulu[],int n){int i,m;FILE *fp;printf(" 是否将联系人名单保存至lianxiren.txt?\n");printf(" 1.是 2.否\n");scanf("%d",&m);if(m==1){if((fp=fopen("lianxiren.txt","w"))!=NULL){for(i=0;i<n-1;i++){fprintf(fp,"\n");fprintf(fp,"姓名:%-10s 性别:%-2s 年龄:%-2s 电话号码:%-10s 邮箱:%-5s 地址:%-5s",mulu[i].name ,mulu[i].sex ,mulu[i].age ,mulu[i].phnum ,mulu[i].email,mulu[i].adr);}}fclose(fp);printf(" 保存成功,按回车键返回主菜单\n");}fflush(stdin);if(m!=2){char a;scanf("%c",&a);}}。

C语言课程设计-通讯录

C语言课程设计-通讯录

内容:设计一个通讯信息管理系统,使之具有以下功能:(1)每一条记录包括姓名、单位、联系电话,家庭住址等信息。

(2)输入功能:可以一次完成若干条记录的输入。

(3)显示功能:完成全部记录的显示。

(4)查找功能:能够按姓名或单位查找记录,并显示。

(5)排序功能:按姓名进行排序。

(6)插入功能:插入一条记录。

(7)将记录存在文件中,并能进行复制。

#include "stdio.h"#include "stdlib.h"#include "string.h"/*字符串函数*/#include "ctype.h"#define M 50typedef struct /*定义数据结构*/{ char name[20];char units[30];char tele[10];}ADD_BOOK;/******以下是函数原型*******/int enter(ADD_BOOK t[]); /*输入记录*/void list(ADD_BOOK t[],int n); /*显示记录*/void search(ADD_BOOK t[],int n); /*按姓名查找显示记录*/ int delete(ADD_BOOK t[],int n); /*删除记录*/int add(ADD_BOOK t[],int n); /*插入记录*/void save(ADD_BOOK t[],int n); /*记录保存为文件*/int load(ADD_BOOK t[]); /*从文件中读记录*/void display(ADD_BOOK t[]); /*按序号查找显示记录*/void sort(ADD_BOOK t[],int n); /*按姓名排序*/void qseek(ADD_BOOK t[],int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADD_BOOK temp); /*显示单条记录*/int find(ADD_BOOK t[],int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*//******主函数开始*******/main(){ int i;ADD_BOOK adr[M]; /*定义结构体数组*/int length; /*保存记录长度*/system("CLS");for(;;){ switch(menu_select()){case 0:length=enter(adr);break;case 1:list(adr,length);break;case 2:search(adr,length);break;case 3:length=delete(adr,length);break;case 4:length=add(adr,length); break;case 5:save(adr,length);break;case 6:length=load(adr); break;case 7:display(adr);break;case 8:sort(adr,length);break; /*按姓名排序*/case 9:qseek(adr,length);break; /*快速查找记录*/case 10:copy();break;case 11:exit(0); /*如返回值为11则程序结束*/}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){ char s[80];int c;printf("按下任意键开始......\n");getch();system("CLS");printf("********************MENU*********************\n\n");printf(" 0. 输入新的项目\n");printf(" \t1. 列出内存中的数据\n");printf(" 2. 按姓名搜索记录\n");printf(" \t3. 删除一条记录\n");printf(" 4. 添加一条记录 \n");printf(" \t5. 保存到文件\n");printf(" 6. 读取文件\n");printf(" \t7. 按记录编号单条显示\n");printf(" 8. 按姓名排序 \n");printf(" \t9. 快速搜索已经排序的记录\n");printf(" 10. 复制文件到新的文件\n");printf(" \t11. 退出\n");printf("***********************************************\n");do{ printf("\n 请选择(0~11):");scanf("%s",s);c=atoi(s);//atio()的作用是把字符转换成整数;}while(c<0||c>11);return c;}/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enter(ADD_BOOK t[]){ int i,n;char *s;system("cls");printf("\n请问您想输入几条信息? \n");scanf("%d",&n);printf("请输入新的条目 \n");printf("姓名单位电话号码\n");printf("------------------------------------------------\n");for(i=0;i<n;i++){ scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);printf("----------------------------------------------\n");}return n;}/*显示记录,参数为记录数组和记录条数*/void list(ADD_BOOK t[],int n){ int i;system("CLS");printf("\n\n*******************ADD_BOOK******************\n");printf("name unit telephone\n"); printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);if((i+1)%10==0){ printf("任意键继续\n");getch();}printf("************************end*******************\n");}/*查找记录*/void search(ADD_BOOK t[],int n){ char s[20];int i;system("CLS");printf("输入要查找的姓名\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("没有这个记录\n");elseprint(t[i]);}/*显示指定的一条记录*/void print(ADD_BOOK temp){ system("CLS");printf("\n\n********************************************\n"); printf("姓名单位电话\n"); printf("------------------------------------------------\n"); printf("%-20s%-30s%-10s\n",,temp.units,temp.tele);printf("**********************end***********************\n"); }/*查找函数,参数为记录数组和记录条数以及姓名 */int find(ADD_BOOK t[],int n,char *s){ int i;for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0)return i;}return i;}/*删除函数,参数为记录数组和记录条数*/int delete(ADD_BOOK t[],int n){ char s[20];int ch=0;int i,j;printf("请输入要删除条目的姓名\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("没找到要删除的记录\n");else{ print(t[i]); /*调用自定义的输出函数显示该条记录信息*/printf("确定要删除么?(1/0)\n");scanf("%d",&ch);if(ch==1){for(j=i+1;j<n;j++) //所有记录向前移一位;{ strcpy(t[j-1].name,t[j].name);strcpy(t[j-1].units,t[j].units);strcpy(t[j-1].tele,t[j].tele);}n--;}}return n;}/*插入记录函数,参数为结构体数组和记录数*/int add(ADD_BOOK t[],int n){ ADD_BOOK temp;int i,j;char s[20];printf("请输入记录\n");printf("************************************************\n");printf("name unit telephone\n"); printf("--------------------------------------------------\n");scanf("%s%s%s",,temp.units,temp.tele);printf("------------------------------------------------\n");printf("请输入在哪里插入? \n");scanf("%s",s);i=find(t,n,s); /*调用find,确定插入位置*/for(j=n-1;j>=i;j--){ strcpy(t[j+1].name,t[j].name);strcpy(t[j+1].units,t[j].units);strcpy(t[j+1].tele,t[j].tele);}strcpy(t[i].name,);strcpy(t[i].units,temp.units);strcpy(t[i].tele,temp.tele);n++;return n;}/*保存函数,参数为结构体数组和记录数*/void save(ADD_BOOK t[],int n){ int i;FILE *fp;if((fp=fopen("record.txt","wb"))==NULL){printf("error:can not open file\n");exit(1);}printf("\n保存文件\n");fprintf(fp,"%d",n);fprintf(fp,"\r\n");for(i=0;i<n;i++){ fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);fprintf(fp,"\r\n");}fclose(fp);printf("****save success***\n");fflush(stdin);//清空内存}/*读入函数,参数为结构体数组*/int load(ADD_BOOK t[]){ int i,n;FILE *fp;if((fp=fopen("record.txt","rb"))==NULL){printf("error:can not open file\n");exit(1);}fscanf(fp,"%d",&n);for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele);fclose(fp);printf("删除成功!!!\n");return n;}/*按序号显示记录函数*/void display(ADD_BOOK t[]){ int id,n;FILE *fp;if((fp=fopen("record.txt","rb"))==NULL){printf("can not open file\n");exit(1);}printf("输入记录编号...\n");scanf("%d",&id);fscanf(fp,"%d",&n); /*从文件读入记录数*/if(id>=0&&id<n){ fseek(fp,(id-1)*sizeof(ADD_BOOK),1); //fseek()是移动文件指针到记录位置print(t[id]);printf("\r\n");}elseprintf("没有第 %d 条记录!!!\n ",id);fclose(fp);}/*排序函数,参数为结构体数组和记录数*/void sort(ADD_BOOK t[],int n){int i,j,flag;ADD_BOOK temp; /*临时变量做交换数据用*/for(i=0;i<n;i++){ flag=0; /*设标志判断是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/{flag=1;strcpy(,t[j].name);strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/ }printf("排序成功!!!\n");}/*快速查找,参数为结构体数组和记录数*/void qseek(ADD_BOOK t[],int n){ char s[20];int l,r,m;printf("\n认在查找之前,记录是否已排序!\n");printf("输入需要查找的姓名\n");scanf("%s",s);l=0;r=n-1; //折半查找法while(l<=r){ m=(l+r)/2;if(strcmp(t[m].name,s)==0){print(t[m]);return ;}if(strcmp(t[m].name,s)<0) l=m+1;else r=m-1;}if(l>r) printf("not found\n"); //}/*复制文件*/void copy(){ char outfile[20]; /*目标文件名*/int i,n;ADD_BOOK temp[M]; /*临时变量*/FILE *sfp,*tfp;system("CLS");if((sfp=fopen("record.txt","rb"))==NULL){ printf("error:can not open file\n");exit(1);}printf("输入将要输出的文件名称,例如 c:\\f1\\te.txt:\n"); scanf("%s",outfile);if((tfp=fopen(outfile,"wb"))==NULL) /*打开目标文件*/{printf("不能打开文件\n"); /*显示信息*/exit(1);}fscanf(sfp,"%d",&n); /*读出文件记录数*/fprintf(tfp,"%d",n);/*写入目标文件数*/fprintf(tfp,"\r\n"); /*写入换行符*/for(i=0;i<n;i++){ fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units, temp[i].tele);fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,temp[i].units,temp[i].tele); /*写入记录*/fprintf(tfp,"\r\n"); /*写入换行符*/}fclose(sfp); /*关闭源文件*/fclose(tfp); /*关闭目标文件*/printf("复制成功!!!\n"); /*显示复制成功*/}。

c语言课程设计通讯录

c语言课程设计通讯录

c语言课程设计通讯录好的,我可以帮助您设计一个简单的通讯录程序。

下面是一个示例代码,实现了通讯录的基本功能,包括添加联系人、显示联系人列表、查找联系人、删除联系人和修改联系人信息。

c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100 // 通讯录最大容量// 定义联系人结构体typedef struct {char name[20]; // 姓名char phone[15]; // 电话号码char email[30]; // 邮箱地址} Contact;// 定义通讯录结构体typedef struct {Contact contacts[MAX_CONTACTS]; // 联系人数组int size; // 当前联系人数量} AddressBook;// 添加联系人void add_contact(AddressBook *book) {if (book->size >= MAX_CONTACTS) {printf("通讯录已满,无法添加联系人。

\n"); return;}printf("请输入联系人姓名:");scanf("%s", book->contacts[book->size].name); printf("请输入联系人电话号码:");scanf("%s", book->contacts[book->size].phone); printf("请输入联系人邮箱地址:");scanf("%s", book->contacts[book->size].email); book->size++;printf("联系人已添加。

(完整word版)c语言程序设计通讯录管理系统

(完整word版)c语言程序设计通讯录管理系统

1.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出功能;还有就是要提供通讯录添加(个人信息包括姓名、学号、年龄、住址、电子邮件等)、删除、显示、修改等基本功能。

2。

概要设计系统总体设计是信息的输入、信息的编辑和退出.系统功能模块如下:1.添加通讯录;2.输出通讯录;3.查找通讯录;4.修改通讯录;5.删除通讯录;6.退出通讯录;3.详细设计1.通讯录里无信息,所以要添加信息.用键盘逐个输入通讯录里联系人的信息.2.输出通讯录用于让使用者观看通讯录里所有的信息.3。

查找通讯录是让使用者可以通过电话或姓名来查找通讯录里的联系人.4。

修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。

5.删除通讯录是用来按照联系人的姓名或电话来单独删除通讯录中一些不想要的联系人。

还可以集体删除通讯录中的联系人.6.退出通讯录系统。

4.主要源程序代码#include 〈stdio。

h>#include 〈stdlib.h〉#include 〈string.h>#include 〈conio。

h〉struct record{char name[20];char age[20];char phone[20];char adress[40];char number[30];char e_mail[20];}contact[500];int NO=0;FILE *fp;void mainmenu();void newrecord();void browsemenu();void searchmenu();void searchname();void searchphone();void modifymenu();void deletemenu();void deleteall();void deletesingle();void deletename();void deletephone();int loadfile();void savefile();void main(){printf(”\n\t\t :)欢迎使用通讯录管理系统beta”);printf(”\n\t\t文件导入中……请稍后……\n\n\n\n\n");system(”cls”);loadfile();while (1){mainmenu();}}void mainmenu(){char choice;system(”cls");printf("\n\t\t******************** 主菜单********************");printf("\n\t\t****************** 1-新建菜单******************”);printf(”\n\t\t******************2—浏览菜单******************”);printf(”\n\t\t****************** 3—查找菜单******************”);printf("\n\t\t******************4—修改菜单******************”);printf(”\n\t\t******************5-删除菜单******************”);printf(”\n\t\t****************** 6-退出******************");printf("\n\t\t************************************************”); printf(”\n\t\t请选择:");choice=getch();switch (choice){case '1':newrecord();break;case ’2’:browsemenu();break;case ’3’:searchmenu();;break;case '4’:modifymenu();break;case ’5’:deletemenu();break;case '6’:exit(0);default:mainmenu();}}void newrecord(){printf(”\n\t\t****************请输入联系人信息****************\n”);printf(”\n\t\t输入姓名:”);scanf(”%s”,&contact[NO]。

c语言通讯录程序(共5篇)

c语言通讯录程序(共5篇)

c语言通讯录程序(共5篇)第一篇:c语言通讯录程序C语言程序设计实践——通讯录管理系统六、程序源代码及注释#include #include #include #include #define SUM 100 #define STOP 1000typedef 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);}elsefor(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;iprintf("姓名:%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;iif(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();for(i=0;iif(strcmp(info[i].name,)==0){ printf("该姓名已存在!\n");Sleep(STOP);goto reinput_name;}reinput_tel:printf("请输入新成员的电话号码:"); gets(temp.tel);for(i=0;iif(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;iif(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;iif(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;iif(strcmp(info[i].name,ename)==0){for(j=i;jinfo[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;iprintf("%s ",info[i].name);}putchar('\n');printf("请输入需要拨号的姓名:");gets(cname);for(i=0;iif(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语言程序设计学生通讯录管理系统#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #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() { printf("\n\t\t**************** 请输入用户信息****************\n"); printf("\n\t\t输入姓名:"); scanf("%s",&student[num].name); printf("\n\t\t输入电话号码:"); scanf("%s",&student[num].phone); printf("\n\t\t输入地址:"); scanf("%s",&student[num].adress); printf("\n\t\t输入邮编:"); scanf("%s",&student[num].postcode); printf("\n\t\t输入e-mail:"); scanf("%s",&student[num].e_mail); num++; printf("\n\t\t是否继续添加?(Y/N):"); if (getch()=='y') adduser(); return(0); } list() { int i; system("cls"); if(num!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;iprintf("\n\t\t姓名:%s",student[i].name); printf("\n\t\t电话:%s",student[i].phone); printf("\n\t\t地址:%s",student[i].adress); printf("\n\t\t邮编:%s",student[i].postcode); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\t\t"); if (i+1add() { int i; if ((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t文件打开失败"); } for (i=0;isave() { int j; FILE*fp; fp=fopen("student.txt","w"); if (fp==NULL) printf("can't open the file."); if(num!=0) { for(j=0;j fwrite(student,sizeof(student),1,fp); } } printf("保存成功!"); fclose(fp); return(0); }第三篇:C语言作业:学通讯录学生通讯录一、语言和环境1.实现语言:C语言。

程序设计语言课程设计--通讯录

程序设计语言课程设计--通讯录

程序设计语言课程设计报告1课程设计目的和要求基本功能:a)添加个人信息b)查询个人信息c)删除个人信息d)修改个人信息e)信息排序f)输出全部信息拓展功能:采用文件形式对通讯录进行操作,包括:g)写入文件h)读取文件创新(自拟)功能:程序实现的其它功能由个人自拟。

1.2设计要求具体说明通讯录至少应该有以下数据项:姓名,家庭住址,手机号码,邮编,E-mail。

输入信息时要检查数据项手机、邮编、E-mail的合法性,手机号码:11位数字;邮编:6位数字;E-mail:包含@字符,且@两边都非空。

对通讯录应该包含有以下操作(包括基本功能和拓展功能):a)向通讯录中添加信息;b)在通讯录中按姓名或手机号查找个人信息;c)删除通讯录中的个人信息;d)修改通讯录中的个人信息,并保存入文件;e)按不同数据项排序后列表输出通讯录中所有人的信息。

通讯录中记录的数量没有限制。

f)将通讯录中的数据写入文件和从文件读入数据。

程序启动时先从文件读入数据,如果文件中没有数据则给出提示;写入文件时有两种方式,一为覆盖所有原有的内容; 二为只将本次操作所修改的个人信息写入文件g)程序启动时先从文件读入数据,如果文件中没有数据则给出提示退出程序。

1.3设计提示定义合适的结构体类型,使用链表或数组的方式组织数据。

2通讯录概述通讯录包括能够实现添加、查询、删除、修改、排序、输出全部信息以及写入文件、读取文件。

这里的学生通讯记录为姓名、家庭地址、手机号码、邮箱、邮编。

2.1程序的基本功能a)添加个人信息b) 查询个人信息c)删除个人信息d)修改个人信息e)信息排序f)输出全部信息2.2拓展功能:g)写入文件h)读取文件3通讯录的分析通讯录程序分析如结构图所示。

3.1主程序定义结构体数组,使用循环,让程序能够通过选择进行各种操作。

3.2(主界面)输入学生信息输入学生的姓名、手机号码、家庭地址、邮箱、邮编。

每次输入学生信息时判断其合法性。

原创c语言课程设计通讯录

原创c语言课程设计通讯录

原创C语言课程设计通讯录1. 引言通讯录是一种用于存储联系人信息的工具,对于个人和组织来说,它是必不可少的。

在本篇文章中,我将介绍一个基于C语言的通讯录设计方案。

通过这个课程设计项目,我们可以学习到如何使用C语言实现基本的数据处理和文件操作。

2. 功能需求分析在设计通讯录之前,我们需要明确所要实现的功能。

根据常见的通讯录需求,以下是我们的功能设计:•添加联系人信息:通过输入姓名、手机号码、邮箱等信息,将联系人添加到通讯录中。

•删除联系人信息:根据姓名或手机号码查找并删除指定联系人。

•修改联系人信息:根据姓名或手机号码查找并修改指定联系人的信息。

•查找联系人信息:根据姓名或手机号码查找并显示指定联系人的信息。

•显示全部联系人信息:将通讯录中的所有联系人信息按照一定的格式显示出来。

•保存通讯录:将通讯录中的联系人信息保存到文件中。

3. 数据结构设计在实现通讯录的功能之前,我们需要设计合适的数据结构来存储联系人信息。

考虑到联系人的信息较为复杂,并且需要支持动态增删改查的操作,我们选择使用链表来存储联系人信息。

每个节点包含姓名、手机号码、邮箱等信息,以及指向下一个节点的指针。

struct Contact {char name[50];char phone[20];char email[50];struct Contact *next;};4. 程序流程设计4.1 主菜单设计通讯录程序的主要界面是一个菜单,让用户选择不同的功能。

使用一个无限循环来保持程序一直运行,用户可以输入不同的指令来选择要执行的功能。

```c while (1) { // 显示菜单 printf(。

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统通讯录管理系统是一种常见的应用程序,用于管理个人或者组织的联系人信息。

本文将介绍一个基于C语言的通讯录管理系统的设计和实现。

一、需求分析通讯录管理系统需要满足以下功能需求:1. 添加联系人:可以添加新的联系人,包括姓名、电话号码、邮箱等信息。

2. 查找联系人:可以根据姓名或者电话号码查找已存在的联系人。

3. 删除联系人:可以根据姓名或者电话号码删除已存在的联系人。

4. 修改联系人:可以修改已存在联系人的信息,包括姓名、电话号码、邮箱等。

5. 显示所有联系人:可以显示当前通讯录中的所有联系人信息。

二、设计思路1. 数据结构:使用结构体来表示一个联系人的信息,包括姓名、电话号码、邮箱等字段。

使用数组来存储多个联系人的信息。

2. 添加联系人:通过用户输入的方式获取联系人信息,然后将联系人信息添加到联系人数组中。

3. 查找联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并显示其详细信息。

4. 删除联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并将其从数组中删除。

5. 修改联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并允许用户修改其信息。

6. 显示所有联系人:遍历联系人数组,逐个显示联系人的详细信息。

三、代码实现下面是一个简单的通讯录管理系统的C语言代码实现:```c#include <stdio.h>#include <string.h>#define MAX_CONTACTS 100typedef struct {char name[50];char phone[20];char email[50];} Contact;Contact contacts[MAX_CONTACTS];int numContacts = 0;void addContact() {printf("Enter name: ");scanf("%s", contacts[numContacts].name);printf("Enter phone number: ");scanf("%s", contacts[numContacts].phone);printf("Enter email: ");scanf("%s", contacts[numContacts].email);numContacts++;printf("Contact added successfully!\n");}void findContact() {char search[50];printf("Enter name or phone number to search: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Name: %s\n", contacts[i].name);printf("Phone: %s\n", contacts[i].phone);printf("Email: %s\n", contacts[i].email);found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void deleteContact() {char search[50];printf("Enter name or phone number to delete: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {for (int j = i; j < numContacts - 1; j++) {strcpy(contacts[j].name, contacts[j + 1].name);strcpy(contacts[j].phone, contacts[j + 1].phone);strcpy(contacts[j].email, contacts[j + 1].email);}numContacts--;printf("Contact deleted successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void modifyContact() {char search[50];printf("Enter name or phone number to modify: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Enter new name: ");scanf("%s", contacts[i].name);printf("Enter new phone number: ");scanf("%s", contacts[i].phone);printf("Enter new email: ");scanf("%s", contacts[i].email);printf("Contact modified successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void displayContacts() {printf("Contacts:\n");for (int i = 0; i < numContacts; i++) {printf("Name: %s\n", contacts[i].name); printf("Phone: %s\n", contacts[i].phone); printf("Email: %s\n", contacts[i].email); printf("\n");}}int main() {int choice;do {printf("1. Add contact\n");printf("2. Find contact\n");printf("3. Delete contact\n");printf("4. Modify contact\n");printf("5. Display all contacts\n"); printf("0. Exit\n");printf("Enter your choice: ");scanf("%d", &choice);switch (choice) {case 1:addContact();break;case 2:findContact();break;case 3:deleteContact();break;case 4:modifyContact();break;case 5:displayContacts();break;case 0:printf("Exiting...\n");break;default:printf("Invalid choice!\n");break;}} while (choice != 0);return 0;}```四、总结本文介绍了一个基于C语言的通讯录管理系统的设计和实现。

(完整word版)c语言课程设计学生通讯录管理系统

(完整word版)c语言课程设计学生通讯录管理系统

题目:学生通讯录管理系统任务说明:主要利用c语言的文件操作能力设计开发一个小型的通讯录管理系统,至少具有如下功能:①记录通讯录内的人员的学号、姓名、地址、电话号码。

②显示所有人员的信息。

③通过输入姓名查找人员信息。

④通过输入姓名查找到要删除的人员信息,然后可以进行删除。

⑤通过输入姓名查找到要修改的人员信息,然后可以进行修改。

⑥添加人员信息。

系统功能描述:本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字(只能是英文关键字进行查找)查找功能,可以对数据进行修改、删除、添加等操作。

各按钮的功能如下:查找记录:以姓名为关键字,查找并显示该记录。

若查找不到,则显示“好象没有”;添加记录:将当前记录按姓名序加入通讯录,然后显示第一条记录;修改记录:修改当前记录,显示当前记录。

姓名为关键字,不允许修改;删除记录:删除当前记录,然后显示第一条记录;第一条记录:将当前记录指针移动至首节点,若已为首节点,则不移动;前一条记录:将当前记录指针向前移动一个节点,若已为首节点,则不移动;后一条记录:将当前记录指针向后移动一个节点,若已为尾节点,则不移动;最后一条记录:将当前记录指针移动至尾节点,若已为尾节点,则不移动;加载:从文件中掉入已保存的通讯录数据;保存:保存通讯录数据;退出:退出系统;设计思路:根据要求,电话录数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。

图1 系统功能模块图软件中使用的结构体和结构体数组,如:struct callmember{char name[20];char address[20];char code[20];char callnumber[20];};对用户的信息进行保存,他们都以二进制的形式读写。

其中:char name[20];char address[20];char code[20];char callnumber[20]分别对姓名、地址、邮编、电话号码进行储存在子函数中还使用了结构体数组:struct callmember one[100];还使用了exit()、 fclose()等库函数。

C语言课程设计——通讯录

C语言课程设计——通讯录

C语言课程设计——通讯录二:功能模块描述1.数据结构由于使用静态数组需要预先估计记录数,所以先预定义一个常熟M,表示记录数,也就是数组的大小,记录联系人的信息至少应有姓名、单位、电话,所以定义每个数组元素的类型为结构体。

由于数组存储是采用顺序存放,在内存空间中占用连续空间,所以若干条记录通讯录的管理实质就是对顺序存储的线性表的管理。

结点结构如下:#define M 50Typedef struct{Char name[20];Char units[30];Char tele[10];}ADDRESS;2.main()主函数程序采用模块化设计,主函数是程序的入口,各模块独立,可分块调试,均由主函数控制调用。

控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数,同时设置一个断点,即当返回值为一定条件时运行exit()函数结束程序,以免造成死循环。

N—S图3.menu_select()主菜单直接利用输出函数printf输出字符串,在屏幕上显示一个菜单,并显示一个提示输入选项,输入0~11之间的数字,将此数字作为菜单函数的返回值返回主函数,主函数根据这个数字调用相应的功能函数。

制作简便,操作简单。

由于程序中很多地方用了字符串输入语句,会造成下一个字符不能正确读入,为了在程序调用执行了各个函数能够清晰地看到菜单,并输入新的选项,首先写了一条输出信息,printf(“press any key enter menu……\n”)表示按任何键继续,一条读字符语句getch()等待输入字符,按任何键即可进入主菜单。

读者可以将这两条语句加上注释不执行来体会它的功能。

按照所见即所得的方式直接设计输出菜单,输出字符串,达到菜单效果,将精力主要放在程序功能的实现上,利用do循环语句,一直执行scanf(“%s,s)语句,让用户输入0~11之间的数,按照字符串的形式输入,然后执c=atoi(s),将字符串转化为数字,返回主函数,如果输入范围不是0~11,则循环等待重新输入。

C语言通讯录设计

C语言通讯录设计

C语言程序设计课程设计报告信息通讯录一:设计目的1.掌握结构化程序设计的基本思想;2.熟练掌握结构及数组的设计和应用;3.了解综合系统设计的基本原理;4.提高C语言程序设计的综合应用能力。

二:基本数据结构设计一:程序功能简介1.实现通讯录系统中,添加新记录、删除记录、显示记录信息、按名字查找信息和退出系统等功能。

2.实现录入人员的编号、姓名、个人邮箱、地址、联系电话。

因此采取结构体来实现这些功能。

如下:/* 定义通讯录 */typedef struct{char num[N];char name[20];char tele[15];char add[20];char emal[15];}三:系统结构设计本系统设计的函数是由一个主函数几个子函数组成的。

系统结构设计说明了整个系统的功能模块结构以及调用关系,本设计采用自顶向下的结构化方法,将每个模块自顶向下展开。

系统功能模块图如图1所示:在该模块中,提供系统主菜单,用户通过主菜单实现添加新记录、删除记录、显示记录信息、按名字查找信息和退出系统等功能。

图1 系统功能模块图图2 主函数流程图2.菜单模块提供用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图3所示:3.输入通讯录模块将结构体数组分成几个数组分别对每个数组赋值,用for 循环对不同地址的数组分别赋值。

其流程图如图4所示:4.其流程图如图5所示:假图4 输入函数流程图图5显示函数流程图5.find函数模块find函数通过输入姓名与原通讯录中存储的姓名,两字符串的比较,找到与输入姓名相同的姓名的位置,其流程图如图6所示:图6 find函数流程图6.删除通讯录模块删除通讯录通过数组中该位置之后的数据存放位置向前移一位来实现删除功能,其流程图如图7所示:7.查找通讯录模块查找通讯录通过find函数找到所查通讯录的位置,再将该位置的通讯录信息显示出来,其流程图如图8所示:8.修改通讯录模块修改通讯录通过find函数找到所要修改通讯录位置,显示出信息,确认修改后,即可逐项修改,其流程图如图9所示:9.添加通讯录模块在存储未满的情况下,用find函数找到要添加的位置后即可逐项添加通讯录信息,其流程图如图10所示:10.退出通讯录模块在使用完通讯录后,按6键便会退出系统,其流程图如图11所示:四:测试结果图11退出函数流程图图12输入0可进行输入联系人,按1可显示全部通讯录内容,如图13所示图13在主菜单中输入3后,输入要找的姓名。

C语言程序设计报告书(手机通讯录)

C语言程序设计报告书(手机通讯录)

此处所用字符函数 “strcpy”,由于删 除联系人后,需要进 行重新编号,故选将 第“q+1”个联系人 的信息复制给第“q” 个联系人。
ห้องสมุดไป่ตู้
PPTFLY
增加功能(APPEND)
void APPEND(int j) /*添加联系人的相关信息*/ { int n; fri[j].num=j+1; printf("Number:%d\n",j+1); printf("Name:"); scanf("%s",fri[j].name); printf("Kind:"); scanf("%s",fri[j].classify); printf("Telephone:"); scanf("%s",fri[j].telephone); printf("Mail:"); scanf("%s",fri[j].mail); }
c语言程序设计报告书手机通讯录c语言通讯录程序设计c语言程序设计报告书c语言通讯录课程设计c语言通讯录程序通讯录管理系统c语言c语言通讯录c语言通讯录代码用c语言编写通讯录c语言通讯录源代码
PPTFLY
C语言程序设计报告
报告人:曾强 学号:05311130 专业:工程力学
通讯录管理系统(A级)
模拟手机通讯录管理系统,初始通讯录信息由文本文件
if(i=20)
printf("\nThe room is full");break; case 2:SHOW(fri);getch();break; case 3:DIAL(fri);getch();break; case 4:CORRECT(fri);getch();break; case 5:DELETE(fri[i]);getch();break; case 6:exit(0); }

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统通讯录管理系统文档⒈引言本文档旨在提供C语言程序设计通讯录管理系统的详细说明和操作指南。

该系统可用于管理个人或组织的通讯录信息,包括联系人姓名、方式号码、地质等。

⒉系统需求⑴硬件需求●一台支持C语言编程的计算机●充足的内存和存储空间⑵软件需求●C编译器(例如gcc)●操作系统(例如Windows、Linux)⒊功能设计⑴添加联系人●输入联系人姓名、方式号码、地质等信息●将联系人信息储存到通讯录中⑵修改联系人信息●根据姓名或其他唯一标识查找联系人●修改联系人的姓名、方式号码、地质等信息⑶删除联系人●根据姓名或其他唯一标识查找联系人●从通讯录中删除指定的联系人⑷查找联系人●根据姓名或其他关键词查找联系人●显示与关键词匹配的联系人列表⑸显示所有联系人●显示通讯录中的所有联系人信息⒋系统设计⑴数据结构●通讯录联系人结构体:包含姓名、方式号码、地质等字段⑵主要函数●addContact:用于添加联系人信息到通讯录●editContact:用于修改指定联系人的信息●deleteContact:用于删除指定联系人●searchContact:用于根据关键词查找联系人●displayAllContacts:用于显示所有联系人信息⒌界面设计●该系统无GUI界面,通过命令行界面与用户交互⒍使用说明⑴安装●安装C编译器和操作系统,确保系统满足软硬件需求⑵编译和运行●使用C编译器将源代码编译为可执行文件●运行可执行文件以启动通讯录管理系统⑶操作指南●运行系统后,根据命令行提示进行相应的操作●可通过输入数字或关键词来执行不同的功能⒎附件本文档无附件。

⒏法律名词及注释⑴未指明的法律名词及注释,均按照通用法律理解解释。

C语言程序课设通讯录

C语言程序课设通讯录

C语言程序课设通讯录1 问题描述通讯录是人们日常生活中经常要用到的通讯管理工具,它以文件的方式保存用户录入的数据,并提供查询的功能供用户查询和使用通讯录信息。

在本节中我们将介绍一个用C语言实现的简易通讯录管理系统,它支持基本的录入、删除、查找、修改和文件读写功能。

程序中涉及大量基本块和指针的操作,结构体和共用体数据结构的定义、使用,以及文件的读写、定位等。

2 功能分析通讯录要求实现最基本的功能,包括录入、删除、查找和修改,为此需要首先定义记录项的格式,其基本属性包括姓名、性别、联系电话、电子邮件等。

作为简易通讯录,目前仅考虑英文姓名、地址数据输入,不支持中文。

功能:1、录入:操作添加一条新的记录项;2、删除:删除一条已经存在的记录项;3、修改:改变记录项的一个或多个属性,并用新的记录项覆盖已经存在的记录项;4、查找:根据用户输入的属性值查找符合条件的记录项。

依据某一属性是否可以唯一地确定一条记录项,可以将属性区分为主属性和非主属性。

对非主属性上的查找可能返回多条记录项。

为了区分,系统可以在数据录入时为每个记录项自动分配一个记录编号,这样就可以实现所有项的精确查找。

通讯录数据以文件形式存储在磁盘上,因此在程序运行中需要对文件进行读取操作。

编程人员可以根据实际需要自己定义文件的存储格式,在数据读写时必须精确定位,以免破坏文件的正确性。

除此之外,程序中还要不停处理用户的输入,对输入数据的容错性进行检查,可以保证通讯录数据的合法性,避免恶意和非恶意的操作对用户数据的破坏。

3 开发工具的介绍本软件采用开发工具为C语言。

C语言是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,且具有强大的功能。

许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。

用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。

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

一、设计任务书1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。

4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;二、本组课题设计一个通讯录管理系统三、程序功能简介该程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。

四、主体内容1、设计分析1.1问题提出本人计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式1.2本系统涉及的知识点本系统涉及到所学过的知识点有:编译预处理,函数,循环结构,循环结构,数组,结构体,指针,文件等1.3功能要求1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编2、能根据需要随时在通讯录中添加联系人3、能根据联系人的名字查找他的详细联系方式4、能根据需要修改某联系人的联系方式5、能删除某特定联系人的所有联系方式2、程序结构流程图这里只附部分模块流程图:(1)系统的界面如图1所示(下图)图1 系统的菜单选项2.2、删除模块流程图:如图(2)图(2)删除模块流程图3.各模块的功能及程序说明3.1各模块的功能:* Main模块:根据选单内容实现调用函数* Delete模块:删除通讯录中某人的信息,其程序如下* list模块:显示通讯录中的所有记录3.2程序说明:(1)Main函数/******主函数开始*******/main(){int i;person p[M];int length; /*保存记录长度*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu())()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=create(p);break;case 1:list(p,length);break; /*显示全部记录*/case 2:search(p,length);break; /*查找记录*/case 3:length=delete(p,length);break; /*删除记录*/case 4:length=add(p,length); break; /*插入记录*/case 5:exit(0); /*如返回值为5则程序结束*/}}}(2) Delete函数/*删除函数,参数为记录数组和记录条数*/int delete(person t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s); /*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/ else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/strcpy(t[j-1].street,t[j].street); /*将后一条记录的街道拷贝到前一条*/strcpy(t[j-1].city,t[j].city); /*将后一条记录的城市拷贝到前一条*/strcpy(t[j-1].provience,t[j].provience); /*将后一条记录的省份拷贝到前一条*/strcpy(t[j-1].num,t[j].num); /*将后一条记录的邮编拷贝到前一条*/}n--; /*记录数减1*/}}return n; /*返回记录数*/}(3)List函数/*显示记录,参数为记录数组和记录条数*/void list(person t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units,t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch();/*压任意键继续*/}printf("************************end*******************\n");}4、试验结果『含输入数据和输出结果』通过很多次的实验,本程序(源程序在程序清单中)终于可以正常运行,任何一项功能都能顺利实现5、设计体会以前不曾做过课程设计,因此在做课程设计时遇到了很大的困难,首先是在编写程序时,用的时间很长,并且经过多次运行都不能成功。

上学年我的C语言学的也是很不错的,对于比较简单的程序都能很容易的编写下来,在编写这个程序时才发现自己的能力还很不行,知识储备还很贫乏。

我觉得循环结构比较难,数组的应用还不很灵活。

但经过这些天的辛苦实践,认真踏实的获取新知识,积极的提高自己的上机操作能力,不断的吸取经验和教训,终于使自己的各项能力都有了很大的提高。

俗话说:“学得越深才会发现自己不明白的地方越多”,确实如此,如将在我的印象中以前只把C语言比作小溪,那么现在C语言已经成为海洋,当我认认真真的做完课程设计才发现C语言竟是如此的神秘,如此具有魅力。

通过C语言这套工具,我们可以设计出各种各样我们需要的东西,可以根据自己的需要,把我们的生活改造得更完美。

虽然C语言比较难,但我一定会知难而上,我会更刻苦的学习他,我将带着这套法宝开创出更美好的明天在这次C语言课程设计中我深刻的体会到了合作的重要性,有时候自己犯错误了,但由于自己老是容易受老思想的束缚,很难找到出错的原因,而让别人帮忙查找则要容易得多。

并且多于较大的程序,一个人很难完成,将任务分开则更容易操作。

五、附录(程序清单)#include "stdio.h"#include "stdlib.h"#include "string.h"#include "ctype.h"#define M 50typedef struct{char name[20];char units[30];char tele[10];char street[20];char city[20];char provience[20];char num[20];}person;int create(person t[]);void list(person t[],int n);void search(person t[],int n);int delete(person t[],int n);int add(person t[],int n);int find(person t[],int n,char *s) ;int menu();main(){int i;person p[M];int length;clrscr();for(;;){switch(menu()){case 0:length=create(p);break;case 1:list(p,length);break;case 2:search(p,length);break;case 3:length=delete(p,length);break;case 4:length=add(p,length); break;case 5:exit(0);}}}menu(){char s[80];int c;gotoxy(1,25);printf("press any key into menu......\n");getch();clrscr();gotoxy(1,1);printf("********************MENU*********************\n\n");printf(" 0. create record\n");printf(" 1. List the file\n");printf(" 2. Search record on name\n");printf(" 3. Delete a record\n");printf(" 4. add record \n");printf(" 5. Quit\n");printf("***********************************************\n");do{printf("\n create you choice(0~5):");scanf("%s",s);c=atoi(s);}while(c<0||c>5);return c;}int create(person t[]){int i,n;char *s;clrscr();printf("\nplease input num \n");scanf("%d",&n);printf("please input record \n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");for(i=0;i<n;i++){scanf("%s%s%s%s%s%s%s",t[i].name,t[i].units,t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num);printf("----------------------------------------------\n");}return n;}void list(person t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units, t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num);if((i+1)%10==0){printf("Press any key continue...\n");getch();}printf("************************end*******************\n");}void search(person t[],int n){char s[20];int i;clrscr();printf("please search name\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("not found\n");elseprint(t[i]);}print(person temp){clrscr();printf("\n\n********************************************\n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s%-20S%-20S%-20S%-20S\n",,temp.units,temp.tele,temp.str eet,temp.city,temp.provience,temp.num);printf("**********************end***********************\n");}int find(person t[],int n,char *s){int i;for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0)return i;}return i;}int delete(person t[],int n){char s[20];int ch=0;int i,j;printf("please deleted name\n");scanf("%s",s);i=find(t,n,s);if(i>n-1)printf("no found not deleted\n");else{print(t[i]);printf("Are you sure delete it(1/0)\n");scanf("%d",&ch);if(ch==1){for(j=i+1;j<n;j++){strcpy(t[j-1].name,t[j].name);strcpy(t[j-1].units,t[j].units);strcpy(t[j-1].tele,t[j].tele);strcpy(t[j-1].street,t[j].street);strcpy(t[j-1].city,t[j].city);strcpy(t[j-1].provience,t[j].provience);strcpy(t[j-1].num,t[j].num);}n--;}}return n;}int add(person t[],int n){person temp;int i,j;char s[20];printf("please input record\n");printf("************************************************\n");printf("name unit telephone street city provience num\n");printf("--------------------------------------------------\n");scanf("%s%s%s%s%s%s%s",,temp.units,temp.tele,temp.street,temp.city,temp.provienc e,temp.num);printf("------------------------------------------------\n");printf("please input locate name \n");scanf("%s",s);i=find(t,n,s);for(j=n-1;j>=i;j--){strcpy(t[j+1].name,t[j].name);strcpy(t[j+1].units,t[j].units);strcpy(t[j+1].tele,t[j].tele);strcpy(t[j+1].street,t[j].street);strcpy(t[j+1].city,t[j].city);strcpy(t[j+1].provience,t[j].provience);strcpy(t[j+1].num,t[j].num);}strcpy(t[i].name,);strcpy(t[i].units,temp.units);strcpy(t[i].tele,temp.tele);strcpy(t[i].street,temp.street);strcpy(t[i].city,temp.city);strcpy(t[i].provience,temp.provience);strcpy(t[i].num,temp.num);n++;return n;}void sort(person t[],int n){int i,j,flag;person temp;for(i=0;i<n;i++){flag=0;for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0){flag=1;strcpy(,t[j].name);strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(temp.street,t[j].street);strcpy(temp.city,t[j].city);strcpy(temp.provience,t[j].provience);strcpy(temp.num,t[j].num);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j].street,t[j+1].street);strcpy(t[j].city,t[j+1].city);strcpy(t[j].provience,t[j+1].provience);strcpy(t[j].num,t[j+1].num);strcpy(t[j+1].name,);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);strcpy(t[j+1].street,temp.street);strcpy(t[j+1].city,temp.city);strcpy(t[j+1].provience,temp.provience);strcpy(t[j+1].num,temp.num);}if(flag==0)break;}printf("sort sucess!!!\n");}。

相关文档
最新文档