您好,欢迎访问三七文档
1581446647466指导书1《C语言程序设计》通讯录系统实训指导书实训教师:日期:1581446647466指导书2一、实践的目的和要求加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力.二、内容在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等);运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用以及文件的读写操作等.三、实验任务:通讯录设计要求:实现菜单设计,使用数据文件保存和修改,应用结构体和指针功能要求:通讯录信息生成,存储,查询,修改,插入,删除,打印等.四、设计思路1.通讯录的主要信息包括:编号,姓名,性别,联系电话.住址,邮编.2.用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Show函数来显示打印信息,用Data_Sreach函数来查找信息,用Data_Insert函数来插入信息,用Data_Alter函数来修改信息,用Data_Delete函数来删除信息,用Data_Save函数来保存信息,用Exit函数来退出通讯录.3.小组分工,每个人分配几个函数,按情况进行分配任务.五、程序代码#includestring.h/*字符函数和字符串函数*/#includeconio.h/*字符模式函数(调用getch()函数)*/#includestdio.h/*输入输出函数*/inti;structfriend/*电子通讯录结构定义*/{charnum[5];/*编号*/charname[11];/*名字*/charsex[2];/*性别*/charphone[12];/*电话*/charaddress[26];/*地址*/charpost_num[11];/*邮编*/}friends[50];FILE*fp;voidData_load()/*数据载入函数*/{intj;fp=fopen(friend.txt,r+);/*打开文件friend.txt*/1581446647466指导书3if(fp==NULL)/*判断是否存在friend.txt,如果不存在则创建*/{fp=fopen(friend.txt,w);i=0;}else{for(i=0;i50;i++){j=fgetc(fp);if(j==EOF)/*判断是否到了文件尾*/return;fseek(fp,i*sizeof(structfriend),0);fread(&friends[i],sizeof(structfriend),1,fp);/*从文件中读取一条记录*/}}}voidMenu_Select()/*显示菜单界面*/{printf(\n);printf(\n);printf(\n);printf(AddressBookManagementSystem\n);printf(\n);printf(======================\n);printf(1.AddressbookdataEntry\n);/*数据输入*/printf(2.AddressBookdataShow\n);/*数据显示*/printf(3.AddressBookdataSearch\n);/*数据查找*/printf(4.AddressBookdataAlter\n);/*数据修改*/printf(5.AddressBookdataInsert\n);/*数据插入*/printf(6.AddressBookdataDelete\n);/*数据删除*/printf(7.AddressBookdataSave\n);/*数据保存*/printf(0.Exit\n);/*退出*/printf(======================\n);printf(Pleasechioce0-7\n\n);}intData_check(intk,charID[5])/*检查通讯录中是否存在相同ID或ID输入格式错误*/{intj;if(ID[0]=='0')k=1;for(j=0;ID[j]!='\0';j++){if(ID[j]'9'||ID[j]'0')k++;}1581446647466指导书4for(j=0;ji+1;j++){if(strcmp(ID,friends[j].num)==0)k++;}returnk;}voidData_Input()/*数据输入函数*/{charyes_no='1';charID[5];intk=0;if(i=50)printf(\n\nStoragefull!\n\n);if(i50){printf(************************************************************************\n);printf(*******************AddAddressBookInformation***********************\n);printf(************************************************************************\n);printf(************************************************************************\n);}for(;i50;i++){do{switch(yes_no){case'1':/*如果输入为'1',则进行数据输入*/printf(******No.(4)Name(10)Sex(M/F)Phone(11)Address(25)Zip_Code(10)*******\n);scanf(%s%s%s%s%s%s,ID,friends[i].name,friends[i].sex,friends[i].phone,friends[i].address,friends[i].post_num);Data_check(k,ID);while(Data_check(k,ID)0)/*检查输入的ID是否已存在,如果存在重新输入*/{printf(TheNo.alreadyexistsOrTheNo.isn'tcorrect,pleasere-enter\n);scanf(%s,ID);Data_check(k,ID);1581446647466指导书5}strcpy(friends[i].num,ID);if(i49){printf(\n\nWhethertobecontinue?Y(1)/N(0)\n\n);yes_no=getch();}if(i=49)printf(\n\nStoragefull!\n\n);break;case'0':break;default:yes_no=getch();}}while(yes_no!='1'&&yes_no!='0');/*如果输入的不是'1'或'0'则重新输入*/if(yes_no=='0')/*如果输入'0'则退出输入函数*/{i++;break;}}}intThe_Size(chara[],charb[])/*比较两个ID的大小*/{intj,t;if((j=strlen(a)-strlen(b))0)t=1;if((j=strlen(a)-strlen(b))0)t=-1;if((j=strlen(a)-strlen(b))==0){if(strcmp(a,b)0)t=1;if(strcmp(a,b)0)t=-1;if(strcmp(a,b)==0)t=0;}returnt;}voidData_Show()/*数据输出函数*/{intj,k;charm;structfriendt;printf(********************************************************************\n);printf(No.NameSexPhoneAddress1581446647466指导书6Zip_Code\n);printf(********************************************************************\n);for(j=0;ji-1;j++)/*对数据进行排序*/{for(k=0;ki-1-j;k++){if(The_Size(friends[k].num,friends[k+1].num)==1){t=friends[k];friends[k]=friends[k+1];friends[k+1]=t;}}}for(j=0;ji;j++)/*数据输出*/{printf(%4s%10s%4s%11s%20s%10s\n,friends[j].num,friends[j].name,friends[j].sex,friends[j].phone,friends[j].address,friends[j].post_num);m=getch();if(m==’’)break;}printf(\n\nThereare%ddatainthebook.\n\n,i);}voidData_Search()/*数据查找函数*/{chark;intj,a,b;charID[5];charNAME[11];printf(SearchbyNo.:1\n);printf(Searchbyname:2\n);k=getch();switch(k){case'1':/*按ID查找*/a=0;printf(\n\nPleaseentertheNo.\n\n);scanf(%s,ID);for(j=0;ji+1;j++){if(strcmp(ID,friends[j].num)==0){1581446647466指导书7a++;printf(No.NameSexPhoneAddressZip_Code\n);printf(%4s%10s%4s%11s%20s%10s\n,friends[j].num,friends[j].name,friends[j].sex,friends[j].phone,friends[j].address,friends[j].post_num);}}if(a==0)printf(DonothavetofindtheNo.!\n\n);break;case'2':/*按姓名查找*/b=0;printf(\n\nPleaseentertheName\n\n);scanf(%s,NAME);for(j=0;ji+1;j++){if(strcmp(NAME,friends[j].name)==0){b++;printf(No.NameSexPhoneAddressZip_Code\n);printf(%4s%10s%4s%11s%20s%10s\n,friends[j].num,friends[j].name,friends[j].sex,friends[j].phone,friends[j].address,friends[j].post_num);}}if(b==0)printf(DonothavetofindtheName!\n\n);break;default:printf(\n\nError!\n);break;}}voidData_Insert()/*数据插入函数*/{if(i=50)printf(\n\nStoragefull!\n\n);if(i50){1581446647466指导书8charID[5];intk=0;printf(PleaseentertheNo.thatyouwanttoinsert.\n);scanf(%s
本文标题:C语言实训指导书
链接地址:https://www.777doc.com/doc-3675816 .html