手机名片系统 667.docx
《手机名片系统 667.docx》由会员分享,可在线阅读,更多相关《手机名片系统 667.docx(13页珍藏版)》请在冰豆网上搜索。
![手机名片系统 667.docx](https://file1.bdocx.com/fileroot1/2023-1/7/2c833b15-8dc1-45b5-8096-53e910d53454/2c833b15-8dc1-45b5-8096-53e910d534541.gif)
手机名片系统667
通信工程C语言程序课程设计报告
学号:
姓名:
提交日期:
成绩:
评语:
教师签字:
东北大学秦皇岛分校电子信息系
名片管理程序
1、训练目的
a)C语言基本知识的巩固和综合运用。
基本数据类型、基本控制结构、数组、指针、函数、结构体和共用体。
b)C语言高级编程。
链表基本操作、文件的基本操作、图形和声音制作。
c)程序的结构化设计。
d)编辑、设置、编译、调试、执行。
e)C语言结合实际问题的综合设计。
2、设计题目功能
通过计算机对数据文件的存储和读取,实现名片的输入,输出,查找,修改,删除,分类存储等功能。
最大可以管理300张名片
3、设计题目要求
名片信息至少包括姓名、工作单位、职务、电话、联系地址、email等基本信息。
具体要求包括:
命令行界面
有输入功能
有删除条目功能
有输出功能
有显示列表功能
有根据某一特点的查找功能
4、程序流程图
5、主要代码
#include
#include
#include
#include
#defineIDstructid
structid
{
charname[20];
chartele[20];
charemail[20];
charworkplace[20];
charaddress[20];
charposion[20];
ID*next;
};
intpc=0;
ID*creat()
{
ID*p1,*p2,*head;
charstr[20];
p1=p2=head=NULL;
printf("\t\t\t开始输入记录(姓名#结束)!
\n");
while
(1)
{
printf("请输入姓名:
\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0)break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("请输入电话号码:
\n");scanf("%s",p1->tele);getchar();
printf("请输入邮件:
\n");scanf("%s",p1->email);getchar();
printf("请输入工作单位:
\n");scanf("%s",p1->workplace);getchar();
printf("请输入地址:
\n");scanf("%s",p1->address);getchar();
printf("请输入职位:
\n");scanf("%s",p1->posion);getchar();
if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
}
/*输入/添加记录*/
ID*insert(ID*head)
{
ID*temp,*p1,*p2;
printf("插入操作开始!
!
!
\n");
temp=(ID*)malloc(sizeof(ID));
printf("请输入姓名:
\n");scanf("%s",temp->name);getchar();
printf("请输入电话号码:
\n");scanf("%s",temp->tele);getchar();
printf("请输入邮件:
\n");scanf("%s",temp->email);getchar();
printf("请输入工作单位:
\n");scanf("%s",temp->workplace);getchar();
printf("请输入地址:
\n");scanf("%s",temp->address);getchar();
printf("请输入职位:
\n");scanf("%s",temp->posion);getchar();
if(head==NULL)
{
head=temp;
temp->next=NULL;
}
else
{
p1=head;
while(p1!
=NULL)
{
p2=p1;
p1=p1->next;
}
p2->next=temp;
temp->next=p1;
}
printf("插入成功!
!
");
pc++;
return(head);
}
/*删除记录*/
ID*delet(ID*head)
{
ID*p1,*p2;
charstr[20];
printf("请输入要删除的姓名:
");scanf("%s",str);getchar();
p1=head;
if(head==NULL)
{
printf("没有记录\n");
gotoend;
}
while(p1!
=NULL&&strcmp(p1->name,str))
{
p2=p1;p1=p1->next;
}
if(p1==NULL)
printf("未找到符合记录!
\n");
elseif(strcmp(p1->name,str)==0)
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
printf("\t删除成功!
!
!
\n");
pc--;
}
end:
returnhead;
}
/*查找记录*/
ID*search(ID*head)
{
ID*p1,*p2;
intflag=0;
charc[10];
printf("请输入姓名的首字母:
");scanf("%s",c);getchar();
p1=head;
while(p1!
=NULL)
{
if(p1->name[0]==c[0])
{
printf("姓名:
%s\t电话号码:
%s\temail:
%s\t工作单位:
%s\t职位:
%s\t地址:
%s\n",p1->name,p1->tele,p1->email,p1->workplace,p1->posion,p1->address);
flag=1;
}
p2=p1;p1=p1->next;
}
if(flag==0)printf("未找到符合记录!
\n");
returnhead;
}
/*修改记录*/
ID*modify(ID*head)
{
ID*p1,*p2;
intmode;
charstr[20];
printf("请输入要修改记录的姓名:
");scanf("%s",str);getchar();
p1=head;
while(p1!
=NULL)
{
if(strcmp(p1->name,str)==0)
{
printf("1.姓名:
%s\t2.电话号码:
%s\t3.工作单位:
%s\t4.地址:
%s\t5.职位:
%s\n",p1->name,p1->tele,p1->workplace,p1->address,p1->posion);
printf("请选择要修改选项:
\n");
scanf("%d",&mode);getchar();
if(mode==1)
{
printf("请输入修改后的姓名\n");
scanf("%s",p1->name);getchar();
}
elseif(mode==2)
{
printf("请输入修改后的电话号码\n");
scanf("%s",p1->tele);getchar();
}
elseif(mode==3)
{
printf("请输入要修改的工作单位\n");
scanf("%s",p1->workplace);
}
elseif(mode==4)
{
printf("请输入要修改的地址\n");
scanf("%s",p1->address);
}
elseif(mode==5)
{
printf("请输入要修改的职位\n");
scanf("%s",p1->posion);
}
else
printf("输入有误!
\n");
break;
}
p2=p1;p1=p1->next;
}
if(p1==NULL)printf("未找到符合要求的记录!
\n");
returnhead;
}
/*显示结果函数*/
voidprint(ID*head)
{
ID*p;
p=head;
printf("\t\t\t*****************\n");
printf("显示结果是:
\n");
printf("姓名\t电话号码\temail\t工作单位\t地址\t职位\n");
if(head!
=NULL)
do
{
printf("%s\t%s\t%s\t%s\t%s\t%s\n",p->name,p->tele,p->email,p->workplace,p->address,p->posion);
p=p->next;
}
while(p!
=NULL);
}
intmain()
{
ID*head=NULL;
intchoise;
printf("\t\t\t****C语言课设****\n");
while
(1)
{
printf("\t\t手机名片管理系统\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t1.输入\n");
printf("\t\t2.显示\n");
printf("\t\t3.查找\n");
printf("\t\t4.插入\n");
printf("\t\t5.删除\n");
printf("\t\t6.修改\n");
printf("\t\t7.名片目前人数\n");
printf("\t\t0.退出\n");
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请选择(0-7):
");
scanf("%d",&choise);
switch(choise)
{
case1:
head=creat();
break;
case2:
print(head);
break;
case3:
head=search(head);
break;
case4:
head=insert(head);
break;
case5:
head=delet(head);
break;
case6:
head=modify(head);
break;
case7:
printf("目前人数为:
%d\n",pc);
break;
case0:
exit(0);
break;
default:
printf("输入错误,请重新输入!
\n");
}
}
}
6、强化训练心得体会
通过这几周的课程设计,我们大体对C语言基本知识有进一步的理解。
其中包括基本数据类型(像整型,字符型)、基本控制结构(包括基本的顺序结构,选择结构和循环结构,有时还涉及到goto语句)、而且中用最多还是数组、指针、函数、结构体和共用体,并在更深层理解它们的结构,和具体运用环境等。
我们也接触到一些高级C编程,了解了C语言高级编程,包括链表基本操作,和它基本的一些算法,虽然其中有很多困难和苦恼,刚开始接触时,我们大部分不懂,有时都想放弃,但是一切都通过不断学习迎刃而解了。
我们对程序的结构化设计也有全面的认识,也有个大致的掌握,实在令人欣慰啊。
其中传统程序流程图的绘制,也对我们是个很大挑战,我们整整花了几天才有大体的认识和思路。
在整个的课程设计中最有趣的大家在一起调程序,大家一起探讨、分析,不断总结,总之那时的氛围真的很互动和融洽,也是在那时学会熟练的使用开发工具。
包括编辑、编译、调试、执行,每一次看到预期的结果,都是我们最快乐日子。
在这次手机名片管理系统的课程设计,也是一次对C语言综合运用,很好锻炼和巩固我们解决实际问题的能力。
整个过程的收获和体悟,感觉课程设计是一个很好的平台。