您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页饭卡管理系统实训报告书

饭卡管理系统实训报告书

来源:飒榕旅游知识分享网


目录

第1部分 实训题目与要求 ............................... 错误!未定义书签。

1.问题提出: ........................................ 错误!未定义书签。 2.功能要求: ........................................ 错误!未定义书签。 3.任务分工: ........................................ 错误!未定义书签。 第2部分 设计实训题目功能 ............................................. 2

1.总体设计: ........................................................ 2 2.算法设计 .......................................................... 3 3.数据结构 ......................................................... 14 4.程序代码设计 ...................................... 错误!未定义书签。 5.测试与调试 ....................................................... 17

main: .......................................................... 17 mycreate: ...................................................... 18 mybuy: ......................................................... 18 mysave: ........................................................ 19 myadd: ......................................................... 19 mydel: ......................................................... 20 mylost: ........................................................ 20 mydisplayall: .................................................. 21

第3部分 实训总结 .................................................... 21

1.个人总结: ....................................................... 21 2.结束语: ......................................................... 23 附录A 程序清单 ..................................................... 24 附录B 用户使用说明书 ............................................... 37

硬件和软件要求: ................................................... 37 使用方法: ......................................................... 37 注意事项: ......................................................... 37 参考文献 ............................................................. 37

饭卡管理系统机密文件档案

一、实训题目与要求

1. 问题提出

学校等大单位集体食堂买饭时间非常集中,这时如果食堂使用饭票买饭,大家就得排长队等候,而且还有经过先去买饭票等麻烦的经历。因此食堂提出使用计算机进行管理,食堂用饭卡卖饭,不仅提高卖饭速度,还更易于管理减少不必要的麻烦,同时减轻工作人员的工作负担。因此,用饭卡管理系统解决了这个问题。

2.功能要求

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

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

在主菜单中选择2,要求用户输入卡号,饭费,然后系统自动从该人的饭卡中减去饭钱,。并显示金额,如果饭卡中不足5元,则不能买饭,显示“余额不足,请续钱!”,如果挂失信息为真,则显示“本卡已挂失!”。

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

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

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

在主菜单中选择7,此项功能学生自由发挥,根据本组爱好增加新功能。 在主菜单中选择0,显示结束信息,按任意键后,退出本系统。

3.任务分工

组长:潘永培

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

组员:余文宇

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

1

饭卡管理系统机密文件档案

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

组员:罗耀祖

负责小组程序的mydel,mydlost,mydisplayall三个函数的算法设计和相应模块的流程图。与其他两位同学协作默契,认真卖力。

二、设计实训题目功能

1. 总体设计

主模块建立饭卡文件买饭续钱输入饭卡号续钱前余额续钱后余额添加新饭卡注销旧饭卡设置和解除挂失显示所有饭卡信息退出系统

2

饭卡管理系统机密文件档案

图1:主模块图

2. 算法设计

3

饭卡管理系统机密文件档案

图2:主流程图

4

饭卡管理系统机密文件档案

入口打开文件假打开成功输入卡号结束输入姓名输入缴纳金额假合法记录?真将记录写入文件记录数值增1输入卡号输入姓名输入缴纳金额关闭文件出口

图3:函数mycreate流程图

5

饭卡管理系统机密文件档案

入口打开文件假打开成功结束输入卡号假合法记录返回输入金额卡上金额是否比输入金额大假金额不足卡上金额>5真 卡上钱减输入钱 将记录写入文件关闭文件图4:函数mybuy流程图

6

饭卡管理系统机密文件档案

入口打开文件假 打开成功输入卡号假 合法记录结束输入金 额输入钱加卡上钱将记录写入文件关闭文件出口

7

饭卡管理系统机密文件档案

图5:函数mysave流程图

入口打开文件打开成功?结束p指向结构体数组record文件结束假从文件中读出一条记录指针下移动记录数增一关闭文件输入新卡号、姓名、余额、挂失信息p8

