计算机编程设计报告模板.docx
《计算机编程设计报告模板.docx》由会员分享,可在线阅读,更多相关《计算机编程设计报告模板.docx(15页珍藏版)》请在冰豆网上搜索。
计算机编程设计报告模板
计算机编程设计报告
题目:
电话订餐信息处理
专业名称:
信息与计算科学
班级:
2
学号:
2
姓名:
孙龙
指导教师:
组织单位:
时间:
1.设计目的
一个小饭馆的生意非常红火,要想用餐必须提前一天打电话预订。
假设我们是饭馆负责接受电话预订的服务员,我们需要做些什么呢?
首先,需要准备一张大小适当的白纸,等待顾客的电话。
李红最先打进了电话,她预约第2天中午12点用餐,用餐人数5人,服务员在纸上做了如下记录:
"李红12点5人“;接着,刘娜、汪寒、孙杰和赵军分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是:
孙杰随后又来了电话,将用餐时间推后一个小时,那么记录的内容也应该做相应的修改。
刘娜来用餐以后,可以将其信息从纸上划去。
下面编写程序处理电话订餐的情况。
2.功能描述
这是一个小型的管理系统,可以使用结构数组存储订餐的情况。
每个结构的数据可以包括姓名、人数、用餐时间等。
为了方便处理,还需要给每个打进电话的客户编个号,就像在饭馆等候用餐时,服务员会发给客户一样。
3.总体设计
3.1功能模块设计
可以声明以下的结构体类型:
structguest_info{//姓名
charname[8];//人数
intsum;//用餐时间
chartime[10];//编号
intnumber;
}GuestList[MaxSize];
程序包括5个函数,Insert,,Search,Update,Delete和Show,分别负责插入、查询、修改、删除和显示数据。
一般的信息管理系统都应该具备这几个功能,小型信息管理系统也不例外。
程序采用简单菜单驱动方式,屏幕上显示菜单如下:
1————插入(Insert)
2————查询(Search)
3————修改(Update)
4————删除(Delete)
5————显示(Show)
6————退出(Exit)
3.2完整数组程序
#include
#include
#defineMaxSize20
structguest_info{
charname[8];
intsum;
chartime[10];
intnumber;
}GuestList[MaxSize];
voidInsert(int*);
voidSearch(int);
voidUpdate(int);
voidDelete(int*);
voidShow(int);
intmain()
{
inti;
intcount=0;
do
{printf("\n");
printf("1---插入(Insert)\n");
printf("2---查询(Search)\n");
printf("3---修改(Update)\n");
printf("4---删除(Delete)\n");
printf("5---显示(Show)\n");
printf("6---退出(Exit)\n");
scanf("%d",&i);
switch(i)
{case1:
Insert(&count);
break;
case2:
Search(count);
break;
case3:
Update(count);
break;
case4:
Delete(&count);
break;
case5:
Show(count);
break;
case6:
break;
default:
printf("错误选择!
请重选");break;
}
}while(i!
=6);
return0;
}
voidInsert(int*count)
{inti,in_number;
if(*count==MaxSize)
{printf("空间已满!
");return;}
printf("请输入编号:
");
scanf("%d",&in_number);
for(i=0;i<*count;i++)
if(GuestList[i].number==in_number)
{printf("已经有相同的编号:
");return;}
GuestList[i].number=in_number;
printf("请输入姓名:
");
scanf("%s",GuestList[i].name);
printf("请输入人数:
");
scanf("%d",&GuestList[i].sum);
printf("请输入用餐时间:
");
scanf("%s",GuestList[i].time);
(*count)++;
}
voidSearch(intcount)
{inti,number,flag=1;
printf("请输入要查询的编号:
");
scanf("%d",&number);
for(i=0;iif(GuestList[i].number==number)
{printf("姓名:
%s",GuestList[i].name);
printf("人数:
%d",GuestList[i].sum);
printf("用餐时间:
%s",GuestList[i].time);
flag=0;
}
else
printf("没有查询到!
!
");
}
voidUpdate(intcount)
{inti,number,flag=1;
printf("请输入要修改数据的编号:
");
scanf("%d",&number);
for(i=0;iif(GuestList[i].number==number)
{
printf("请输入人数:
");
scanf("%d",&GuestList[i].sum);
printf("请输入用餐时间:
");
scanf("%s",&GuestList[i].time);
flag=0;
}
else
printf("没有查询到可以修改的数据!
!
");
}
voidDelete(int*count)
{inti,j,number,flag=1;
printf("请输入要删除数据的编号:
");
scanf("%d",&number);
for(i=0;i<*count&&flag;i++)
{if(GuestList[i].number==number)
{for(j=i;j<*count-1;j++)
GuestList[j]=GuestList[j+1];
flag=0;
(*count)--;
}
else
printf("没有查询到可以删除的数据!
!
");
}
}
voidShow(intcount)
{inti;
printf("\n");
printf("编号姓名人数用餐时间\n");
for(i=0;i{printf("%10d",GuestList[i].number);
printf("%12s",GuestList[i].name);
printf("%10d",GuestList[i].sum);
printf("%12s\n",GuestList[i].time);
}
}
在上面的程序中,客户的订餐信息是存储在一个数组中的。
数组是一种处理数据的存储方式,下面用单链表存储这组数据。
因为指针是C语言的精髓,不能掌握指针的用法,不能说学会了C语言。
要建立单链表,首先需要正确的定义每个结点的数据是如何构成的,下面是订餐信息存储在链表中的数据定义。
图13.5则是示意图,表示链表中有3个结点时的情况。
typedefstructguest_info{
Charname[8];//姓名
intsum;//人数
chartime[10];//用餐时间
intnumber;//编号
structguest_info*next;
}Guestlink;
刘娜2人11点1
汪寒3人11点502
李红5人12点3
…
Head头指针
对于单链表,插入,查询,修改,删除和显示也是必须要完成的5个操作。
曾在前面讨论过有关单链表的操作方式,本例是尝试将有关单链表的操作集中起来,构成一个完整的管理系统,供读者参考和使用。
图13.6显示程序部分运行情况。
3.3完整指针程序
#include
#include
#include
#defineMaxSize20
typedefstructguest_info
{
charname[8];
intsum;
chartime[10];
intnumber;
structguest_info*next;
}GuestLink,*Pointer;
voidInsert(Pointer*Head);
voidSearch(PointerHead);
voidUpdate(PointerHead);
voidDelete(Pointer*Head);
voidShow(PointerHead);
intmain()
{
PointerHead=NULL;
inti;
do
{printf("\n");
printf("1---插入(Insert)\n");
printf("2---查询(Search)\n");
printf("3---修改(Update)\n");
printf("4---删除(Delete)\n");
printf("5---显示(Show)\n");
printf("6---退出(Exit)\n");
scanf("%d",&i);
switch(i)
{case1:
Insert(&Head);
break;
case2:
Search(Head);
break;
case3:
Update(Head);
break;
case4:
Delete(&Head);
break;
case5:
Show(Head);
break;
case6:
break;
default:
printf("错误选择!
请重选");break;
}
}while(i!
=6);
return0;
}
voidInsert(Pointer*Head)
{
intin_number;
Pointerp,q,r;
printf("请输入编号:
");
scanf("%d",&in_number);
p=q=*Head;
while(p!
=NULL)
{
if(p->number==in_number)
{printf("已经有相同的编号;");return;}
else
{q=p;p=p->next;}
}
r=(Pointer)malloc(sizeof(GuestLink));
r->next=NULL;
if(r==NULL)
{printf("分配空间失败!
");return;}
if(q==NULL)
*Head=r;
else
{q->next=r;}
r->number=in_number;
printf("请输入姓名:
");
scanf("%s",r->name);
printf("请输入人数:
");
scanf("%d",&r->sum);
printf("请输入用餐时间:
");
scanf("%s",r->time);
}
voidSearch(PointerHead)
{
intflag=1;
intnumber;
Pointerp;
printf("请输入要查询的编号:
");
scanf("%d,d",&number);
p=Head;
while(p!
=NULL&&flag)
{
if(p->number==number)
{
printf("姓名:
%s",p->name);
printf("人数:
%d",p->sum);
printf("用餐时间:
%s",p->time);
flag=0;
}
else
p=p->next;
}
if(flag)
printf("没有查询到!
");
}
voidUpdate(PointerHead)
{
intflag=1;
intnumber;
Pointerp;
printf("请输入要修改数据的编号:
");
scanf("%d",&number);
p=Head;
while(p!
=NULL&&flag)
{if(p->number==number)
{
printf("请输入人数:
");
scanf("%d",p->sum);
printf("请输入用餐时间:
");
scanf("%s",p->time);
flag=0;
}
else
p=p->next;
}
if(flag)
printf("没有找到要修改的记录!
");
}
voidDelete(Pointer*Head)
{intflag=1;
intnumber;
Pointerp,q;
printf("请输入要删除数据的编号:
");
scanf("%d",&number);
p=q=*Head;
while(p!
=NULL&&flag)
{if(p->number==number)
{
if(p==*Head)
{*Head=p->next;free(p);}
else
{q->next=p->next;free(p);}
flag=0;
}
else
{q=p;p=p->next;}
}
if(flag)
printf("没有查询到可以删除的数据!
!
");
}
voidShow(PointerHead)
{
Pointerp;
p=Head;
while(p!
=NULL)
{
printf("姓名:
%-10s",p->name);
printf("人数:
%-10d",p->sum);
printf("用餐时间:
%-10s",p->time);
printf("编号:
%-10d\n",p->number);
p=p->next;
}
}
4.运行结果
运行结果见图13.16。
5.小结
如果能够将本例的数据存储到文件中,那么就真正地实现了一个小型的管理信息系统(能将数据存储在磁盘中),请读者参考本章案例1有关文件操作的使用方法对本例进行修改,相信能有很大的收获。