您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C语言程序设计通讯录管理系统
通讯录管理系统(在visualc++6.0上运行)#includestdlib.h#includestring.h/*使用字符串函数*/#includeconio.h/*使用通过控制台进行数据输入和数据输出的函数*/#includestdio.h#includedos.h/*使用DOS函数*/inti;/*定义一个全局变量i*/structaddr/*定义通讯地址结构体*/{charpost_num[10];/*邮编*/charaddr[60];/*家庭地址*/};structbirth/*定义出生年月结构体*/{intyear;/*年份*/intmonth;/*月份*/intday;/*日期*/};structrecord1/*定义电子通讯录结构体*/{intnumber;/*序号*/charname[20];/*姓名*/charsex;/*性别*/structbirthbirth;/*出生年月*/structaddraddr;/*通信地址*/chartelephone[13];/*联系电话*/}records[50];FILE*fp;/*定义指向file类型结构体的指针变量*/voidData_Load()/*定义载入数据函数*/{intj;longk;fp=fopen(record.txt,r+t);/*打开文件record.txt,进行读写*/if(fp!=NULL)/*如果文件不为空*/{for(i=1;i50;i++){j=fgetc(fp);/*从records.txt文件读入整型数字*/if(j==EOF)/*判断是否到了文件尾*/return;/*如果到了结尾,返回*/k=i-1;fseek(fp,k*sizeof(structrecord1),SEEK_SET);/*将位置指针移到record1结构体所含字节的第k倍个字节处*/fread(&records[i],sizeof(structrecord1),1,fp);/*读取一条记录*/}}else{fp=fopen(record.txt,w);/*打开文件record.txt,只写*/i=1;}}voidData_Show(intj)/*定义显示数据函数*/{printf(\n\n\tNo:%3d\n,records[j].number);/*序号*/printf(\n\tname:%2s\n,records[j].name);/*姓名*/printf(\n\tbirthday(y/m/d):%4d%2d%2d,records[j].birth.year,records[j].birth.month,records[j].birth.day);/*打印第j个成员的出生年月日*/printf(\n\tpostcode:%-10s,records[j].addr.post_num);/*邮编*/printf(\n\taddress:%-40s,records[j].addr.addr);/*家庭地址*/printf(\n\tphone%-13s,records[j].telephone);/*联系电话*/}voidData_Input(intj)/*定义添加数据函数*/{fflush(stdin);/*清空输入缓冲区*/records[j].number=j;printf(\n\n\n\tinputNo%d,j);printf(\n\tname:);/*输入姓名*/scanf(%s,records[j].name);fflush(stdin);/*清空输入缓冲区*/printf(\tsex(m/f):);/*输入性别*/scanf(%c,&records[j].sex);printf(\t---birthday---);/*输入出生年月*/printf(\n\tyear:);scanf(%d,&records[j].birth.year);printf(\tmonth:);scanf(%d,&records[j].birth.month);printf(\tday:);scanf(%d,&records[j].birth.day);printf(\tpostcode:);/*输入邮编*/scanf(%s,records[j].addr.post_num);printf(\taddress:);/*输入家庭地址*/scanf(%s,records[j].addr.addr);printf(\tphone:);/*输入联系电话*/scanf(%s,records[j].telephone);}voidData_Save()/*定义保存函数*/{intj;fp=fopen(record.txt,w);/*打开文件record.txt,只写*/for(j=1;j=i;j++){fwrite(&records[j],sizeof(structrecord1),1,fp);/*将结构体变量records的确定个数字节输入到record.txt文件中,个数为结构体friend1所含字节数*/}}voidmain()/*主函数*/{intj,k;charch;charsearch_name[40];/*定义字符串变量*/Data_Load();/*声明载入数据函数*/i--;do{printf(*********************************MENU***************************************\n);printf(------------------------!WELLCOMETOTHESYSTEM!------------------------------);printf(\n*\tSelectFunction:*);printf(*\t1.AddNew*);printf(*\t2.Viewthedata*);printf(*\t3.Delete*);printf(*\t4.Search*);printf(*\t5.Insert*);printf(*\t6.Saveandquit*);printf(*\t7.Quit*);printf(\n********************************MENU****************************************\n);printf(\tPleasechoosetheoptionyouneed:);ch=getche();/*输入字符*/switch(ch){case'1':{intp;printf(\n\tPleaseinputthenumberofpeopleyouwanttoadd:);scanf(%d,&p);/*增加记录*/printf(\tPleasepressENTERagain);while(getch()!=0x1b&&ip){i++;Data_Input(i);printf(PleasepressEnteragaintocontinue\n);}if(i==p)printf(\n\tThedataisfull\n);}/*记录完后显示通讯录已满*/break;case'2':j=1;/*打印所有记录*/while(getch()!=0x1b&&j=i)Data_Show(j++);/*声明打印数据函数*/if(ji)printf(\n\tThesystemisend\n);/*显示记录末尾*/break;case'3':/*删除通讯录中的记录*/if(i1){printf(\n\tnorecord\n);/*显示无记录*/break;}printf(\n\tpleaseinputthenumberyouwanttodelect:);scanf(%d,&k);printf(\tsucceed!\n);for(j=k;ji;j++)/*将删除位置后的元素顺序前移,即后一数据复制到前一位置,循环操作*/{strcpy(records[j].name,records[j+1].name);records[j].sex=records[j+1].sex;records[j].birth.year=records[j+1].birth.year;records[j].birth.month=records[j+1].birth.month;records[j].birth.day=records[j+1].birth.day;strcpy(records[j].addr.post_num,records[j+1].addr.post_num);strcpy(records[j].addr.addr,records[j+1].addr.addr);strcpy(records[j].telephone,records[j+1].telephone);}i--;/*元素总数减1*/break;case'4':/*通讯录搜索功能*/printf(\n\tPleaseinputthename:);/*输入名字*/scanf(%s,search_name);/*获得名字到指针型字符串变量*/for(j=1;j=i;j++){if(strcmp(search_name,records[j].name)==0)/*比较字符串,即查看是否与记录中名字相同*/{Data_Show(j);printf(\n);/*搜索成功,打印记录结束循环*/break;}}if(ji)/*搜索失败*/printf(\n\tNoRecord);/*显示无此记录*/break;case'5':printf(\n\tInsertNo:);/*录入插入位置*/scanf(%d,&k);for(j=k+1;ji;j++)/*将插入位置后的元素顺序后移,即将其复制到后一位置,循环操作*/{strcpy(records[j].name,records[j-1].name);records[j].sex=records[j-1].sex;records[j].birth.year=records[j-1].birth.year;records[j].birth.month=records[j-1].birth.month;records[j].birth.day=records[j-1].birth.day;strcpy(records[j].addr.post_num,records[j-1].addr.post_num);strcpy(records[j].addr.addr,records[j-1].addr.addr);strcpy(records[j].telephone,records[j-1].telephone);}Data_Input(k);/*声明增加数据函数*/i++;/*将记录数目加一*/break;case'6':Data_Save();printf(\n);/*声明保存函数*/exit(0);break;/*保存后退出*/case'7':printf(\n\tsaveornot?:(y/n));ch=getch();/*获得输入字符*/if(ch=='y')Data_Save();fclose(fp);/*关闭record.txt文件*/exit(0);/*退出程序*/default:printf(Pleasechoose1-4\n);/*输入的如果不是数字1-4,让其重新输入*/}}while(1);/*每次都从第一个功能开始,循环操作*/}通讯录要求储存姓名、性别、工作单位、住宅电话、移动电话、办公电话、E-mail地址等内容。系统功能要求如下:1.通讯录中的记录按姓名排序存放,显示时每屏不超过20个记录,超过时分屏显示。2.增加某人的通讯录。3.修改某人的通讯录4.删除某人的通讯录5.按多种方式查询符合条件的信息6.用文件储存数据主程序如下:structmember{charname[15]
本文标题:C语言程序设计通讯录管理系统
链接地址:https://www.777doc.com/doc-5826127 .html