饭卡管理系统实训报告书.docx

上传人:b****7 文档编号:15419127 上传时间:2023-07-04 格式:DOCX 页数:38 大小:558.45KB
下载 相关 举报
饭卡管理系统实训报告书.docx_第1页
第1页 / 共38页
饭卡管理系统实训报告书.docx_第2页
第2页 / 共38页
饭卡管理系统实训报告书.docx_第3页
第3页 / 共38页
饭卡管理系统实训报告书.docx_第4页
第4页 / 共38页
饭卡管理系统实训报告书.docx_第5页
第5页 / 共38页
饭卡管理系统实训报告书.docx_第6页
第6页 / 共38页
饭卡管理系统实训报告书.docx_第7页
第7页 / 共38页
饭卡管理系统实训报告书.docx_第8页
第8页 / 共38页
饭卡管理系统实训报告书.docx_第9页
第9页 / 共38页
饭卡管理系统实训报告书.docx_第10页
第10页 / 共38页
饭卡管理系统实训报告书.docx_第11页
第11页 / 共38页
饭卡管理系统实训报告书.docx_第12页
第12页 / 共38页
饭卡管理系统实训报告书.docx_第13页
第13页 / 共38页
饭卡管理系统实训报告书.docx_第14页
第14页 / 共38页
饭卡管理系统实训报告书.docx_第15页
第15页 / 共38页
饭卡管理系统实训报告书.docx_第16页
第16页 / 共38页
饭卡管理系统实训报告书.docx_第17页
第17页 / 共38页
饭卡管理系统实训报告书.docx_第18页
第18页 / 共38页
饭卡管理系统实训报告书.docx_第19页
第19页 / 共38页
饭卡管理系统实训报告书.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

饭卡管理系统实训报告书.docx

《饭卡管理系统实训报告书.docx》由会员分享,可在线阅读,更多相关《饭卡管理系统实训报告书.docx(38页珍藏版)》请在冰点文库上搜索。

饭卡管理系统实训报告书.docx

饭卡管理系统实训报告书

 

一、实训题目与要求

 

1.问题提出

学校等大单位集体食堂买饭时间非常集中,这时如果食堂使用饭票买饭,大家就得排长队等候,而且还有经过先去买饭票等麻烦的经历。

因此食堂提出使用计算机进行管理,食堂用饭卡卖饭,不仅提高卖饭速度,还更易于管理减少不必要的麻烦,同时减轻工作人员的工作负担。

因此,用饭卡管理系统解决了这个问题。

2.功能要求

重复显示主菜单,在主菜单上选择任意一项,均实现相应功能。

在主菜单中选择1,建立名为card.dat的文件,并在其中添加若干人的饭卡号,金额,挂失信息,要求饭卡号唯一。

在主菜单中选择2,要求用户输入卡号,饭费,然后系统自动从该人的饭卡中减去饭钱,。

并显示金额,如果饭卡中不足5元,则不能买饭,显示“余额不足,请续钱!

”,如果挂失信息为真,则显示“本卡已挂失!

”。

在主菜单中选择3,要求用户输入饭卡号,续钱额,续钱完成后分别显示续钱前后的金额。

在主菜单中选择4,添加新饭卡,这时要求新饭卡号和以有的卡号不能重号。

在主菜单中选择5,注销旧饭卡。

在主菜单中选择6,要求用户输入饭卡号和挂失信息,然后更新该饭卡的挂失信息。

在主菜单中选择7,此项功能学生自由发挥,根据本组爱好增加新功能。

在主菜单中选择0,显示结束信息,按任意键后,退出本系统。

3.任务分工

组长:

潘永培

负责小组主程序的模块设计和主函数的流程图,以及myprint,mycreate两个函数的算法设计和模块流程图,起到了领导与组织的较好作用。

组员:

余文宇

负责小组程序的mybuy,mysave,myadd三个函数的算法设计和相应模块的流程图。

积极配合全组的工作,塌实肯干。

组员:

罗耀祖

负责小组程序的mydel,mydlost,mydisplayall三个函数的算法设计和相应模块的流程图。

与其他两位同学协作默契,认真卖力。

 

二、设计实训题目功能

 

1.总体设计

 

 

图1:

主模块图

 

2.算法设计

 

图2:

主流程图

 

图3:

函数mycreate流程图

图4:

函数mybuy流程图

 

图5:

函数mysave流程图

 

图6:

函数myadd流程图

图7:

函数mydelete流程图

图8:

函数mylost流程图

图9:

函数mydisplayall流程图

 

3.数据结构

名称

属性

长度

说明

num

string

10

卡号

name

