c语言实践10电气2班陆维亮10312213.docx
- 文档编号:30499690
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:20
- 大小:202.51KB
c语言实践10电气2班陆维亮10312213.docx
《c语言实践10电气2班陆维亮10312213.docx》由会员分享,可在线阅读,更多相关《c语言实践10电气2班陆维亮10312213.docx(20页珍藏版)》请在冰豆网上搜索。
c语言实践10电气2班陆维亮10312213
《C语言程序设计综合训练》
课 程 设 计 报 告
姓 名:
班级:
10电气2班
指导教师:
盛小春
成 绩:
日期:
2011-9-10
目标与内容:
目标:
通过程序设计制作一个简易电子通讯录
内容:
1、创建一个通讯薄记录;
2、记录中包含姓名,电话,住址,邮编,e-mail;
3、显示通讯录,按姓名排序;
4、在通讯录中能按姓名或电话号码进行查找;
5、能修改或删除通讯录中的记录。
地点与软件环境:
地点:
60号楼机房
软件环境:
XP操作系统VisualC++6.0开发环境
课程设计主要内容:
选题:
制作一个简单的电子通讯录。
要求通讯录能输入通讯记录,记录中存放有姓名、电话号码、住址、邮编和e-mail,能够对通讯录中的记录进行查找、添加、修改及删除等操作。
问题分析:
制作一个多功能的通讯录,每个功能可以通过调用函数的形式来实现。
首先对于每个人的五个信息,定义结构体,方便信息的输入。
对通讯录的显示可采用循环结构,对输入的记录一一显示。
通讯录的查找,修改,删除功能都先采用循环找到目标数据,然后对目标程序进行对应操作。
算法分析:
本程序包括一个主函数一级多个被调函数,adduser()(输入记录),list()(显示记录),searchbyname()(以姓名搜索),searchbyphone()(以电话号码搜索),update()(修改记录),sortbyname()(以姓名排序),Delete()(删除记录)。
程序:
#include
#include
#include
#include
#defineMaxSize100
structrecord
{
charname[20];
charpho[12];
charaddr[50];
charpost[8];
chare_mail[20];
}student[MaxSize];
intnum;
intmenu_select();
intadduser();
voidlist();
intsearchbyname();
intsearchbyphone();
voiddeletebyphone();
voiddeletebyname();
intDelete();
intsortbyname();
intmenu_select()
{
chars[80];
inta;
system("cls");
printf("\t\t***********欢迎进入通讯管理界面********\n\n");
printf("\t\t\t0.输入记录\n");
printf("\t\t\t1.显示记录\n");
printf("\t\t\t2.按姓名查找\n");
printf("\t\t\t3.按电话号码查找\n");
printf("\t\t\t4.修改记录\n");
printf("\t\t\t5.插入记录\n");
printf("\t\t\t6.按姓名排序\n");
printf("\t\t\t7.删除记录\n");
printf("\t\t\t8.退出\n");
printf("\t\t***************************************\n\n");
do{
printf("Enteryourchoice(0~8):
");
scanf("%s",s);
a=atoi(s);
}
while(a<0||a>8);
returna;
}
intadduser()
{
printf("\t\t\t**************请输入用户信息**************\n");
printf("\t\t\t输入姓名:
\n");
scanf("%s",student[num].name);
printf("\t\t\t输入电话号码:
\n");
scanf("%s",student[num].pho);
printf("\t\t\t输入地址:
\n");
scanf("%s",student[num].addr);
printf("\t\t\t输入邮编:
\n");
scanf("%s",student[num].post);
printf("\t\t\t输入e-mail:
\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否继续添加?
(Y/N):
\n");
if(getch()=='y'||getch()=='Y')
adduser();
return(0);
}
voidlist()
{
inti;
system("cls");
if(num!
=0)
{
printf("\t\t\t*************以下为通讯录所有信息***********\n");
for(i=0;i { printf("\t\t\t姓名: %s\n",student[i].name); printf("\t\t\t电话: %s\n",student[i].pho); printf("\t\t\t地址: %s\n",student[i].addr); printf("\t\t\t邮编: %s\n",student[i].post); printf("\t\t\te-mail: %s\n",student[i].e_mail); if(i+1 { system("pause"); } } printf("\t\t\t********************************************\n"); } else printf("\t\t\t通讯录中无任何纪录\n"); printf("\t\t\t按任意键返回主菜单: \n"); getch(); return; } intsearchbyname() { intmark=0; inti; charname[20]; printf("\t\t\t***************按姓名查找*****************\n"); printf("\t\t\t请输入姓名: \n"); scanf("%s",name); for(i=0;i { if(strcmp(student[i].name,name)==0) { printf("\t\t\t*******以下是您查找的用户信息*******\n"); printf("\t姓名: %s",student[i].name); printf("\t\t电话: %s",student[i].pho); printf("\n\t\t地址: %s",student[i].addr); printf("\t\t邮政编码: %s",student[i].post); printf("\n\t\te-mail: %s",student[i].e_mail); printf("\n\t\t**************************************\n"); mark++; if((i+1) { printf("\t\t\t是否继续查找相同名字的用户信息: (y/n)\n"); if(getch()=='y'||getch()=='Y') continue; else return(0); } else { printf("\t\t\t按任意键返回主菜单"); getch(); return(0); } } } if(mark==0) { printf("\t\t\t没有相同姓名的用户纪录\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return(0); } return0; } intsearchbyphone() { intmark=0; inti; charpho[12]; printf("\t\t\t***************按电话查找****************\n"); printf("\t\t\t请输入电话: \n"); scanf("%s",pho); for(i=0;i { if(strcmp(student[i].pho,pho)==0) { printf("\t\t\t************以下是您查找的用户信息*********\n"); printf("\t\t\t姓名: %s",student[i].name); printf("\t\t\t电话: %s",student[i].pho); printf("\t\t\t地址: %s",student[i].addr); printf("\t\t\t邮政编码: %s",student[i].post); printf("\t\t\te-mail: %s",student[i].e_mail); printf("\t\t\t********************************************\n"); printf("\t\t\t按任意键返回主菜单\n"); mark++; getch(); return(0); } } if(mark==0) { printf("\t\t\t没有改用户的信息\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return(0); } return(0); } intUpdate() { intmark=0; inti; charname[10]; printf("\t\t\t***************修改资料****************\n"); printf("\t\t\t请输入姓名: \n"); scanf("%s",name); for(i=0;i { if(strcmp(student[i].name,name)==0) { printf("\t\t\t************请修改该用户信息*********\n"); printf("\t\t\t电话: "); scanf("%s",student[i].pho); printf("\t\t\t地址: "); scanf("%s",student[i].addr); printf("\t\t\t邮政编码: "); scanf("%s",student[i].post); printf("\t\t\te-mail: "); scanf("%s",student[i].e_mail); printf("\t\t\t********************************************\n"); printf("\t\t\t按任意键返回主菜单\n"); mark++; getch(); return(0); } } if(mark==0) { printf("\t\t\t没有改用户的信息\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return(0); } return(0); } voiddeletebyphone() { inti,j; intdeletemark=0; charphone[20]; printf("\t\t\t请输入要删除用户电话号码: \n"); scanf("%s",phone); if(num==0) { printf("\t\t\t对不起,文件中无任何纪录\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return; } for(i=0;i { if(strcmp(student[i].pho,phone)==0) { printf("\t\t\t以下是您要删除的用户纪录: \n"); printf("\t\t\t姓名: %s",student[i].name); printf("\t\t\t电话: %s",student[i].pho); printf("\t\t\t地址: %s",student[i].addr); printf("\t\t\t邮政编码: %s",student[i].post); printf("\t\t\te-mail: %s",student[i].e_mail); printf("\t\t\t是否删除? (y/n)"); if(getch()=='y'||getch()=='Y') { for(j=i;j student[j]=student[j+1]; num--; deletemark++; printf("\t\t\t删除成功"); printf("\t\t\t是否继续删除? (y/n)"); if(getch()=='y'||getch()=='Y') deletebyphone(); return; } else return; } continue; } if(deletemark==0) { printf("\t\t\t没有该用户的纪录"); printf("\t\t\t是否继续删除? (y/n)"); if(getch()=='y'||getch()=='Y') deletebyphone(); return; } return; } voiddeletebyname() { inta=0; intfindmark=0; intj; intdeletemark=0; inti; charname[20]; printf("\t\t\t请输入要删除用户姓名: \n"); scanf("%s",name); for(i=a;i { if(strcmp(student[i].name,name)==0) { printf("\t\t\t以下是您要删除的用户纪录: "); findmark++; printf("\t\t\t____________________________"); printf("\t\t姓名: %s",student[i].name); printf("\t\t电话: %s",student[i].pho); printf("\n\t\t地址: %s",student[i].addr); printf("\t\t邮政编码: %s",student[i].post); printf("\t\te-mail: %s",student[i].e_mail); printf("\n\t\t_____________________________"); printf("\t\t\t是否删除? (y/n)"); if(getch()=='y'||getch()=='Y') { for(j=i;j student[j]=student[j+1]; num--; deletemark++; printf("\t\t\t删除成功"); if((i+1) { printf("\t\t\t是否继续删除相同姓名的用户信息? (y/n)"); if(getch()=='y') { a=i; continue; } } printf("\t\t\t是否继续删除? (y/n)"); if(getch()=='y') deletebyname(); return; } if((i+1) { printf("\t\t\t是否继续删除相同姓名的用户信息? (y/n)"); if(getch()=='y'||getch()=='Y') { a=i; continue; } } } else continue; } if((deletemark==0)&&(findmark==0)) { printf("\t\t\t没有该用户的纪录"); printf("\t\t\t是否继续删除? (y/n)"); if(getch()=='y'||getch()=='Y') deletebyphone(); return; } elseif(findmark! =0) { printf("\t\t\t没有重名信息"); printf("\t\t\t没有该用户的纪录"); printf("\t\t\t是否继续删除? (y/n)"); if(getch()=='y'||getch()=='Y') deletebyphone(); return; } } intDelete() { charchoic; printf("\t\t\t1-按电话号码删除2-按姓名删除"); printf("\t\t\t请选择: "); choic=getch(); switch(choic) { case'1': deletebyphone();break; case'2': deletebyname();break; } return(0); } intsortbyname() { inti,j; structrecordtmp; for(i=1;i { if(strcmp(student[i].name,student[i-1].name)<0) { tmp=student[i]; j=i-1; do { student[j+1]=student[j]; j--; }while((strcmp(tmp.name,student[j].name)<0&&j>=0)); student[j+1]=tmp; } } printf("\t\t\t已排序,是否显示? (y/n)"); if(getch()=='y') list(); return(0); } intmain() { intselectnum; printf("\t\t************************************************\n"); printf("\t\t*********欢迎进入通讯录管理*******************\n"); printf("\t\t*************************************************\n"); printf("按任意键进入主菜单\n"); getch(); while (1) { selectnum=menu_select(); switch(selectnum) { case0: adduser();break; case1: list();break; case2: searchbyname();break; case3: searchbyphone();break; case4: Update();break; case5: adduser();break; case6: sortbyname();break; case7: Delete();break; case8: printf("BYEBYE! \n"); system("pause"); getchar(); exit(0); } } getchar(); return0; } 调试运行与结果分析: 课程设计的小结: 通过此次的课程设计,将本学期由课本上所学习的有关内容应用到实践当中,使我们在应用过程中更加清楚的了解并掌握C语言的各部分的内容,提高个人程序设计思想及时发现一些错误,并在调试过程中更加深刻的认识到C语言程序的严谨性。 任何一个程序员都有无法保证所编写的程序没有错误,语法错误在编译时就会被发现,连接错误在连接时就会被发现。 但程序内部的逻辑错误只能由我们自己去发现并定位修改,在遇到问题时,首先通过对此部分函数的整体流程进行分析,找出问题的所在,经过思考,再由小组成员商定最优解决方法,这样有助于提高我们个人团体协作能力。 在调试程序时,首先对整个程序流程有全面的认识,调试过程中需细心,为了让小组成员的调试程序的能力全面提高,可分模块调度、共享调试收获,共同进步。 数据结构这门课程具有很强的逻辑性和严谨性,函数等的应用也比较广,灵活性很大。 在课程设计中比较我们所学过的vfp,认识到c语言的语言严紧性,使用方便,灵活,关键字少,共30多个,语法限制不严,可实现强在的功能,语言表述功能强大,有简单的数据类型,可以定义复杂的数据,如结构体还可以直接访问内存的物理地址,程序的可移植性好,编程在一种计算机上,无需或经过极少修改就可在其他类型计算机上运行,c语言允许递归调用,尽管在此设计中我们没有应用,但在编程中曾考虑其在解决递归问题上具有的独特优势。 我们的程序还存在不足之处,是可以改进的。 如“定义电话号码”为字符型数组变量,通过键盘输入电话号码时,程序允许输入字母,而不足之处正在于此,改进设想是,用一个IF语句判断,如果是字母,提示: 输入有误,重新输入电话号码。 或者定义电话号码为长整型变量,则所有程序中电话号码的变量引用都要改变。 插入信息是在原记录末尾添加一条新记录,也可以将程序改进。 在任意一条记录后插入记录。 显然,程序的复杂度,难度都加大了,算法是首先要判断在哪一条记录后插入,插入记录后以下的各条记录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实践 10 电气 班陆维亮 10312213