c语言报告.docx
《c语言报告.docx》由会员分享,可在线阅读,更多相关《c语言报告.docx(21页珍藏版)》请在冰豆网上搜索。
![c语言报告.docx](https://file1.bdocx.com/fileroot1/2023-1/8/102c16f0-f37c-473c-a767-6d915863bbaf/102c16f0-f37c-473c-a767-6d915863bbaf1.gif)
c语言报告
学号
1106420103
成绩
课程设计说明书
设计名称C语言课程设计
设计题目 个人通讯录系统
设计时间2012年6月18日-6月22日
学院信息与控制工程学院
专业信息管理与信息系统
班级信息11-01班
姓名仇睿
指导教师董洁
2012年6月21日
目录
一.设计目的......................................................1
二.课程设计的内容................................................1
三.课程设计的要求与数据..........................................1
四.课程设计应完成的工作..........................................2
五.总体设计......................................................2
六.源程序及运行结果............................................2-15
七.总结..........................................................16
一.设计目的
进一步加深、巩固所学专业课程(《C程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
二.课程设计的内容
通讯录管理系统主要管理用户通讯录的基本信息。
在系统中,每个用户是一条记录,包括姓名、电话号码、通讯地址。
系统要对一个有N个用户的通讯录统一进行管理。
包括了用户信息的录入、显示、修改、排序、查询等操作。
三.课程设计的要求与数据
1、用C语言实现系统;
2、对个人通讯信息(包括姓名、电话号码、地址、邮编、e-mail)进行管理,包括个人通讯信息的输入、输出、查询、删除、排序、退出.
3、个人通讯信息较多,为了简化讨论,要求设计的管理系统能够完成以下功能:
(1)、每一条记录包括姓名、电话号码、地址、邮编、e-mail
(2)、通讯信息录入功能;
(3)、通讯信息显示浏览功能:
完成全部人信息的显示。
(4)、查询功能:
完成按姓名和电话号码查找信息并显示。
(5)、通讯信息的删除:
按姓名进行删除某人的通讯信息.
(6)、排序功能:
按姓名进行排序。
(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。
四.课程设计应完成的工作
(1)编写算法;
(2)算法测试,并有具体的测试结果和结果分析;
1
(3)撰写课程设计报告。
内容包括:
1)封面扉页
2)设计任务书
3)目录
4)总体设计方案
5)使用说明及运行实例(包括界面)
6)设计内容简介
7)项目源程序代码(注意注释的使用)
8)指导教师评语
五.总体设计(包含几大功能模块)
1、信息录入功能
2、信息输出功能
3、信息查询功能
4、删除模块
5、排序功能
6、统计功能
7、退出系统
六.源程序及运行结果
1.源程序
#include
#include//定义杂项函数及内存分配函数
#include//字符串处理
#include//通过控制台进行数据输入和数据输出的函数
structrecord
{
charname[20];//姓名
charphone[12];//电话
charadress[50];//地址
charpostcode[8];//邮政编码
chare_mail[20];//电子邮件。
}student[100];//假设最大数为100.
//定义全局变量num,表示已经输入的人数。
2
intnum;//这里使用数组解决通讯录的问题,实际上使用链表更好。
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.Quit\n");
printf("\t\t***********************************************\n\n");
do{
printf("Enteryouchoice(0~7):
");
scanf("%s",s);
a=atoi(s);
}
while(a<0||a>7);
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].phone);
printf("\t\t\t输入地址:
\n");
scanf("%s",student[num].adress);
printf("\t\t\t输入邮编:
\n");
scanf("%s",student[num].postcode);
printf("\t\t\t输入e-mail:
\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否继续添加?
(Y/N):
\n");
3
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].phone);
printf("\t\t\t地址:
%s\n",student[i].adress);
printf("\t\t\t邮编:
%s\n",student[i].postcode);
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;
printf("\t\t\t*****************按姓名查找*******************\n");
charname[20];
4
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姓名:
%s",student[i].name);
printf("\t\t\t电话:
%s",student[i].phone);
printf("\t\t\t地址:
%s",student[i].adress);
printf("\t\t\te-mail:
%s",student[i].e_mail);
printf("\t\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);
5
}
return0;
}
intsearchbyphone()
{
intmark=0;
inti;
printf("\t\t\t******************按电话查找******************\n");
charphone[10];
printf("\t\t\t请输入电话号码:
\n");
scanf("%s",phone);
for(i=0;i{
if(strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t**************以下是您查找的用户信息**********\n");
printf("\t\t\t姓名:
%s",student[i].name);
printf("\t\t\t电话:
%s",student[i].phone);
printf("\t\t\t地址:
%s",student[i].adress);
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);
}
voiddeletebyphone()
{
6
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].phone,phone)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:
\n");
printf("\t\t\t姓名:
%s",student[i].name);
printf("\t\t\t电话:
%s",student[i].phone);
printf("\t\t\t地址:
%s",student[i].adress);
printf("\t\t\te-mail:
%s",student[i].e_mail);
printf("\t\t\t是否删除?
(y/n)");
if(getch()=='y'||getch()=='Y')
{
for(j=i;jstudent[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)
{
7
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\t姓名:
%s",student[i].name);
printf("\t\t\t电话:
%s",student[i].phone);
printf("\t\t\t地址:
%s",student[i].adress);
printf("\t\t\te-mail:
%s",student[i].e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否删除?
(y/n)");
if(getch()=='y'||getch()=='Y')
{
for(j=i;jstudent[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
if((i+1){
printf("\t\t\t是否继续删除相同姓名的用户信息?
(y/n)");
8
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;
}
9
}
intdele()
{
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()
{
printf("\t\t************************************************\n");
printf("\t\t********欢迎进入通讯录系统*******************\n");
10
printf("\t\t###########制作人仇睿###################\n");
printf("\t\t*************************************************\n");
printf("按任意键进入主菜单\n");
getch();
intselectnum;
while
(1)
{
selectnum=menu_select();
switch(selectnum)
{
case0:
{
adduser();
break;
}
case1:
{
list();
break;
}
case2:
{
searchbyname();
break;
}
case3:
{
searchbyphone();
break;
}
case4:
{
adduser();//这里插入,应该能指定位置,不过意义不大,所以和添加记录一样了。
break;
}
case5:
{
sortbyname();
break;
}
11
case6:
{
dele();
break;
}
case7:
{
printf("BYEBYE!
\n");
system("pause");
getchar();
exit(0);
}
}
}
getchar();
return0;
}
2.运行结果
运行开始
按任意键入主菜单
12
添加界面
显示界面
13
查找界面
14
排序界面
删除界面
15
八.总结
由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。
在用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。
解决的这个问题的办法是调整。
一个系统的菜单和提示信息非常重要。
如果没有这些用户根本不知道怎么用你设计的这个系统。
在设计的调试过程中也无法顺利的完成调试工作。
有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。
回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整一个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我通过这次实践学到了许多知识。
学到了设计一个简单的系统。
要注意哪些方面。
也使我们知道自己哪些方面做得还不够。
这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!
在编写程序的过程中,错误不断出现,不同的类型(如少