string

10

姓名

money

float

金额

g

int

2

挂失信息

4.程序代码设计

(1)函数main()主要用了switch语句

…………

switch(choose)

{

case'1':

mycreate();break;

case'2':

mybuy();break;

case'3':

mysave();break;

case'4':

myadd();break;

case'5':

mydel();break;

case'6':

mylost();break;

case'7':

mydisplayall();break;

case'0':

exit(0);

default:

printf("\n%c为非法选项!

\n",choose);

}

…………

(2)函数myprint()主要使用函数printf输出

(3)函数mycreate()主要使用dowhile和while语句实现:

…………

printf("\n请输入第一个记录:

\n");

printf("卡号(用#结束输入):

");

do

{

gets(temp.num);

}

while(strcmp(temp.num,"")==0);

printf("姓名(用#结束输入):

");

gets(temp.name);

printf("金额(用#结束输入):

");

scanf("%f",&temp.money);

printf("挂失信息(1有,-1无)(用#结束输入):

");

scanf("%d",&temp.g);

while(temp.num[0]!

='#')

{

fprintf(fp,"%15s%15s%15f%15d\n",temp.num,temp.name,temp.money,temp.g);

i++;

printf("\n请输入第%d个记录:

\n",i);

printf("卡号(用#结束输入):

");

do

{

gets(temp.num);

}

while(strcmp(temp.num,"")==0);

printf("姓名(用#结束输入):

");

gets(temp.name);

printf("金额(用#结束输入):

");

scanf("%f",&temp.money);

printf("挂失信息(1有,-1无)(用#结束输入):

");

scanf("%d",&temp.g);

}…………

(4)函数mybuy()主要使用if嵌套和for循环实现:

……if(n==0)

{

("\n文件中无记录!

\n");return;

}

printf("\n请输入要买饭的学号:

");

gets(temp.num);

for(p=record;p

if(strcmp(temp.num,p->num)==0)

{

find=p;break;

}

if(p==record+n)

{

printf("\n无此卡!

\n");return;

}

if(p->g==-1)

{

printf("此卡已挂失\n");

return;

}

else

{

if(p->money<5.0)

{printf("不足5元,请续钱\n");

return;

}

if(p->money>5.0)

{printf("请输入金额");

scanf("%f",&mtemp);

if(p->money>mtemp)

{

printf("Before:

%f元\n",(p->money));

(p->money)=(p->money)-mtemp;

printf("After:

%f元\n",(p->money));

}

if(p->money

{

printf("金额不足,请续钱\n");

return;

}

}

}

fp=fopen("d:

\\JiLu.dat","w");

if(fp==NULL)

{

printf("\n打开文件失败!

\n");return;

}………………

(5)函数mysave()主要利用for循环和if嵌套:

………………

for(p=record;p

if(strcmp(temp.num,p->num)==0)

{

find=p;break;

}

if(p==record+n)

{

printf("\n无此卡!

\n");return;

}

if(p->g==-1)

{

printf("此卡已挂失\n");

return;

}

printf("请输入金额:

");

scanf("%f",&mtemp);

printf("Before:

%f元\n",(p->money));

(p->money)=(p->money)+mtemp;

printf("After:

%f元\n",(p->money));…………

(6)函数myadd()主要使用dowhile和for循环:

………………

do

{

printf("\n请输入新添加的卡号:

");

do

{

gets(temp.num);

}

while(strcmp(temp.num,"")==0);

printf("\n请输入新添加的姓名:

");

gets(temp.name);

printf("\n请输入新添加的金额:

");

scanf("%f",&temp.money);

printf("\n请输入新添加的挂失信息:

");

scanf("%d",&temp.g);

for(p=record;p

if(strcmp(temp.num,p->num)==0)

{

printf("\n卡号重复,要重新输入吗(Y/N)?

");

do

{

c=getche();

}

while(c!

='Y'&&c!

='y'&&c!

='N'&&c!

='n');

putchar('\n');

break;

}

if(p==record+n)

{*p=temp;break;}

}

while(c=='y'||c=='Y');…………

(7)函数mydel()主要通过for和if打开和写入文件:

…………

for(k=record;k

if(strcmp(tempnum,k->num)==0)break;

if(k

for(p=k;p

*p=*(p+1);

elseprintf("\n无此卡!

\n");

fp=fopen("d:

\\JiLu.dat","w");

if(fp==NULL)

{

printf("\n打开文件失败!

\n");return;

}

for(p=record;p

fprintf(fp,"%15s%15s%15f%15d\n",p->num,p->name,&(p->money),&(p->g));……

(8)函数mylost()主要使用while、if、for修改信息:

……while(feof(fp)==0)

{

fscanf(fp,"%15s%15s%15f%15d\n",p->num,p->name,&p->money,&p->g);

p++;

n++;

}

fclose(fp);

if(n==0)

{

printf("\n文件中无记录!

\n");return;

}

printf("\n请输入要修改挂失信息的卡号:

");

gets(temp.num);

for(p=record;p

if(strcmp(temp.num,p->num)==0)

{

find=p;break;

}

if(p==record+n)

{

printf("\n无此卡!

\n");return;

}

printf("请输入挂失信息:

");

scanf("%d",&p->g);…………

(9)函数mydisplayall()主要通过printf和while输出信息:

……^printf("卡号姓名金额挂失信息\n");

while(feof(fp)==0)

{

fscanf(fp,"%15s%15s%15f%15d\n",temp.num,temp.name,&temp.money,&temp.g);

printf("%15s%15s%15f%15d\n",temp.num,temp.name,temp.money,temp.g);

n++;

}

if(n==0)printf("\n文件中无记录!

\n");

elseprintf("\n文件中共有%d个记录!

\n",n);……

注:

完整程序请参见附录A

 

5.测试与调试

Main

:

测试数据类型

测试数据

预期结果

实测结果

合法数据

1

调用mycreate

成功调用

2

调用mybuy

成功调用

3

调用mysave

成功调用

4

调用myadd

成功调用

5

调用mydel

成功调用

6

调用mylost

成功调用

7

调用mydisplayall

成功调用

0

结束

结束

N或n

按任意键退出

按任意键退出

Y或y

返回主菜单

返回主菜单

非法数据

9

显示“9为非法选项”

显示“9为非法选项”

mycreate:

测试数据类型

测试数据

预期结果

实测结果

合法数据

输入卡号:

1

输入卡号

输入卡号

输入姓名:

小李

输入姓名

输入姓名

输入金额:

100

输入金额

输入金额

输入挂失信息:

1

输入挂失信息

输入挂失信息

N或n

按任意键退出

按任意键退出

Y或y

返回主菜单

返回主菜单

非法数据

输入金额:

a

无法输入

无法输入

输入挂失信息:

a

无法输入

无法输入

mybuy:

测试数据类型

测试数据

预期结果

实测结果

合法数据

输入买饭卡号1

显示“输入金额”

显示“输入金额”

输入卡号99

显示“无此卡”

显示“无此卡”

输入卡号1金额1

显示余额99元

显示余额99

输入卡号1金额99

显示余额1元,金额不足五元,请续钱

显示余额1元,金额不足五元,请续钱

输入卡号1金额101

显示“金额不足,请续钱”

显示“金额不足,请续钱”

输入卡号2

显示“此卡已挂失”

显示“此卡已挂失”

“N”or”n”

按任意键退出

按任意键退出

“Y”or”y”

返回主菜单

返回主菜单

非法数据

输入卡号a

显示“无此卡”

显示“无此卡”

输入卡号1金额a

显示无意义数字

显示无意义数字

mysave:

测试数据类型

测试数据

预期结果

实测结果

合法数据

输入续费卡号1

显示“输入金额”

显示“输入金额”

输入续费卡号1金额1

显示余额101

显示余额101

输入续费卡号2

显示”此卡已挂失”

显示”此卡已挂失”

输入续费卡号99

显示“无此卡”

显示“无此卡”

“N”or”n”

按任意键退出

按任意键退出

“Y”or”y”

返回主菜单

返回主菜单

非法数据

输入续费卡号a

显示“无此卡”

显示“无此卡”

输入续费卡号1金额a

显示无意义数字

显示无意义数字

myadd:

测试数据类型

测试数据

预期结果

实测结果

合法数据

输入卡号:

2

输入卡号

输入卡号

输入姓名:

小王

输入姓名

输入姓名

输入金额:

200

输入金额

输入金额

输入挂失信息:

-1

输入挂失信息

输入挂失信息

N或n

按任意键退出

按任意键退出

Y或y

返回主菜单

返回主菜单

非法数据

输入金额:

a

无法输入

无法输入

输入挂失信息:

a

无法输入

无法输入

mydel:

测试数据类型

测试数据

预期结果

实测结果

合法数据

输入卡号:

1

删除饭卡1

删除饭卡1

输入卡号:

3

无此卡

无此卡

N或n

按任意键退出

按任意键退出

Y或y

返回主菜单

返回主菜单

非法数据

输入卡号:

a

无法输入

无此卡

mylost:

测试数据类型

测试数据

预期结果

实测结果

合法数据

输入卡号1挂失信息-1

卡1挂失

卡1挂失

输入卡号2挂失信息1

卡2解除挂失

卡2解除挂失

“N”or”n”

按任意键退出

按任意键退出

“Y”or”y”

返回主菜单

返回主菜单

非法数据

输入卡号a

显示“无此卡”

显示“无此卡”

输入卡号1挂失信息3

挂失信息无意义

挂失信息无意义

输入卡号1挂失信息a

挂失信息不变

挂失信息不变

mydisplayall:

测试数据类型

测试数据

预期结果

实测结果

合法数据

N或n

按任意键退出

按任意键退出

Y或y

返回主菜单

返回主菜单

 

2.结束语

这次实训非常的感谢指导老师对我们的帮助,还有同学们放弃自己的任务来帮我们改错。

在这里我们组谢谢各位帮助过我们的人,特别是指导老师对我们帮助才使我们顺利地完成任务。

 

附录1程序清单

#include

#include

#include

#include

#defineN100

 

structcard

{

charnum[10];charname[10];floatmoney;intg;

};

voidmyprint();

voidmycreate();

voidmybuy();

voidmysave();

voidmyadd();

voidmydel();

voidmylost();

voidmydisplayall();

voidmain()

{

charchoose='\0',yes_no='\0';

do

{

myprint();

printf("");

choose=getch();

switch(choose)

{

case'1':

mycreate();break;/*创建*/

case'2':

mybuy();break;/*买饭*/

case'3':

mysave();break;/*续钱*/

case'4':

myadd();break;/*添加*/

case'5':

mydel();break;/*注销*/

case'6':

mylost();break;/*挂失*/

case'7':

mydisplayall();break;/*显示全部*/

case'0':

exit(0);

default:

printf("\n%c为非法选项!

\n",choose);

}

printf("\n要继续选择吗(Y/N)?

\n");

do

{

yes_no=getche();

}

while(yes_no!

='Y'&&yes_no!

='y'&&yes_no!

='N'&&yes_no!

='n');

}while(yes_no=='Y'||yes_no=='y');

}

 

voidmyprint()/*显示菜单界面*/

{

system("cls");/*调用清屏函数。

若在TC下运行,改用clrscr()*/

printf("|-------------------------------------------|\n");

printf("|请输入选项编号(0-7):

|\n");

printf("|-------------------------------------------|\n");

printf("|1----创建饭卡|\n");

printf("|2----买饭|\n");

printf("|3----续钱|\n");

printf("|4----添加新饭卡|\n");

printf("|5----注销旧饭卡|\n");

printf("|6----设置与解除挂失|\n");

printf("|7----显示全部信息|\n");

printf("|0----退出|\n");

printf("|-------------------------------------------|\n");

}

 

voidmycreate()/*定义创建饭卡的函数*/

{

inti=1;

structcardtemp={0};

FILE*fp=NULL;

fp=fopen("d:

\\JiLu.dat","w");

if(fp==NULL)

{

printf("\n打开文件夹失败!

\n");return;

}

system("cls");/*调用清屏函数。

若在TC下运行,改用clrscr()*/

printf("\n请输入第一个记录:

\n");

printf("卡号(用#结束输入):

");

do

{

gets(temp.num);

}

while(strcmp(temp.num,"")==0);

printf("姓名(用#结束输入):

");

gets(temp.name);

printf("金额(用#结束输入):

");

scanf("%f",&temp.money);

printf("挂失信息(1有,-1无)(用#结束输入):

");

scanf("%d",&temp.g);

while(temp.num[0]!

='#')

{

fprintf(fp,"%15s%15s%15f%15d\n",temp.num,temp.name,temp.money,temp.g);

i++;

printf("\n请输入第%d个记录:

\n",i);

printf("卡号(用#结束输入):

");

do

{

gets(temp.num);

}

while(strcmp(temp.num,"")==0);

printf("姓名(用#结束输入):

");

gets(temp.name);

printf("金额(用#结束输入):

");

scanf("%f",&temp.money);

printf("挂失信息(1有,-1无)(用#结束输入):

");

scanf("%d",&temp.g);

}

fclose(fp);

}

voidmybuy()/*定义买饭的函数*/

{

charc='\0';

intn=0;floatmtemp;

structcard*find=NULL,temp={0},record[100]={0},*p=NULL;

FILE*fp=NULL;

fflush(stdin);

fp=fopen("d:

\\JiLu.dat","r");

if(fp==NULL)

{

printf("\n打开文件失败!

\n");return;

}

p=record;

while(feof(fp)==0)

{

fscanf(fp,"%1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2