c语言顺序结构通讯录报告.docx
- 文档编号:15534904
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:15
- 大小:21.08KB
c语言顺序结构通讯录报告.docx
《c语言顺序结构通讯录报告.docx》由会员分享,可在线阅读,更多相关《c语言顺序结构通讯录报告.docx(15页珍藏版)》请在冰点文库上搜索。
c语言顺序结构通讯录报告
题目:
C语言顺序结构通讯录程序
班级:
2级金融
学生学号:
1
学生姓名:
时间:
2014年10月14日
1.问题描述
此程序要求开发一个具有如下功能:
(1)录入通讯信息(包含姓名、性别、学号、电话、qq、Email);
(2)添加通讯录记录,逐个添加联系人;
(3)删除通讯录记录,输入人名删除相应的信息
(4)显示:
显示通讯录记录,显示所有的联系人。
(5)查询:
按人名查询通讯录记录;
(6)修改:
修改通讯录记录,选择性修改。
(7)保存:
将信息保存到文件,以文件形式保存到硬盘。
(8)读取:
将信息从文件读取到内存中。
(9)退出:
退出程序。
另外要求用顺序结构来存储通讯录的信息并实现增删功能。
2.开发平台及工具介绍
开发平台为windows7
开发工具为visualstudio2012
3.程序中构造以及使用的函数
intshuru(ADDRESSt[]);/*输入记录*/
voidxianshi(ADDRESSt[],intn);/*显示记录*/
voidchazhao(ADDRESSt[],intn);/*按姓名查找显示记录*/
intshanchu(ADDRESSt[],intn);
intcharu(ADDRESSt[],intn);
voidbaocun(ADDRESSt[],intn);/*记录保存为文件*/
intduqu(ADDRESSt[]);/*从文件中读记录*/
voiddisplay(ADDRESSt[]);/*按序号显示所有记录*/
voidsort(ADDRESSt[],intn);/*按姓名排序*/
voidxuhaochazhao(ADDRESSt[]);/*按序号查找显示记录*/
voidxingmingpaixu(ADDRESSt[],intn);/*按姓名排序*/
voidxianshidantiao(ADDRESStemp);/*显示单条记录*/
intfind(ADDRESSt[],intn,char*s);/*查找函数*/
intmenu_select();/*主菜单函数*/
4.程序代码
#include
#include
#include
#include
#defineM50
typedefstruct
{
charname[20];
charsex[8];
charxuehao[11];
chartelephone[10];
charqq[12];
charemail[20];
}ADDRESS;
intshuru(ADDRESSt[]);
voidxianshi(ADDRESSt[],intn);/*显示记录*/
voidchazhao(ADDRESSt[],intn);/*按姓名查找显示记录*/
intshanchu(ADDRESSt[],intn);
intcharu(ADDRESSt[],intn);
voidbaocun(ADDRESSt[],intn);/*记录保存为文件*/
intduqu(ADDRESSt[]);/*从文件中读记录*/
voiddisplay(ADDRESSt[]);/*按序号查找显示记录*/
voidsort(ADDRESSt[],intn);/*按姓名排序函数*/
voidxuhaochazhao(ADDRESSt[]);/*按序号查找显示记录*/
voidxianshidantiao(ADDRESStemp);/*显示单条记录*/
intfind(ADDRESSt[],intn,char*s);/*查找函数*/
intmenu_select();/*主菜单函数*/
voidmain()
{
ADDRESSadr[M];
intlength;
for(;;)/*无限循环*/
{
switch(menu_select())
{
case0:
length=shuru(adr);
break;
case1:
xianshi(adr,length);
break;
case2:
chazhao(adr,length);
break;
case3:
length=shanchu(adr,length);
break;
case4:
charu(adr,length);
break;
case5:
baocun(adr,length);
break;
case6:
length=duqu(adr);
break;
case7:
display(adr);
break;
case8:
sort(adr,length);
break;
case9:
exit(0);
}
}
}
intmenu_select()
{
chars[80];
intc;
printf("pressanykeyentermenu......\n");/*提示压任意键继续*/
system("cls");/*清屏*/
printf("********************MENU*********************\n\n");
printf("0.shururecord\n");
printf("1.xianshithefile\n");
printf("2.chazhaorecordonname\n");
printf("3.shanchuarecord\n");
printf("4.charurecord\n");
printf("5.baocunweiwenjian\n");
printf("6.duquwenjian\n");
printf("7.anxuhaoxianshi\n");
printf("8.anxingmingpaixu\n");
printf("9.Quit\n");
printf("***********************************************\n");
do
{
printf("\nEnteryouchoice(0~9):
");
scanf("%d",&c);
}
while(c<0||c>9);
returnc;
}
intshuru(ADDRESSt[])
{
inti,n;
char*s;
system("cls");
printf("\nqingshuru\n");
scanf("%d",&n);/*输入记录数*/
printf("pleaseinputrecord\n");
printf(
"namesexxuehaotelephoneqqemail\n");
printf("------------------------------------------------\n");
for(i=0;i { scanf("%s%s%s%s%s%s",t[i].name,t[i].sex,t[i].xuehao,t[i].telephone, t[i].qq,t[i].email); printf("----------------------------------------------\n"); } returnn;/*返回记录条数*/ } voidxianshi(ADDRESSt[],intn) { inti; system("cls"); printf("\n\n*******************ADDRESS******************\n"); printf( "namesexxuehaotelephoneqqemail\n"); printf("------------------------------------------------\n"); for(i=0;i printf("%-20s%-8s%-11s%-10s%-12s%-20s\n",t[i].name,t[i].sex, t[i].xuehao,t[i].telephone,t[i].qq,t[i].email); if((i+1)%10==0)/*规定输出10条记录*/ { printf("Pressanykeycontinue...\n");/*提示*/ } printf("************************end*******************\n"); } voidchazhao(ADDRESSt[],intn) { chars[20];/*保存待查找姓名字符串*/ inti;/*保存查找到结点的序号*/ system("cls"); printf("pleasesearchname\n"); scanf("%s",s);/*输入待查找姓名*/ i=find(t,n,s);/*调用find函数,得到一个整数*/ if(i>n-1)/*如果整数i值大于n-1,说明没找到*/ printf("notfound\n"); else xianshidantiao(t[i]); } voidxianshidantiao(ADDRESStemp) {inti; system("cls"); printf("\n\n********************************************\n"); printf( "namesexxuehaotelephoneqqemail\n"); printf("------------------------------------------------\n"); printf("%-20s%-8s%-11s%-10s%-12s%-20s\n",t[i].name,t[i].sex, t[i].xuehao,t[i].telephone,t[i].qq,t[i].email); printf("**********************end***********************\n"); } intfind(ADDRESSt[],intn,char*s) { inti; for(i=0;i { if(strcmp(s,t[i].name)==0)/*记录中的姓名和待比较的姓名是否相等*/ returni; } returni; } intshanchu(ADDRESSt[],intn) { chars[20];/*要删除记录的姓名*/ intch=0; inti,j; printf("pleasedeletedname\n"); scanf("%s",s); i=find(t,n,s); if(i>n-1)/*如果i>n-1超过了数组的长度*/ printf("nofoundnotdeleted\n"); else { xianshidantiao(t[i]);/*调用输出函数显示该条记录信息*/ printf("Areyousuredeleteit(1/0)\n"); scanf("%d",&ch);/*输入一个整数0或1*/ if(ch==1) { for(j=i+1;j { strcpy(t[j-1].name,t[j].name);/*将后一条记录的姓名拷贝到前一条*/ strcpy(t[j-1].sex,t[j].sex); strcpy(t[j-1].xuehao,t[j].xuehao); strcpy(t[j-1].telephone,t[j].telephone); strcpy(t[j-1].qq,t[j].qq); strcpy(t[j-1].email,t[j].email); } n--; } } returnn;/*返回记录数*/ } intcharu(ADDRESSt[],intn) { ADDRESStemp; inti,j; chars[20];/*确定插入在哪个记录之前*/ printf("pleaseinputrecord\n"); printf("************************************************\n"); printf( "namesexxuehaotelephoneqqemail\n"); printf("--------------------------------------------------\n"); scanf("%-20s%-8s%-11s%-10s%-12s%-20s\n",t[i].name,t[i].sex,t[i].xuehao, t[i].telephone,t[i].qq,t[i].email); printf("------------------------------------------------\n"); printf("pleaseinputlocatename\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].sex,t[j].sex); strcpy(t[j+1].xuehao,t[j].xuehao); strcpy(t[j+1].telephone,t[j].telephone); strcpy(t[j+1].qq,t[j].qq); strcpy(t[j+1].email,t[j].email); } strcpy(t[i].name,temp.name);/*将新插入记录的姓名拷贝到第i个位置*/ strcpy(t[i].sex,temp.sex); strcpy(t[i].xuehao,temp.xuehao); strcpy(t[i].telephone,temp.telephone); strcpy(t[i].qq,temp.qq); strcpy(t[i].email,temp.email); n++;/*记录数加1*/ returnn;/*返回记录数*/ } voidbaocun(ADDRESSt[],intn) { inti; FILE*fp;/*指向文件的指针*/ if((fp=fopen("record.txt","wb"))==NULL)/*打开文件,并判断打开是否正常*/ { printf("cannotopenfile\n"); exit (1); } printf("\nSavingfile\n"); fprintf(fp,"%d",n);/*将记录数写入文件*/ fprintf(fp,"\r\n");/*将换行符号写入文件*/ for(i=0;i { fprintf(fp,"%-20s%-8s%-11s%-10s%-12s%-20s",t[i].name,t[i].sex, t[i].xuehao,t[i].telephone,t[i].qq,t[i].email); fprintf(fp,"\r\n"); } fclose(fp);/*关闭文件*/ printf("****savesuccess***\n");/*显示保存成功*/ } intduqu(ADDRESSt[]) { inti,n; FILE*fp; if((fp=fopen("record.txt","rb"))==NULL) { printf("cannotopenfile\n"); exit (1); } fscanf(fp,"%d",&n);/*读入记录数*/ for(i=0;i fscanf(fp,"%-20s%-8s%-11s%-10s%-12s%-20s",t[i].name,t[i].sex,t[i].xuehao, t[i].telephone,t[i].qq,t[i].email);/*按格式读入记录*/ fclose(fp); printf("Youhavesuccessreaddatafromfile! ! ! \n"); returnn; voiddisplay(ADDRESSt[]) { intid,n; FILE*fp; if((fp=fopen("record.txt","rb"))==NULL) { printf("cannotopenfile\n"); exit (1); } printf("Enterordernumber...\n"); scanf("%d",&id);/*输入序号*/ fscanf(fp,"%d",&n);/*从文件读入记录数*/ if(id>=0&&id { fseek(fp,(id-1)*sizeof(ADDRESS),1);/*移动文件指针到该记录位置*/ xianshidantiao(t[id]);/*调用输出函数显示该记录*/ printf("\r\n"); } else printf("no%dnumberrecord! ! ! \n",id); fclose(fp); } voidsort(ADDRESSt[],intn) { inti,j,flag; ADDRESStemp;/*临时变量做交换数据用*/ for(i=0;i { flag=0;/*设标志判断是否发生过交换*/ for(j=0;j if((strcmp(t[j].name,t[j+1].name))>0)/*比较大小*/ { flag=1; strcpy(temp.name,t[j].name);/*交换记录*/ strcpy(temp.sex,t[j].sex); strcpy(temp.xuehao,t[j].xuehao); strcpy(temp.telephone,t[j].telephone); strcpy(temp.qq,t[j].qq); strcpy(temp.email,t[j].email); } if(flag==0) break;/*如果标志为0,说明没有发生过交换循环结束*/ } printf("sortsucess! ! ! \n");/*显示排序成功*/ } 5.总结与体会 通过写本次的通讯录程序,我又再次复习了一边去年学习的C语言,编程序的过程,困难重重。 首先是用自己装的Eclipse编程序遇到了各种各样的问题,始终无法编译成功,无奈安装了visualstudio2012编程平台;其次是C语言好多语法都忘记了,又再次找到了去年的C语言课本,重新学习了函数构造调用方法、输入输出方法、结构体构造使用方法等等,都用掉了我大部分的时间;更困难的是我刚开始根本毫无头绪,于是从网上下载了一些通讯录的编写代码,看懂了之后,借用了一些他们的方法和代码,期间又学会了使用system("cls")(清屏函数)、strcpy函数、保存文件到磁盘、从磁盘文件读取文件等没讲过的东西,收获很大。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 顺序 结构 通讯录 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)