饭卡管理系统机密文件档案

图6:函数myadd流程图

9

饭卡管理系统机密文件档案

入口打开文件假打开成功?真结束p指向结构体数组record真文件结束?假从文件中读出一条记录指针向下移动记录数增一关闭文件输入要删除的卡号假k图7:函数mydelete流程图

10

饭卡管理系统机密文件档案

11

饭卡管理系统机密文件档案

入口打开文件假打开成功?真结束p指向结构体数组record真文件结束?假从文件中读出一条记录指针向下移动记录数增一关闭文件真文件中无记录n==0?假输入要修改的卡号假出口+np12

饭卡管理系统机密文件档案

图8:函数mylost流程图

入口打开文件打开成功?结束文件结束?从文件读卡号、姓名、金额、挂失信息输出卡号、姓名、金额、挂失信息记录数増一n==0?文件中无记录文件中有n个记录关闭文件出口

13

饭卡管理系统机密文件档案

图9:函数mydisplayall流程图

3.数据结构

名称 num name money g string string float int 属性 10 10 长度 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\

…………

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

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

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

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

14

饭卡管理系统机密文件档案

{ }

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

printf(\" 姓名(用#结束输入):\"); gets(temp.name);

printf(\" 金额(用#结束输入):\"); scanf(\"%f\

printf(\" 挂失信息(1有,-1无)(用#结束输入):\"); scanf(\"%d\while(temp.num[0]!='#') {

gets(temp.num);

fprintf(fp,\"%15s%15s%15f%15d\\n\;

i++;

printf(\"\\n 请输入第%d个记录:\\n\printf(\" 卡号(用#结束输入):\"); do { }

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

printf(\" 姓名(用#结束输入):\"); gets(temp.name);

printf(\" 金额 (用#结束输入):\"); scanf(\"%f\

printf(\" 挂失信息 (1有,-1无)(用#结束输入):\"); scanf(\"%d\}…………

gets(temp.num);

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

{

15

饭卡管理系统机密文件档案

}

(\"\\n 文件中无记录!\\n\");return;

printf(\"\\n请输入要买饭的学号:\"); gets(temp.num);

for(p=record;pif(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\ if(p->money>mtemp)

{

printf(\"Before:%f元\\n\

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

printf(\"After:%f元\\n\

16

饭卡管理系统机密文件档案

}

if(p->money{

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

}

}

}

fp=fopen(\"d:\\\\JiLu.dat\

if(fp==NULL) {

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

}………………

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

for(p=record;pif(strcmp(temp.num,p->num)==0) { }

if(p==record+n) { }

printf(\"\\n 无此卡!\\n\");return; find=p;break;

if(p->g==-1) {

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

printf(\"请输入金额:\"); scanf(\"%f\

printf(\"Before:%f元\\n\

17

饭卡管理系统机密文件档案

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

printf(\"After:%f元\\n\>money));…………

(6)函数myadd()主要使用do while和for循环: ………………

do

{

printf(\"\\n 请输入新添加的卡号:\"); do { }

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

printf(\"\\n 请输入新添加的姓名: \"); gets(temp.name);

printf(\"\\n 请输入新添加的金额: \"); scanf(\"%f\

printf(\"\\n 请输入新添加的挂失信息: \"); scanf(\"%d\

for(p=record;pnum)==0) { }

if(p==record+n) {*p=temp;break;}

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

while(c!='Y'&&c!='y'&&c!='N'&&c!='n'); putchar('\\n'); break;

c=getche(); gets(temp.num);

18

饭卡管理系统机密文件档案

}

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

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

for(k=record;kif(strcmp(tempnum,k->num)==0) break;

if(kfor(p=k;p*p=*(p+1);

else printf(\"\\n 无此卡!\\n\"); fp=fopen(\"d:\\\\JiLu.dat\if(fp==NULL) { }

for(p=record;pprintf(\"\\n 打开文件失败!\\n\");return;

fprintf(fp,\"%15s%15s%15f%15d\\n\>g));……

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

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

fclose(fp); if(n==0) { }

printf(\"\\n 请输入要修改挂失信息的卡号:\"); gets(temp.num);

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

fscanf(fp,\"%15s%15s%15f%15d\\n\p++; n++;

19

饭卡管理系统机密文件档案

for(p=record;pif(strcmp(temp.num,p->num)==0) { }

if(p==record+n) {

printf(\"\\n 无此卡!\\n\");return;

find=p;break;

}

printf(\" 请输入挂失信息:\"); scanf(\"%d\>g);…………

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

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

\\n\");

fscanf(fp,\"%15s%15s%15f%15d\\n\while(feof(fp)==0) {

p.g);

printf(\"%15s%15s%15f%15d\\n\ }

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

else printf(\"\\n 文件有%d个记录!\\n\

n++;

注:完整程序请参见附录A

20

饭卡管理系统机密文件档案

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:

测试数据类型 测试数据 预期结果 实测结果 21

饭卡管理系统机密文件档案

输入卡号:1 输入姓名:小李 输入卡号 输入姓名 输入金额 输入挂失信息 按任意键退出 返回主菜单 无法输入 无法输入 输入卡号 输入姓名 输入金额 输入挂失信息 按任意键退出 返回主菜单 无法输入 无法输入 合法数据 输入金额:100 输入挂失信息:1 N或n Y或y 输入金额:a 非法数据 输入挂失信息:a

mybuy: 测试数据类型 测试数据 输入买饭卡号1 输入卡号99 输入卡号1金额1 输入卡号1金额99 预期结果 显示“输入金额” 显示“无此卡” 显示余额99元 显示余额1元,金额不足五元,请续钱 显示“金额不足,请续钱” 显示“此卡已挂失” 按任意键退出 返回主菜单 显示“无此卡” 显示无意义数字 实测结果 显示“输入金额” 显示“无此卡” 显示余额99 显示余额1元,金额不足五元,请续钱 显示“金额不足,请续钱” 显示“此卡已挂失” 按任意键退出 返回主菜单 显示“无此卡” 显示无意义数字 合法数据 输入卡号1金额101 输入卡号2 “N”or”n” “Y”or”y” 输入卡号 a 非法数据 输入卡号1金额a

22

饭卡管理系统机密文件档案

mysave: 测试数据类型 测试数据 输入续费卡号1 预期结果 显示“输入金额” 实测结果 显示“输入金额” 显示余额101 显示” 此卡已挂失” 显示“无此卡” 按任意键退出 返回主菜单 显示“无此卡” 显示无意义数字 输入续费卡号1金额1 显示余额101 合法数据 输入续费卡号2 输入续费卡号99 “N”or”n” “Y”or”y” 输入续费卡号a 显示” 此卡已挂失” 显示“无此卡” 按任意键退出 返回主菜单 显示“无此卡” 非法数据 输入续费卡号1金额a 显示无意义数字

myadd:

测试数据类型 测试数据 输入卡号:2 输入姓名:小王 预期结果 输入卡号 输入姓名 输入金额 输入挂失信息 按任意键退出 返回主菜单 无法输入 无法输入 实测结果 输入卡号 输入姓名 输入金额 输入挂失信息 按任意键退出 返回主菜单 无法输入 无法输入 合法数据 输入金额:200 输入挂失信息:-1 N或n Y或y 输入金额:a 非法数据

输入挂失信息:a 23

饭卡管理系统机密文件档案

mydel:

测试数据类型 测试数据 输入卡号:1 预期结果 删除饭卡1 无此卡 按任意键退出 返回主菜单 无法输入 实测结果 删除饭卡1 无此卡 按任意键退出 返回主菜单 无此卡 合法数据 输入卡号:3 N或n Y或y 非法数据

输入卡号:a mylost:

测试数据类型 测试数据 预期结果 实测结果 卡1挂失 卡2解除挂失 按任意键退出 返回主菜单 显示“无此卡” 挂失信息无意义 挂失信息不变 输入卡号1挂失信息-1 卡1挂失 合法数据 输入卡号2挂失信息1 卡2解除挂失 “N”or”n” “Y”or”y” 输入卡号a 按任意键退出 返回主菜单 显示“无此卡” 非法数据 输入卡号1挂失信息3 挂失信息无意义 输入卡号1挂失信息a 挂失信息不变

mydisplayall: 测试数据类型 合法数据 测试数据 N或n Y或y 预期结果 按任意键退出 返回主菜单 实测结果 按任意键退出 返回主菜单 24

饭卡管理系统机密文件档案

2.结束语

这次实训非常的感谢指导老师对我们的帮助,还有同学们放弃自己的任务来帮我们改错。在这里我们组谢谢各位帮助过我们的人,特别是指导老师对我们帮助才使我们顺利地完成任务。

25

饭卡管理系统机密文件档案

附录1 程序清单

#include #include #include #include #define N 100

struct card { };

void myprint(); void mycreate(); void mybuy(); void mysave(); void myadd(); void mydel(); void mylost(); void mydisplayall(); void main() {

char choose='\\0',yes_no='\\0'; do {

myprint(); printf(\" \"); choose=getch();

char num[10]; char name[10];float money;int g;

26

饭卡管理系统机密文件档案

}

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 { }

while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');

yes_no=getche();

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

void myprint() /*显示菜单界面*/ {

system(\"cls\"); /*调用清屏函数。若在TC下运行,改用clrscr()*/

printf(\" |-------------------------------------------|\\n\"); printf(\" | 请输入选项编号(0-7): |\\n\"); printf(\" |-------------------------------------------|\\n\"); printf(\" | 1---- 创建饭卡 |\\n\"); printf(\" | 2---- 买饭 |\\n\"); printf(\" | 3---- 续钱 |\\n\"); printf(\" | 4---- 添加新饭卡 |\\n\");

27

饭卡管理系统机密文件档案

}

printf(\" | 5---- 注销旧饭卡 |\\n\"); printf(\" | 6---- 设置与解除挂失 |\\n\"); printf(\" | 7---- 显示全部信息 |\\n\"); printf(\" | 0---- 退出 |\\n\"); printf(\" |-------------------------------------------|\\n\");

void mycreate() /*定义创建饭卡的函数*/ {

int i=1;

struct card temp ={0}; FILE * fp=NULL;

system(\"cls\"); /*调用清屏函数。若在TC下运行,改用clrscr()*/ printf(\"\\n 请输入第一个记录:\\n\"); printf(\" 卡号(用#结束输入):\"); do { }

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

printf(\" 姓名(用#结束输入):\"); gets(temp.name);

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

gets(temp.num);

fp=fopen(\"d:\\\\JiLu.dat\",\"w\"); if (fp==NULL) { }

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

28

饭卡管理系统机密文件档案

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); }

void mybuy() /*定义买饭的函数*/ {

char c='\\0';

int n=0;float mtemp;

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

printf(\"\\n 请输入第%d个记录:\\n\",i); printf(\" 卡号(用#结束输入):\"); do { }

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

printf(\" 姓名(用#结束输入):\"); gets(temp.name);

printf(\" 金额(用#结束输入):\"); scanf(\"%f\",&temp.money);

printf(\" 挂失信息(1有,-1无)(用#结束输入):\"); scanf(\"%d\",&temp.g);

gets(temp.num);

i++;

}

fclose(fp);

29

饭卡管理系统机密文件档案

FILE*fp=NULL;

fflush(stdin);

if(p==record+n) {

printf(\"\\n 无此卡!\\n\");return;

if(n==0) { }

printf(\"\\n请输入要买饭的学号:\"); gets(temp.num);

for(p=record;pif(strcmp(temp.num,p->num)==0) { }

find=p;break;

(\"\\n 文件中无记录!\\n\");return; p=record;

while(feof(fp)==0) { }

fclose(fp);

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

fp=fopen(\"d:\\\\JiLu.dat\",\"r\"); if(fp==NULL) { }

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

30

饭卡管理系统机密文件档案

}

if(p->g==-1) { } else { }

fp=fopen(\"d:\\\\JiLu.dat\",\"w\"); if(fp==NULL) {

printf(\"\\n 打开文件失败!\\n\");return; if(p->money<5.0)

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

if(p->money>5.0) { printf(\"请输入金额\"); scanf(\"%f\",&mtemp); if(p->money>mtemp) { }

if(p->moneyprintf(\"金额不足,请续钱\\n\"); return;

printf(\"Before:%f元\\n\",(p->money)); (p->money)=(p->money)-mtemp; printf(\"After:%f元\\n\",(p->money)); printf(\"此卡已挂失\\n\"); return;

31

饭卡管理系统机密文件档案

}

}

for(p=record;pfprintf(fp,\"%15s%15s%15f%15d\\n\",p->num,p->name,p->money,p->g); fclose(fp);

void mysave() /*定义续钱的函数*/ {

char c='\\0';

int n=0;float mtemp;

struct card*find=NULL,temp={0},record[100]={0},*p=NULL; FILE*fp=NULL;

fflush(stdin);

printf(\"\\n请输入要续费的卡号:\"); gets(temp.num);

for(p=record;pwhile(feof(fp)==0) { }

fclose(fp);

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

fp=fopen(\"d:\\\\JiLu.dat\",\"r\"); if(fp==NULL) { }

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

32

饭卡管理系统机密文件档案

}

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

if(p==record+n) { }

printf(\"\\n 无此卡!\\n\");return; find=p;break;

if(p->g==-1) { }

printf(\"请输入金额:\"); scanf(\"%f\",&mtemp);

printf(\"Before:%f元\\n\",(p->money)); (p->money)=(p->money)+mtemp; printf(\"After:%f元\\n\",(p->money));

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

fp=fopen(\"d:\\\\JiLu.dat\",\"w\"); if(fp==NULL) { }

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

for(p=record;pfprintf(fp,\"%15s%15s%15f%15d\\n\",p->num,p->name,p->money,p->g);

fclose(fp);

33

饭卡管理系统机密文件档案

void myadd() /*定义添加新饭卡的函数*/ {

char c='\\0'; int n=0;

struct card temp={0},record[N]={0},*p=NULL; FILE * fp=NULL;

fflush(stdin);

p=record;

while(feof(fp)==0) {

fp=fopen(\"d:\\\\JiLu.dat\",\"r\"); if(fp==NULL) { }

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

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

do {

printf(\"\\n 请输入新添加的卡号:\"); do { }

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

gets(temp.num);

}

fclose(fp);

p++; n++;

34

饭卡管理系统机密文件档案

printf(\"\\n 请输入新添加的姓名: \"); gets(temp.name);

printf(\"\\n 请输入新添加的金额: \"); scanf(\"%f\",&temp.money);

printf(\"\\n 请输入新添加的挂失信息: \"); scanf(\"%d\",&temp.g);

}

for(p=record;pif(strcmp(temp.num,p->num)==0) { }

if(p==record+n) {*p=temp;break;}

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

while(c!='Y'&&c!='y'&&c!='N'&&c!='n'); putchar('\\n'); break;

c=getche();

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

fp=fopen(\"d:\\\\JiLu.dat\",\"w\"); if(fp==NULL) { }

for(p=record;pprintf(\"\\n 打开文件失败!\\n\"); return;

35

饭卡管理系统机密文件档案

}

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

void mydel() /*定义注销饭卡的函数*/ {

char tempnum[8]=\"\"; int n=0;

struct card record[N]={0},*p=NULL,*k=NULL; FILE*fp=NULL;

fflush(stdin);

fp=fopen(\"d:\\\\JiLu.dat\",\"r\"); if(fp==NULL) { }

p=record;

while(feof(fp)==0) {

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

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

}

fclose(fp);

printf(\"\\n 请输入要注销的卡号:\"); gets(tempnum);

for(k=record;kif(strcmp(tempnum,k->num)==0) break; p++; n++;

if(kfor(p=k;p*p=*(p+1);

else printf(\"\\n 无此卡!\\n\");

36

饭卡管理系统机密文件档案

fp=fopen(\"d:\\\\JiLu.dat\",\"w\"); if(fp==NULL) { }

for(p=record;pprintf(\"\\n 打开文件失败!\\n\");return;

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

void mylost() /* 定义修改挂失信息的函数*/ {

char c='\\0'; int n=0;

struct card *find=NULL,temp={0},record[100]={0},*p=NULL; FILE*fp=NULL; fclose(fp);

fflush(stdin);

fp=fopen(\"d:\\\\JiLu.dat\",\"r\"); if(fp==NULL) { }

p=record;

while(feof(fp)==0) { }

fclose(fp); if(n==0) {

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

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

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

37

饭卡管理系统机密文件档案

}

}

printf(\"\\n 请输入要修改挂失信息的卡号:\"); gets(temp.num);

for(p=record;pif(strcmp(temp.num,p->num)==0) { }

if(p==record+n) { }

printf(\" 请输入挂失信息:\"); scanf(\"%d\",&p->g);

printf(\"\\n 无此卡!\\n\");return; find=p;break;

fp=fopen(\"d:\\\\JiLu.dat\",\"w\"); if(fp==NULL) { }

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

for(p=record;pfprintf(fp,\"%15s%15s%15f%15d\\n\",p->num,p->name,p->money,p->g);

fclose(fp);

void mydisplayall() /*定义显示全部信息的函数*/ {

int n=0;

struct card temp={0}; FILE*fp=NULL;

38

饭卡管理系统机密文件档案

system(\"cls\");

printf(\" 卡号 姓名 金额 挂失信息\\n\"); while(feof(fp)==0) {

fp=fopen(\"d:\\\\JiLu.dat\",\"r\"); if(fp==NULL) { }

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

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); }

if(n==0) printf(\"\\n 文件中无记录!\\n\"); else printf(\"\\n 文件有%d个记录!\\n\",n); fclose(fp);

n++;

附录2 用户使用说明书

使用方法:

1.打开并运行程序。

2.进入主菜单后,按“1”创建饭卡;需要输入卡号,姓名,金额,挂失信息(1代表没挂失,-1代表已挂失)。

3.按“2”买饭;此卡在没有挂失的情况下才能买饭,且金额必须大于5元,当金额不足5元时将无法买饭,需要续费;当金额大于5元时可以买饭,将按输入金额从饭卡中扣除,但如果减去输入的金额后余额不足5元也将无法买饭。

39

饭卡管理系统机密文件档案

4.按“3”续钱;将按输入的续钱金额进行续钱。

5.按“4”添加新饭卡;需要输入要添加的卡号,姓名,金额,挂失信息(1代表没挂失,-1代表已挂失)。

6.按“5”注销旧饭卡;注销后该饭卡的全部信息将被删除。

7.按“6”设置与解除挂失;再次可以更改挂失信息,挂失后该饭卡将不能买饭。 8.按“7”显示全部信息;在此将显示所有饭卡的全部信息。 9.按“0”结束程序。

10.另外,在完成每项任务时将有“是否继续”的选项,输入“Y”或“y”将返回主菜单即可进行其他操作,输入“N”或“n”将结束程序。 11.按任意键将退出程序。 注意事项:

在使用过程中要谨防病毒,防止个人信息被盗取甚至更改。

参考文献

【1】 崔武子 李青 李红豫等.c程序设计辅导与实训(第2版).北京:清华大学出版

社,2009.5.

【2】 崔武子 赵重敏 李青.c程序设计教程(第2版).北京:清华大学出版社,2007.6.

40

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务