C语言程序设计
课程设计报告
设计题目:餐饮结账理系统设计
1 设计务
11 设计题目描述
功:餐饮结账信息包括:编号时间台面号顾客数量接服务生实收金额
试设计餐饮结账理系统提供功:
1结账信息录入修改删功
2查询浏览功:台面号查询接服务生查询
3 实收金额排序
4统计总收入顾客总数等功
12 设计求
(1)仔细审题明确题目求
(2)结构化程序设计思想程序模块化相独立功写成函数
(3)求编程调试通演示程序编写规范添加适注释
(4)课程设计报告容格式求撰写课程设计报告印
2 设计方案说明
21 数存储结构
餐饮结账信息包括:编号时间台面号顾客数量接服务生实收金额
需结构体结账信息止结构体数组里定义结构体struct bill定义数组bill[M]
struct bill
{
int num 编号
int time[4] 时间
int table 台面号
int count 顾客数量
char name[20] 服务生姓名
int money 实收金额
}bill[M]
22函数间调关系说明
main
menu
Input
modify
deleter
search
search2
sort
income
number
modify_a
save
Display_all
readFromFile
display
23函数说明
1)函数 void menu()
void menu() 菜单函数
函数菜单处进入模块
变量 c :c选择进入功
C1?
否
C2?
执行 否
Input
执行 C…………
Modify
2)函数void input()
void input() 信息录入录入信息存入文件bill中
函数键盘输入信息录入文件bill中
scanf输入结构体中量
开文件bill成功
选择输入信息数N
输入第i信息
直i>N
保存关闭文件
3)函数 void readFromFile()
void readFromFile() 文件中读取信息存入数组bill[30]
函数文件bill中信息读出存入bill[]
开文件
读第i文件
直i>N
关闭文件
4)函数 void save()
void save() *保存函数*
函数修改删保存数
开文件
写入第i文件
直i>N
关闭文件
5)函数 void display_all()
void display_all() 信息全部显示
通函数显示输入信息
readFromFile()读取文件中信息
printf显示第i信息
直i
6)函数 void display(int i)
void display(int i) 单信息显示 i修改信息号modify函数中读入
函数修改等功显示第i信息核
printf显示第i信息数
7)函数 int modify_a(int i)
int modify_a(int i) 修改函数时调函数
函数修改中信息返回数值确定否修改
变量c确定修改项目
键盘输入C值
c>7||c<1
否
错误 w12
重试 c1
否
输入新信息 c…………
显示修改第i信息
输入w1值
返回值w1
8) 函数 void modify()
void modify() 修改信息函数
函数修改中信息保存
文件bill中读入数
w01
k1
输入n值
循环判断bill[i]numn0?
否
ki k1
输出记录
w1modify_a(k)
w11?
否
保存 输入w0值 结束
9)函数 void deleter()
void deleter() 删记录
函数删记录中条信息
文件bill中读入信息
w11
k1
输入n
循环判断nbill[i]num0?
否
ki k1
记录
display(i)
输入w0 w01?
否
bill[i]bill[i+1] save() 结束
输入w1值
10)函数 void search1()
void search1() 台面号查询
函数台面号查询信息输出信息
文件bill中读入信息
w01
输入number
循环判断numberbill[i]table?
否
ji j1
display(j) 号
输入w0值
11)函数 void search2()
void search2() 接服务生查询
函数接服务生姓名查询信息显示
文件bill中读入信息
w01
输入a[20]
循环判断strcmp(bill[i]namea)0?
否
ji j1
display(j) 姓名
输入w0值
12)函数 void sort()
void sort() 金额排序
函数金额信息进行排序输出
关键变量struct bill t 中间变量交换bill[i]bill[i+1]值
文件bill中读取文件
bill[i]money>bill[i+1]money)
否
tbill[i]bill[i]bill[i+1]bill[i+1]t 变
i0 i
i0 i
输入w0值判断否返回
13)函数 void income()
void income() 总收入统计
函数统计总收入输出
关键变量sum统计总收入
文件bill中读取文件
sumsum+bill[i]money
i0i
w02
输入w0值判断否返回
14)函数 void number()
void number() 顾客总数统计
函数统计顾客总数
关键变量number统计顾客总数
文件bill中读取文件
numbernumber+bill[i]count
i0i
w02
输入w0值判断否返回
3设计题目源代码清单
#include
#include
#include
#define M 30
struct bill
{
int num 编号
int time[4] 时间
int table 台面号
int count 顾客数量
char name[20] 服务生姓名
int money 实收金额
}bill[M]
int N
*菜单*
void menu()
{
char c
void input()
void modify()
void deleter()
void search1()
void search2()
void sort()
void income()
void number()
do
{
printf(\n\n\n)
printf( <<<<餐饮结账理系统>>>> \n)
printf(\n)
printf(\n\n)
printf(1录入 2修改 3删 \n\n)
printf(4台面号查询 5接服务生查询\n\n)
printf(6金额排序 7总收入 8顾客总数 \n\n)
printf( 0退出 \n\n)
printf(\n)
printf(\n\n)
printf(请选择服务(08))
cgetchar()
switch(c)
{
case '1' {input()getchar()break}
case '2' {modify()getchar()break}
case '3' {deleter()getchar()break}
case '4' {search1()getchar()break}
case '5' {search2()getchar()break}
case '6' {sort()getchar()break}
case '7' {income()getchar()break}
case '8' {number()getchar()break}
case '0'
{
printf(\n谢谢见)
exit(0)
printf(\n)
}
default
{
printf(\n输入误重试)
cgetchar()
}
}
}while(1)
}
*信息录入录入信息存入文件bill中*
void input()
{
FILE *fp
int i
if((fpfopen(billw))NULL)
{
printf(cannot open the file\n)
return
}
printf(输入信息数(0d)M1)
scanf(d&N)
printf(请输入数\n)
for(i0i
printf(输入账单 d 信息\ni+1)
printf(编号)
scanf(d&bill[i]num)
printf(时间(月日 时分))
scanf(dddd&bill[i]time[0]&bill[i]time[1]&bill[i]
time[2]&bill[i]time[3])
printf(台面号)
scanf(d&bill[i]table)
printf(顾客数量)
scanf(d&bill[i]count)
printf(接服务生)
scanf(sbill[i]name)
printf(实收金额)
scanf(d&bill[i]money)
}
for(i0i
if(fwrite(&bill[i]sizeof(struct bill)1fp)1)
{
printf(file write error\n)
return
}
}
fclose(fp)
}
*文件中读取信息存入数组sbill[N]*
void readFromFile()
{
int i
FILE *fp
if((fpfopen(billrb))NULL)
{
printf(cannot open the file\n)
return
}
for(i0i
fclose(fp)
}
*保存函数*
void save()
{
FILE *fp
int i
if((fpfopen(billw))NULL)
{
printf(cannot open the file\n)
return
}
for(i0i
if(bill[i]num'\0')
if(fwrite(&bill[i]sizeof(struct bill)1fp)1)
{
printf(file write error\n)
return
}
}
fclose(fp)
}
*信息全部显示*
void display_all()
{
int i
readFromFile()
printf(全部信息:\n)
for(i0i
printf(编号d 时间dd dd 台面号d 顾客数量d 接服务生s 实施金额dbill[i]numbill[i]time[0]bill[i]time[1] bill[i]time[2]bill[i]time[3]bill[i]tablebill[i]countbill[i]namebill[i]money)
printf(\n)
}
}
*单信息显示*
void display(int i)
{
printf(编号d 时间dddd 台面号d 顾客数量d 接服务生s 实施金额dbill[i]numbill[i]time[0]bill[i]time[1]bill[i]time[2]bill[i]time[3]bill[i]tablebill[i]countbill[i]namebill[i]money)
}
* 修改函数调函数*
int modify_a(int i)
{
int cw1
printf(\n修改选项>\n\n 1)编号 2)时间 3)台面号 4)顾客数量 5)接服务生 6)实收金额 7)取消返回)
printf(请选择 [ ])
scanf(d&c)
if(c>7||c<1)
{
printf(\n选择错误请重试)
getchar()
}
do
{
switch(c)
{ case 1 printf(编号) scanf(d&bill[i]num) break
case 2printf(时间) scanf(dddd&bill[i]time[0]&bill
[i]time[1]&bill[i]time[2]&bill[i]time[3])break
case 3 printf(台面号) scanf(d&bill[i]table) break
case 4 printf(顾客数量) scanf(d&bill[i]count) break
case 5 printf(接服务生) scanf(sbill[i]name) break
case 6 printf(实收金额) scanf(d&bill[i]money) break
case 7 menu()
}
printf(\n现\n)
display(i)
printf(\n确定\n 1) 2)重新修改 3)返回保存 [ )
scanf(d&w1)
}while(w12)
return(w1)
}
*修改信息*
void modify()
{
int inkw01w1
readFromFile()
do
{
k1
display_all()
do
{
printf(\n输入修改编号数\n编号)
scanf(d&n)
for(i0i
{
ki
}
if(k1)
printf(\n\n没记录请重新输入)
}while(k1)
w1modify_a(k)
if(w11)
{
printf(\n 修改成功 \n否继续 1) 2)保存返回 [)
save()
scanf(d&w0)
}
}while(w01)
}
*删记录*
void deleter()
{
int iknw0w1
readFromFile()
do
{
k1
display_all()
do
{
printf(\n输入删编号:\n)
scanf(d&n)
for(i0i
{
ki
}
if(k1)
printf(\n记录请重新输入\n)
}while(k1)
display(i)
printf(\n确定删? 1) 2)返回\n [)
scanf(d&w0)
if(w01)
{
for(iki
bill[i]bill[i+1]
save()
}
}
else break
display_all()
printf(\n删成功否继续? 1) 2)返回 [ )
scanf(d&w1)
}while(w11)
}
*台面号查询*
void search1()
{
int ijw0
int number
readFromFile()
do
{
j1
printf(\n请输入台面号查询)
scanf(d&number)
for(i0i
if(numberbill[i]table)
{
ji
display(j)
printf(\n)
}
}
if(j1)
printf(号)
printf(\n继续 1) 2)返回 [)
scanf(d&w0)
}while(w01)
}
*接服务生查询*
void search2()
{
char a[20]
int ijw0
do
{
j1
printf(\n请输入接服务生姓名查询)
scanf(sa)
for(i0i
if(strcmp(bill[i]namea)0)
{
ji
display(j)
printf(\n)
}
}
if(j1)
printf(姓名)
printf(\n继续 1) 2)返回 [ )
scanf(d&w0)
}while(w01)
}
*金额排序*
void sort()
{
int ijw0
struct bill t
readFromFile()
printf(\n\n)
for(j0j
tbill[i]
bill[i]bill[i+1] *调换bill[i]bill[i+1]值*
bill[i+1]t
}
printf(\n)
for(i0i
display(i)
printf(\n)
}
do
{
printf(\n返回 1) 2)否)
scanf(d&w0)
}while(w02)
}
*总收入统计*
void income()
{
int isum0w0
readFromFile()
for(i0i
printf(\n\n)
printf(总收入dsum)
do
{
printf(\n返回 1) 2)否)
scanf(5d&w0)
}while(w02)
}
*顾客总数统计*
void number()
{
int inumber0w0
readFromFile()
for(i0i
printf(\n\n)
printf(顾客总数dnumber)
do
{
printf(\n返回 1) 2)否)
scanf(5d&w0)
}while(w02)
}
*函数*
void main()
{
menu()
}
4 程序测试
41 测试数说明
测试数包括:编号时间台面号顾客数量接服务生实收金额
编号
时间
(int 数组)
台面号
Int
顾客数量
Int
接服务生
char数组
实收金额
Int
1
72 1212
5
2
li
32
2
72 1222
3
6
wang
128
3
72 1232
2
8
zhao
186
4
72 1242
4
3
zhang
95
5
72 1252
1
5
li
105
42 输出结果说明
1)菜单界面进入系统首先显示菜单通选择数字运餐饮结账系统项功
图1 菜单
2)录入界面选择1根提示输入需输入信息数次录入条信息
图2 录入
3)修改界面选择2次输入修改编号1 项目6更改35保存返回
图3 修改信息
4)台面号查询信息选择4次查询台面号36返回
图4 台面号查询
5)服务生姓名查询选择5查询服务生li返回
图5 服务生查询
6)金额排序选择6金额排序显示返回
图6 金额排序
7)求总收入选择7求出总收入返回
图7 总收入
8)求顾客总数选择8求出顾客总数返回
图8 顾客总数
9)删信息选择3输入删编号3删显示返回
图9 删信息
10)退出程序选择0退出餐饮结账理系统
图10 退出
5 课程设计总结
通期周课程设计C语言门课程更深步解计算机程序设计重理技术基础学中占着十分重位
1. 次课程设计运C语言知识编写参饮结账理系统中遇少问题时编写普通常见程序时感觉心应手非常简单次程序求第感觉法手通老师指导终思路编写中碰修改函数时知道通直接输入代原数知道修改更加完美通网查找资料解决问题数互影响修改改必须重新输入遍问题删开始时绞脑计想该删试许办法法完成功完成排序时互换bill[i]bill[i+1]影响想代前想法剩细节问题例项功完成返回菜单退出时返回(解决方法菜单函数中加入while(1)退出数字9变0)功完成会直接返回控制(函数do……while……w0控制退出否)剩余符号&
d等定注意细节
2.通完成课题进步熟悉C语言基知识掌握真正较复杂程序基算法思想掌握C语言文件操作(包括磁盘读入磁盘写入容)进步熟悉结构体法数组建立运函数调等时知道学门课程仅学书知识够较强实践力学知识实践实践编写程序更理解掌握书东西
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档