C语言程序设计报告书.doc_第1页
C语言程序设计报告书.doc_第2页
C语言程序设计报告书.doc_第3页
C语言程序设计报告书.doc_第4页
C语言程序设计报告书.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 实践的目的和要求 加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力.二、 内容在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等);运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用以及文件的读写操作等.三、 实验任务:通讯录 设计要求:实现菜单设计,使用数据文件保存和修改,应用结构体和指针 功能要求:通讯录信息生成,存储,查询,修改,插入,删除,打印等.四、 设计思路1. 通讯录的主要信息包括:编号,姓名,性别,联系电话.住址,邮编.2. 用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Show函数来显示打印信息,用Data_Sreach函数来查找信息,用Data_Insert函数来插入信息,用Data_Alter 函数来修改信息,用Data_Delete函数来删除信息,用Data_Save函数来保存信息,用Exit函数来退出通讯录.3. 小组分工,每个人分配几个函数,按情况进行分配任务.五、 程序代码#include /*字符函数和字符串函数*/#include /*字符模式函数(调用getch()函数)*/ #include /*输入输出函数*/int i;struct friend /*电子通讯录结构定义*/char num5; /*编号*/ char name11; /*名字*/char sex2; /*性别*/char phone12; /*电话*/char address26; /*地址*/char post_num11; /*邮编*/friends50;FILE *fp;void Data_load() /*数据载入函数*/ int j; fp=fopen(friend.txt,r+); /*打开文件friend.txt*/ if(fp=NULL) /*判断是否存在friend.txt,如果不存在则创建*/ fp=fopen(friend.txt,w); i=0; else for(i=0;i9|IDj0) k+;for(j=0;j=50) printf(nn Storage full!nn);if(i50)printf( *n); printf( * Add Address Book Information *n); printf( *n); printf( *n); for(;i0) /*检查输入的ID是否已存在,如果存在重新输入*/ printf(The No. already exists Or The No. isnt correct, please re-entern); scanf(%s,ID); Data_check(k,ID); strcpy(friendsi.num,ID); if(i=49) printf(nn Storage full!nn); break; case 0: break; default: yes_no=getch(); while(yes_no!=1&yes_no!=0); /*如果输入的不是1或0则重新输入*/ if(yes_no=0) /*如果输入0则退出输入函数*/ i+; break; int The_Size(char a,char b) /*比较两个ID的大小*/int j,t;if(j=strlen(a)-strlen(b)0) t=1;if(j=strlen(a)-strlen(b)0) t=1; if(strcmp(a,b)0) t=-1; if(strcmp(a,b)=0) t=0; return t; void Data_Show() /*数据输出函数*/ int j,k; char m; struct friend t; printf( *n); printf( No. Name Sex Phone Address Zip_Code n); printf( *n); for(j=0;ji-1;j+) /*对数据进行排序*/ for(k=0;ki-1-j;k+) if(The_Size(friendsk.num,friendsk+1.num)=1) t=friendsk; friendsk=friendsk+1; friendsk+1=t; for(j=0;ji;j+) /*数据输出*/ printf(%4s %10s %4s %11s %20s %10sn,friendsj.num,,friendsj.sex,friendsj.phone,friendsj.address,friendsj.post_num); m=getch(); if(m= ) break; printf(nn There are %d data in the book .nn,i);void Data_Search() /*数据查找函数*/ char k;int j,a,b;char ID5;char NAME11;printf(Search by No. : 1n); printf(Search by name : 2n); k=getch(); switch(k)case 1: /*按ID查找*/ a=0; printf(nn Please enter the No.nn); scanf(%s,ID); for(j=0;ji+1;j+) if(strcmp(ID,friendsj.num)=0) a+; printf( No. Name Sex Phone Address Zip_Code n); printf(%4s %10s %4s %11s %20s %10sn,friendsj.num,,friendsj.sex,friendsj.phone,friendsj.address,friendsj.post_num); if(a=0) printf( Do not have to find the No.!nn); break; case 2: /*按姓名查找*/ b=0; printf(nn Please enter the Namenn); scanf(%s,NAME); for(j=0;j=50) printf(nn Storage full!nn); if(i0) printf(The No. already exists Or The No. isnt correct, please re-entern); scanf(%s,ID); Data_check(k,ID); strcpy(friendsi.num,ID); /*插入数据*/ printf( * Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*n); scanf(%s%s%s%s%s,,friendsi.sex,friendsi.phone,friendsi.address,friendsi.post_num); i+; void Data_Delete() /*数据删除函数*/ int k,t=0;char ID5;printf(nn Please enter the No. need to be deletednn); scanf(%s,ID);for(k=0;k0) for(;ki;k+) /*删除位置前的元素顺序前移*/ friendsk=friendsk+1; printf(nn Delete success!nn); i=i-1; void Data_Alter() /*修改函数*/ int k,t=0; char ID5; printf(nn Please enter the No. to be Amendednn);scanf(%s,ID);for(k=0;k0) strcpy(friendsk.num,ID); printf( * Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*n); scanf(%s%s%s%s%s,,friendsk.sex,friendsk.phone,friendsk.address,friendsk.post_num); printf(nn Alter Success!nn);void Data_Save() /*数据保存函数*/ int j;fp=fopen(friend.txt,w); for(j=0;j9|IDj0) k+; for(j=0;j=50) printf(nn Storage full!nn);if(i50)printf( *n); printf( * Add Address Book Information *n); printf( *n); printf( *n); for(;i0) /*检查输入的ID是否已存在,如果存在重新输入*/printf(The No. already exists Or The No. isnt correct, please re-entern); scanf(%s,ID); Data_check(k,ID); strcpy(friendsi.num,ID); if(i=49) printf(nn Storage full!nn); break;case 0: break;default: yes_no=getch(); while(yes_no!=1&yes_no!=0); /*如果输入的不是1或0则重新输入*/ if(yes_no=0) /*如果输入0则退出输入函数*/ i+; break; 流程图:The_Size:首先定义两个字符数组形参,一个整型变量.首先利用strlen比较两个字符数组的长度,如果前者长于后者,整型变量赋值为1如果前者短于后者,整型变量赋值为-1,如果两者长度相等,则再利用strcmp比较两个字符数组的大小,如果前者大于后者,则整型变量赋值为1,如果前者小于后者,则整型变量赋值为-1,如果两者大小相等,则整型变量赋值为0.最后返回整型变量的值.源代码:int The_Size(char a,char b) /*比较两个ID的大小*/int j,t;if(j=strlen(a)-strlen(b)0) t=1;if(j=strlen(a)-strlen(b)0) t=1; if(strcmp(a,b)0) t=-1; if(strcmp(a,b)=0) t=0; return t; 流程图:Data_Show: 首先调用The_Size函数再利用冒泡法对通讯录的信息根据编号进行排列.然后再对信息进行输出,输出完一条信息后按空格停止打印,按其他任意键继续打印下一条.然后输出通讯录中信息的条数,最后提示是否回到主菜单源代码: void Data_Show() /*数据输出函数*/ int j,k; char m; struct friend t; printf( *n); printf( No. Name Sex Phone Address Zip_Code n); printf( *n); for(j=0;ji-1;j+) /*对数据进行排序*/ for(k=0;ki-1-j;k+) if(The_Size(friendsk.num,friendsk+1.num)=1) t=friendsk; friendsk=friendsk+1; friendsk+1=t; for(j=0;ji;j+) /*数据输出*/ printf(%4s %10s %4s %11s %20s %10sn,friendsj.num,,friendsj.sex,friendsj.phone,friendsj.address,friendsj.post_num); m=getch(); if(m= ) break; printf(nn There are %d data in the book .nn,i);流程图:main:调用Menu_Selec函数打印出主菜单.利用switch实现对菜单功能的选择.利用do-while来实现功能选择是输入不正确的纠错.源代码:void main() char choose,yes_no;Data_load(); do Menu_Select(); choose=getch(); switch(choose) case 1: Data_Input(); break; /*输入*/ case 2: Data_Show(); break; /*显示*/ case 3: Data_Search(); break; /*查找*/ case 4: Data_Alter(); break; /*修改*/ case 5: Data_Insert(); break; /*插入*/ case 6: Data_Delete(); break; /*删除*/ case 7: Data_Save(); break; /*保存*/ case 0: Exit(); break; /*退出*/ default : printf( Error!n); if(choose=0) bre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论