第一篇:饭卡管理系统问题定义报告
饭卡管理系统问题定义
问题分析:饭卡管理系统是针对大学校园食堂饮食消费,一般消费等方面的的信息管理系统,它包括了同学在校消费的的各方面内容:刷卡消费,查询,存款,学生信息管理等方面。方便的对同学饭卡信息的各项操作,定势进行数据的备份更新,保持数据的一致性和准确性,各方面的内容应相互关联和联系,最终产生各种查询统计报表,以供学生们检查。
饭卡管理系统的主要任务是把人们从繁琐的交费,找零工作中解放出来,用计算机实现对销售合同资料进行存款,消费,查询,修改,删除以及储存等功能。同时,计算机能够快速准确的完成档案资料统计工作和汇总工作。
进行数据库设计的首要任务是考虑信息要求,也就是数据库存入什么样的数据。当然,创建数据库并非仅仅为了存储数据,更主要目的是从中提取有用信息。所以除了考虑数据库存储身数据外,还应考虑数据的存储方式,目的,用途,及性能要求。
背景:用户通过系统首页面,创建饭卡,存入钱。消费时根据饭卡ID判断该用户是否是合法用户,同时进行消费操作。管理员可以对系统进行新建饭卡,存入钱,注销饭卡,修改饭卡信息等操作,而学生进行消费操作。
项目目标:建立饭卡管理系统,使管理员和用户和客户都能够方便的进行销售合同的查询。
项目范围:硬件和软件利用现有的微机和数据库等软件进行系统的开发和研制。
系统设计思想:该系统具有数据处理(饭卡信息的增删),信息修改,查询,备份等。
第二篇:学生成绩管理系统、食堂饭卡系统
一、实验目的
1.进一步熟悉数据类型、运算符、表达式、程序控制结构。2.掌握数组和动态链表的熟练使用.3.掌握指针的使用。4.掌握结构体的使用。5.学会使用函数。
6.以上知识的综合练习完成学生成绩管理系统、食堂饭卡终端系统代码的编写。7.要求实验前打印有代码的实验报告,实验课结束后交有手写修改笔记的实验报告。
二、实验环境:(硬件环境、软件环境)
1.windows 7操作系统
2.VC++编译器
三、实验过程:(内容、操作步骤、结果等)
内容一:学生成绩管理系统
需求:
建立一个学生成绩管理系统,实现对学生成绩的查询管理等操作.1.该系统可以使用管理员身份登录或者普通用户登录。2.只有管理员具有录入学生信息的权利。
3.管理员登录后有”显示全部学生信息”、”查询信息(通过名字或者学号查询)”、”排序成绩(可按 各科成绩或者平均成绩排序)”、”通过输入学生学号修改学生信息”、”删除学生”、”添加学生”、”保存信息”等功能。
4.普通用户登录有”显示全部学生信息”、”根据学号查询学生信息”。“按成绩排序”等功能。
系统代码:
#include
char name[20];
float yuwen;
float shuxue;
float yingyu;
float average;}Student;Student stu[100];int stulength;char filename[50]=“student.txt”;
void savefile(){ FILE *fp;
Student *p;
int i;1
p=stu;
fp=fopen(filename,“wb”);
if(fp==NULL)
{ printf(“打开文件失败!n”);
return;
}
for(i=0;i { if(fwrite(p,sizeof(Student),1,fp)!=1) printf(“保存信息失败!n”); p++; } fclose(fp);} void xianshi(){ Student *p; int i; p=stu; for(i=0;i { printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 绩:%.2fn”,p->number,p->name,p->yuwen,p->shuxue,p->yingyu,p->average); p++; } } void addbyhand(){ Student *p; int i,n; p=stu; printf(“请输入需要添加学生的人数:n”); scanf(“%d”,&n); for(i=0;i { printf(“请输入学号:n”); scanf(“%d”,&(p->number)); printf(“请输入姓名n”); scanf(“%s”,p->name); printf(“请输入语文成绩n”); scanf(“%f”,&(p->yuwen)); printf(“请输入数学成绩n”); scanf(“%f”,&(p->shuxue)); printf(“请输入英语成绩n”); scanf(“%f”,&(p->yingyu)); p->average=(p->yuwen+p->shuxue+p->yingyu)/3; p++; } stulength=n; savefile(); 英语成绩:%.2f平均成} void addbyfile(){ FILE *fp; Student *p; int i=0; p=stu; fp=fopen(filename,“rb”); if(fp==NULL) { printf(“打开文件失败n”); return; } while(fread(p,sizeof(Student),1,fp)==1) { i++; p++; } fclose(fp); stulength=i;} void chaxun(){ int i,xz,n; char m[20]; Student *p; p=stu; printf(“1->按学号查询n2->按姓名查询n”); scanf(“%d”,&xz); if(xz==1) { printf(“请输入查询的学号n”); scanf(“%d”,&n); for(i=0;i { if(p->number==n) { printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 绩:%.2fn”,p->number,p->name,p->yuwen,p->shuxue,p->yingyu,p->average); break; } p++; } if(i==stulength) printf(“没有找到该学生的信息n”); } if(xz==2) { printf(“请输入查询的姓名n”); scanf(“%s”,&m); for(i=0;i { if(strcmp(p->name,m)==0) { printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 英语成绩:%.2f平均成平均成绩:%.2fn”,p->number,p->name,p->yuwen,p->shuxue,p->yingyu,p->average); break; } p++; } if(i==stulength) printf(“没有找到该学生的信息n”); } } void paixu(){ int i,j,xz; Student m; printf(“1->按平均成绩排序n2->按语文成绩排序n3->按数学成绩排序n4->按英语成绩排序n”); scanf(“%d”,&xz); if(xz==1) { for(i=0;i for(j=i+1;j if(stu[i].average { m=stu[i]; stu[i]=stu[j]; stu[j]=m; } for(i=0;i printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average); } if(xz==2) { for(i=0;i for(j=i+1;j if(stu[i].yuwen { m=stu[i]; stu[i]=stu[j]; stu[j]=m; } for(i=0;i printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average); } if(xz==3) { for(i=0;i for(j=i+1;j if(stu[i].shuxue { m=stu[i]; stu[i]=stu[j]; stu[j]=m; 平均成平均成 } for(i=0;i printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 平均成绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average); } if(xz==4) { for(i=0;i for(j=i+1;j if(stu[i].yingyu { m=stu[i]; stu[i]=stu[j]; stu[j]=m; } for(i=0;i printf(“学号:%d 姓名:%s 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 绩:%.2fn”,stu[i].number,stu[i].name,stu[i].yuwen,stu[i].shuxue,stu[i].yingyu,stu[i].average); } } void tianjia(){ int i,n; Student *p; p=stu+stulength; printf(“请输入需要添加学生信息的个数n”); scanf(“%d”,&n); for(i=stulength;i { printf(“请输入学号:n”); scanf(“%d”,&p->number); printf(“请输入姓名n”); scanf(“%s”,p->name); printf(“请输入语文成绩n”); scanf(“%f”,&p->yuwen); printf(“请输入数学成绩n”); scanf(“%f”,&p->shuxue); printf(“请输入英语成绩n”); scanf(“%f”,&p->yingyu); p->average=(p->yuwen+p->shuxue+p->yingyu)/3; p++; } stulength=stulength+n; savefile();} void shanchu(){ Student *p,*q; int i,n,m=0; 平均成 p=stu; q=stu; printf(“请输入要删除学生的学号:n”); scanf(“%d”,&n); for(i=0;i { if(p->number==n) { q=q+1; m=1; } *p=*q; p++; q++; } if(m==1) stulength--; else printf(“请输入正确的学号!n”); savefile();} void xiugai(){ int i,n; Student *p; p=stu; printf(“请输入需要修改的学号:n”); scanf(“%d”,&n); for(i=0;i { if(p->number==n) { printf(“请输入语文成绩n”); scanf(“%f”,&p->yuwen); printf(“请输入数学成绩n”); scanf(“%f”,&p->shuxue); printf(“请输入英语成绩n”); scanf(“%f”,&p->yingyu); p->average=(p->yuwen+p->shuxue+p->yingyu)/3; break; } p++; } if(i==stulength) printf(“请输入正确的学号!n”); savefile();} void administroter(){ int xz; while(1) { printf(“1->添加n2->删除n3->排序n4->查询n5->显示n6->修改n0->退出n”); scanf(“%d”,&xz); switch(xz) { case 0:return; case 1:tianjia();break; case 2:shanchu();break; case 3:paixu();break; case 4:chaxun();break; case 5:xianshi();break; case 6:xiugai();break; } } } void student(){ int xz; while(1) { printf(“1->排序n2->查询n3->显示n0->退出n”); scanf(“%d”,&xz); switch(xz) { case 0:return; case 1:paixu();break; case 2:chaxun();break; case 3:xianshi();break; } } } int main(){ int xz; addbyfile(); if(stulength==0) addbyhand(); while(1) { printf(“**********欢迎登陆成绩管理系统**********n”); printf(“1->管理员登陆n2->学生登录n0->退出n”); scanf(“%d”,&xz); switch(xz) { case 0:return 0; case 1:administroter(); case 2:student(); } } } 7 内容二:食堂饭卡终端系统 需求:1.饭卡有编号、姓名、余额、状态四个属性。 2.系统实现:添加饭卡,通过编号查询饭卡余额,通过姓名查询饭卡余额,饭卡充值,消费,挂失饭卡,饭卡解锁(消除挂失恢复正常状态),删除饭等功能。 系统代码: #include typedef struct Fanka { int kh; char name[20];float yu_e;char state; struct Fanka *next;}Fanka; Fanka *fankahead;int fankalenth;char filename[50]=“E:fanka.txt”; void savefile(){ FILE *fp; Fanka *p;int i=0;p=fankahead;fp=fopen(filename,“wb”); if(fp==NULL){ printf(“打开文件失败!n”); return; } while(p!=NULL){ if(fwrite(p,sizeof(Fanka),1,fp)!=1) printf(“保存信息失败!n”); p=p->next; i++;} fclose(fp);} void addbyhand(){ Fanka *p,*rear; int i,n;printf(“请输入需要添加饭卡的个数:n”); scanf(“%d”,&n); for(i=0;i printf(“请输入卡号:n”); scanf(“%d”,&p->kh); printf(“请输入姓名:n”); scanf(“%s”,&p->name); printf(“请输入初始余额:n”); scanf(“%f”,&p->yu_e); p->state='1'; if(i==0) { fankahead=p; rear=p; } else { rear->next=p; rear=p; } } rear->next=NULL; fankalenth=n;savefile();} void addbyfile(){ FILE *fp; Fanka *p,*rear;int i=0;char c;fp=fopen(filename,“rb”);if(fp==NULL){ printf(“打开文件失败,请先建立文件!n”); return;} if(fscanf(fp,“%c”,&c)==EOF) addbyhand();else { p=(Fanka *)malloc(sizeof(Fanka)); fseek(fp,0,SEEK_SET); while(fread(p,sizeof(Fanka),1,fp)==1){ i++; if(i==1) { fankahead=p; rear=p; } else { rear->next=p; rear=p; } p=(Fanka *)malloc(sizeof(Fanka));} fclose(fp); rear->next=NULL; fankalenth=i;} } void xianshi(){ Fanka *p; p=fankahead; while(p!=NULL) { if(p->state=='1') printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e); else printf(“%d %s %f 挂失n”,p->kh,p->name,p->yu_e); p=p->next; } } void chaxun(){ int n,m; char na[20]; Fanka *p;p=fankahead;printf(“请选择查询的方式: 1、按卡号查询。 2、按姓名查询n”); scanf(“%d”,&n);if(n==1) { printf(“请输入查询的卡号n”); scanf(“%d”,&m); while(p!=NULL) { if(p->kh==m) { if(p->state=='1') printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e); else printf(“%d %s %f 挂失n”,p->kh,p->name,p->yu_e); break; } p=p->next; } if(p==NULL) printf(“没有找到该卡号的信息!n”); } if(n==2){ printf(“请输入查询的姓名n”); scanf(“%s”,na); while(p!=NULL) { if(p->name==na) { if(p->state=='1') printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e); else printf(“%d %s %f 挂失n”,p->kh,p->name,p->yu_e); break; } p=p->next; } if(p==NULL) printf(“没有找到该卡号的信息!n”);} return;} void guashi(){ int n; Fanka *p; p=fankahead; printf(“请输入挂失的卡号!n”); scanf(“%d”,&n); while(p!=NULL) { if(p->kh==n) { p->state='0'; break; } p=p->next; } if(p==NULL) printf(“此卡无效,请输入正确的卡号!n”); savefile();} void jiesuo(){ int n; Fanka *p; p=fankahead; printf(“请输入解锁的卡号!n”); scanf(“%d”,&n); while(p!=NULL) { if(p->kh==n) { p->state='1'; break; } p=p->next; } if(p==NULL) printf(“此卡无效,请输入正确的卡号!n”); savefile();} void chongzhi(){ int n; float m; Fanka *p; p=fankahead; printf(“请输入充值的卡号!n”); scanf(“%d”,&n); while(p!=NULL) { if(p->kh==n&&p->state=='1') { printf(“请输入充值的金额:n”); scanf(“%f”,&m); printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e+m); break; } if(p->kh==n&&p->state=='0') { printf(“此卡已挂失,请解锁后再充值!n”);break; } p=p->next; } if(p==NULL) printf(“此卡无效,请输入真确的卡号n”); savefile();} void xiaofei(){ int n; float m; Fanka *p; p=fankahead; printf(“请输入消费的卡号!n”); scanf(“%d”,&n); while(p!=NULL) { if(p->kh==n&&p->state=='1') { printf(“请输入消费的金额:n”); scanf(“%f”,&m); if(p->yu_e>m) { p->yu_e=p->yu_e-m; printf(“%d %s %f 正常n”,p->kh,p->name,p->yu_e); break; } else { printf(“余额不足,请充值后再消费!n”); break; } } if(p->kh==n&&p->state=='0') { printf(“此卡已挂失,请解锁后再消费!n”);break; } p=p->next; } if(p==NULL) printf(“此卡无效,请输入正确的卡号n”); savefile();} void shanchu(){ int n,i=0; Fanka *p; p=fankahead; printf(“请输入删除饭卡的卡号n”); scanf(“%d”,&n); if(fankahead->kh==n) fankahead=p->next; while(p->next!=NULL) { if(p->next->kh!=n) p=p->next; else p->next=p->next->next; } fankalenth--; savefile();} void tianjia(){ Fanka *p,*q; p=fankahead; while(p->next!=NULL){p=p->next;} q=(Fanka *)malloc(sizeof(Fanka));printf(“请输入卡号:n”); scanf(“%d”,&q->kh); printf(“请输入姓名:n”); scanf(“%s”,&q->name); printf(“请输入初始余额:n”); scanf(“%f”,&q->yu_e); q->state='1'; p->next=q; q->next=NULL; savefile(); fankalenth++;} int studentlogin(){ int xz;while(1){ system(“CLS”); printf(“1->显示全部饭卡信息n2->查询饭卡信息n3->饭卡挂失n4->消费n0->退出n”); scanf(“%d”,&xz); switch(xz){ case 0:return 0; case 1:xianshi();break; case 2:chaxun();break; case 3:guashi();break; case 4:xiaofei();break;} system(“PAUSE”);} return 0;} int administratorlogin(){ int xz; while(1) { system(“CLS”);printf(“1->显示n2->添加饭卡n3->饭卡解锁n4->饭卡充值n5->删除饭卡n0->退出n”);scanf(“%d”,&xz); switch(xz){ case 0:return 0; case 1:xianshi();break; case 2:tianjia();break; case 3:jiesuo();break; case 4:chongzhi();break; case 5:shanchu();break;} system(“PAUSE”);} return 0; } int main(){ int xz; addbyfile(); while(1) { system(“CLS”); printf(“************欢迎登陆食堂饭卡管理系统************n”); printf(“请选择用户登陆身份:n1->管理员登陆n2->学生登陆n0->退出n”); scanf(“%d”,&xz); switch(xz) { case 0:return 0; case 1:administratorlogin();break; case 2:studentlogin();break; } system(“PAUSE”); } return 0;} 食堂饭卡管理系统 3人 基本功能: (1)发卡:学生员工持有效证件到管理处缴押金,办理就餐卡,操作人员将相关内容写入卡中,并自动产生编号,持卡人员再预交一定金额款项即可进行就餐。 (2)存款:持卡人在卡中存款快用完时,到管理处交款存入就餐卡中,并可打印一张收据。 (3)就餐:持卡人将就餐卡插入或接近窗口机,窗口机检测是否有效,是否时本单位所发的卡,是否已被挂失,若有问题则窗口机报警,若正常则窗口机上数码显示就餐卡中的余额,工作人员键入本次用餐金额,并在数码上显示出来,若无误按结算键写卡,整个售饭过程完成。 (4)汇总统计:食堂就餐结束后,管理处计算机能通过联网(或统计卡)取出各窗口机中的数据,进行统计分析,可统计出本餐售饭总收入,各窗口收入,各持卡人存款明细,本日、月存款金额,卡中流动资金总额,日餐报表,年餐报表等 (5)挂失:持卡人不慎将卡丢失,可到管理处进行挂失,管理处将挂失名单传送到各窗口机中,用已挂失卡就餐就会报警,直到取消挂失为止,持卡人不会因卡丢失而引起经济上的损失。 (6)注销:学生离校或其他原因,不再就餐时,可到管理处注销卡退取押金,该卡还可重新使用。 一、引言 1.编写目的本需求分析文档的目的是说明饭卡管理系统最终所运行的条件,性能要求及要实现的功能,为进一步设计与实现打下基础。本文档以文档形式将用户对软件的需求固定下来,是与用户沟通的成果,也供用户验收项目时参考 本文档预期读者为:用户,项目管理人员,软件设计人员,编程人员,测试人员等项目相关人员 2.开发背景 系统名称:《饭卡管理系统》 需求背景: 随着我国经济的发展,电子管理系统的多功能化,企业,学校等纷纷使用电子记账卡对于员工,学生等的消费进行管理,故对合理,高利用率的饭卡管理系统有着迫切的需求 系统用途: 本系统智能化地管理饭卡系统的运作,从而提高管理的效率 系统开发人员: 陈永林小组 二、任务概述 1.任务目标 能对饭卡信息进行及时的管理及查询,提高用户工作效率 2.用户特点 本系统是面向学校饭卡管理而开发的,由于系统的界面清晰、美观,操作简单、方便,所以操作人员只需要具备一定的电脑操作技能即可。管理员(维护人员)不需要任何数据库专业技能知识。本系统可以极大的提高工作效率。 三、系统环境 1.系统构架 系统由刷卡器、管理员端和客户端构成。刷卡器主要为学生提供日常消费功能,客户端完成学生自助查询、挂失功能,而管理员端则主要完成新建、存款、注销等功能。 四、需求分析 1.1 业务需求 本系统会涉及到的业务包括注册用户(新建)、饭卡充值(存款)、饭卡信息查询、刷卡消费、饭卡挂失/解锁、饭卡注销、修改用户信息六大功能 1.2 注册用户功能 注册功能权限只开放给管理员,该功能由管理员输入正确的用户注册信息并设置原始密码,然后录入数据库。 1.3 饭卡充值功能 该功能权限只开放给管理员,由管理员确认金额无误后更新饭卡余额信息。 1.4 饭卡挂失/解锁功能 该功能用户及管理员均可以使用,用户凭借用户密码通过客户端登入后可对饭卡进行挂失/解锁。 1.5 饭卡注销功能 该功能仅开放给管理员,由管理员输入用户ID并确认注销。 1.6 饭卡信息查询功能 该功能管理员及用户均可以使用,用户需凭用户密码登入进行简单查询。 1.7 消费功能 该功能开放给用户及管理员,用户通过刷卡器端进行消费,也可通过管理员进行日常缴费。 五.功能概述 经分析,该饭卡管理系统主要实现以下功能: 1、登录/注册 2、存款/消费 3、查询/修改 4、挂失/解锁 5、注销/学生端 食堂刷卡管理系统管理端 业务流程图: 余额 查看 卡号挂失冻结 消费信息查询 充值信息查询 卡号信息记录 学生信息记录 登 录 管 理 办 卡 管 理 充 值 管 理 消 费 管 理 注 销 管 理 管理端登录 学生端登录 学生信息录入 学 生 信 息 管 理 卡号信息激活 饭卡挂失冻结 解锁补办饭卡 卡号充值 充值记录查询 消费类型 消费信息 卡号注销 注销信息查询 学生端 城投集团食堂餐卡管理及收费办法 各用餐单位: 根据集团办公室2011年《关于集团饭堂停止签名就餐的通知》,各用餐人员一律携带餐卡或客餐单,凭卡或凭单用餐。为了规范相关的管理,经过集团办公室、食堂管理委员会沟通研究决定,从2013年1月1日起,集团食堂将采用以下条例对餐卡、客餐单等进行管理。 一、用餐卡管理 1、新餐卡发放:各用餐单位由于人事变动需新增用餐人员并办理用餐卡,由各用餐单位出具有部门领导签名并盖有公章的证明文件,凭文件办理用餐卡,并与开卡当月开始计费。每张餐卡按制作成本收取工本费。 2、停卡或退卡:已开餐卡的用餐人员由于个人、工作等原因需停止用餐,由各用餐单位出具有部门领导签名并盖有公章的证明文件,凭文件办理停卡或退卡手续,卡内余额将退还给持卡人,工本费不予退还。未凭文件办理相关手续的,食堂将按正常用餐收取餐费。 3、补卡:用餐人员餐卡损坏或遗失的,本人可到食堂办理挂失补办手续,旧卡中的余额将会转移至新卡当中。每张餐卡按制作成本收取工本费。 4、工作证的办理、停退及补卡参照餐卡管理办法管 理,但工本费由用餐单位自行支付。 二、客餐单管理:用餐单位如有客人需在食堂用餐的,客人需凭签名盖章的客餐单进入食堂用餐。收费标准为早餐6元/人,午餐19元/人,食堂定期与各用餐单位结算。 三、餐卡用餐标准:每天25元/人。其中用餐单位支付部分:每天20元/人,用餐单位按持卡数量每月扣款440元/人(按22天计),由单位统一支付。新开餐卡当月用餐不足15天的,按实际用餐天数计算,每天20元;用餐天数超过15天(含15天)的,按440元全额收费。 四、为了加强食堂管理,保障食品卫生安全,请各位用餐人员在食堂内用餐,请勿携带食物出餐厅。 五、为确保集团食堂正常运行,请各用餐单位按时支付餐费。 市城投集团食堂 二零一二年十二月二十八日第三篇:C语言食堂饭卡管理系统
第四篇:饭卡管理系统需求规格说明书
第五篇:饭卡发放管理