1、计算机编程设计报告模板 计算机编程设计报告题 目: 电话订餐信息处理 专业名称: 信息与计算科学 班 级: 2 学 号: 2 姓 名: 孙 龙 指导教师: 组织单位: 时 间: 1. 设计目的 一个小饭馆的生意非常红火,要想用餐必须提前一天打电话预订。假设我们是饭馆负责接受电话预订的服务员,我们需要做些什么呢?首先,需要准备一张大小适当的白纸,等待顾客的电话。李红最先打进了电话,她预约第2天中午12点用餐,用餐人数5人,服务员在纸上做了如下记录:李红 12点 5人“;接着,刘娜、汪寒、孙杰和赵军分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是: 孙杰随后又来了电话,将用餐时间推
2、后一个小时,那么记录的内容也应该做相应的修改。刘娜来用餐以后,可以将其信息从纸上划去。下面编写程序处理电话订餐的情况。2. 功能描述 这是一个小型的管理系统,可以使用结构数组存储订餐的情况。每个结构的数据可以包括姓名、人数、用餐时间等。 为了方便处理,还需要给每个打进电话的客户编个号,就像在饭馆等候用餐时,服务员会发给客户一样。3. 总体设计3.1 功能模块设计可以声明以下的结构体类型:struct guest_info /姓名char name8; /人数int sum; /用餐时间char time10; /编号int number;GuestListMaxSize;程序包括5个函数,In
3、sert,Search,Update,Delete和Show,分别负责插入、查询、修改、删除和显示数据。一般的信息管理系统都应该具备这几个功能,小型信息管理系统也不例外。程序采用简单菜单驱动方式,屏幕上显示菜单如下: 1插入(Insert) 2查询(Search) 3修改(Update) 4删除(Delete) 5显示(Show) 6退出(Exit)3.2 完整数组程序#include#include#define MaxSize 20struct guest_info char name8; int sum; char time10; int number; GuestListMaxSize
4、;void Insert(int *);void Search(int);void Update(int);void Delete(int *);void Show(int);int main() int i; int count=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)case 1:Ins
5、ert(&count); break; case 2:Search(count); break; case 3:Update(count); break; case 4:Delete(&count); break; case 5:Show(count); break; case 6:break; default:printf(错误选择! 请重选);break; while(i!=6); return 0; void Insert(int*count) int i,in_number; if(*count=MaxSize) printf(空间已满!);return; printf(请输入编号:)
6、; scanf(%d,&in_number); for(i=0;i*count;i+) if(GuestListi.number=in_number) printf(已经有相同的编号:);return; GuestListi.number=in_number; printf(请输入姓名:); scanf(%s,GuestListi.name); printf(请输入人数:); scanf(%d,&GuestListi.sum); printf(请输入用餐时间:); scanf(%s,GuestListi.time); (*count)+; void Search(int count)int i
7、,number,flag=1;printf(请输入要查询的编号:); scanf(%d,&number);for(i=0;icount&flag;i+)if(GuestListi.number=number)printf(姓名:%s,GuestListi.name);printf(人数:%d,GuestListi.sum);printf(用餐时间:%s,GuestListi.time);flag=0;elseprintf(没有查询到!);void Update(int count)int i,number,flag=1;printf(请输入要修改数据的编号:);scanf(%d,&number
8、);for(i=0;icount&flag;i+)if(GuestListi.number=number)printf(请输入人数:);scanf(%d,&GuestListi.sum);printf(请输入用餐时间:);scanf(%s,&GuestListi.time);flag=0;elseprintf(没有查询到可以修改的数据!);void Delete(int*count)int i,j,number,flag=1;printf(请输入要删除数据的编号:);scanf(%d,&number);for(i=0;i*count&flag;i+)if(GuestListi.number=n
9、umber)for(j=i;j*count-1;j+) GuestListj=GuestListj+1;flag=0;(*count)-;else printf(没有查询到可以删除的数据!);void Show(int count)int i;printf(n);printf(编号 姓名 人数 用餐时间n);for(i=0;icount;i+)printf(%10d,GuestListi.number);printf(%12s,GuestListi.name);printf(%10d,GuestListi.sum);printf(%12sn,GuestListi.time);在上面的程序中,客
10、户的订餐信息是存储在一个数组中的。数组是一种处理数据的存储方式,下面用单链表存储这组数据。因为指针是C语言的精髓,不能掌握指针的用法,不能说学会了C语言。要建立单链表,首先需要正确的定义每个结点的数据是如何构成的,下面是订餐信息存储在链表中的数据定义。图13.5则是示意图,表示链表中有3个结点时的情况。typedef struct guest_info Char name8; /姓名int sum; /人数char time10; /用餐时间int number; /编号struct guest_info *next;Guestlink;刘娜2人11点1汪寒3人11点50 2李红5人12点3
11、Head 头指针 对于单链表,插入,查询,修改,删除和显示也是必须要完成的5个操作。曾在前面讨论过有关单链表的操作方式,本例是尝试将有关单链表的操作集中起来,构成一个完整的管理系统,供读者参考和使用。图13.6显示程序部分运行情况。3.3 完整指针程序#include#include#include#define MaxSize 20typedef struct guest_info char name8; int sum; char time10; int number; struct guest_info * next;GuestLink, * Pointer;void Insert(Po
12、inter * Head);void Search(Pointer Head);void Update(Pointer Head);void Delete(Pointer * Head);void Show(Pointer Head);int main() Pointer Head=NULL; int i; 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
13、); scanf(%d,&i); switch(i) case 1:Insert(&Head); break; case 2:Search(Head); break; case 3:Update(Head); break; case 4:Delete(&Head); break; case 5:Show(Head); break; case 6:break; default:printf( 错误选择! 请重选);break; while(i!=6); return 0;void Insert(Pointer * Head) int in_number; Pointer p,q,r; print
14、f(请输入编号:); 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-na
15、me); printf(请输入人数:); scanf(%d,&r-sum); printf(请输入用餐时间:); scanf(%s,r-time);void Search(Pointer Head) int flag=1; int number; Pointer p;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; els
16、e p=p-next; if (flag) printf(没有查询到!);void Update(Pointer Head) int flag=1; int number; Pointer p;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(没有找到要修
17、改的记录!);void Delete(Pointer * Head) int flag=1; int number; Pointer p,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(没有查询到可以删除的数据!);void Show(Pointer Head) Pointer p; p=Head; while (p!=NULL) printf(姓名:%-10s,p-name); printf(人数:%-10d,p-sum); printf(用餐时间:%-10s,p-time); printf(编号:%-10dn,p-number); p=p-next; 4. 运行结果 运行结果见图13.16。5. 小结 如果能够将本例的数据存储到文件中,那么就真正地实现了一个小型的管理信息系统(能将数据存储在磁盘中),请读者参考本章案例1有关文件操作的使用方法对本例进行修改,相信能有很大的收获。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1