版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 课程名称 C语言程序设计课程设计A题目名称 商场收银系统学生学院 物理与光电工程学院 专业班级 电子科学与技术5班学 号 学生姓名 指导教师 2011 年 9 月 9 日目 录1 系统分析11.1 课程设计内容11.2 系统功能需求分析11.3 数据结构设计22 系统设计42.1 总体设计42.2 详细设计42.2.1 界面设计42.2.2 各功能模块的设计73 系统编码设计103.1 main函数103.2 huidan_printf函数133.3 huidan_save函数163.4 sale1函数183.5 sale2函数213.6 sale3函数224 系统运行255
2、总结28181 系统分析1.1 课程设计内容建立一商场收银系统,功能包括:1. 系统登录:运行系统时,收银员应输入姓名(或编号)及密码,验证后方可使用系统。2. 收银操作:收银员逐条输入商品编号及数量,系统自动计算金额,输入完毕后显示应付款,当输入实收额后,计算出找赎值。3. 交易完成后按一定格式显示回单(格式参照一般超市中的打印小票)。 4. 保存所显示的回单。5. 自动按销售情况更新商品信息文件中的数据。6. 查询收银员销售信息。7. 浏览库存商品信息。1.2 系统功能需求分析本系统应具有以下功能:1、 系统登录:运行系统时,收银员先输入自己的编号(0-9),然后再输入用户名及密码,验证后
3、方可使用系统。系统默认用户名为ying,密码为5555,收银员选择自己的编号进入系统后,首先应进入第3菜单选项修改自己的用户名和秘密。本系统可提供设置10个收银员的用户名和密码。2、 收银操作:收银员首先输入商品编号,系统会自动检测所输入的商品编号是否存在,如果存在,则提示输入所购买商品的数量。系统自动计算出购买该商品所需的金额(数量*单价)。接着,系统会询问是否继续购买。如果选择否,系统自动计算出应付款,输入付款后,计算出找零钱。最后显示出本次购买的回单。3、 交易完成后按一定格式显示回单。回单内容:回单上部显示出收银员的编号、姓名;中部显示所购买的商品,以及每种商品的数量及价钱;尾部是商店
4、的一些信息(电话及地址)。4、保存所显示的回单。所有的回单都会保存在“huidan.txt”文件中,格式和屏幕显示的是一致的。只需要打开“huidan.txt”文件,就可以查看所有历史回单。5、自动按销售情况更新商品信息文件中的数据。本系统更新的是每种商品的库存剩余数量。存放商品信息的文件为“shangpin.txt”。 6、查询收银员销售信息。本系统中,所有收银员的销售信息都会保存在各自的文件里,相应的文件名为“ssy0、ssy1、ssy2、”。即编号为0的收银员的销售信息将保存在“ssy0”文件中,编号为1的收银员的销售信息将保存在“ssy1”文件中,依此类推,当需要查询某个收银员的销售信
5、息时,只需打开相应的文件,即可查看所有的历史记录。 7、浏览库存商品信息。进入菜单选项3,即可浏览所有的库存商品信息。 8、修改收银员用户名和密码。收银员第一次使用系统时,应先进入该菜单修改自己的用户名和密码。修改密码时,先输入需要修改的收银员的编号,然后输入该编号对应的旧的用户名和密码,通过验证后再输入新的用户名和密码。注意,只有输入正确的旧的用户名和密码,才允许修改相关信息。1.3 数据结构设计本系统所使用的结构体:struct name_information /收银员相关信息(编号、姓名、密码)char num5;char name10;char code10;name_i10; /共
6、十个收银员编号struct goods /商品信息char num5; /编号char name10;/名称char shuliang10;/库存数量char danjia11; /单价gods6;struct huidan/回单信息struct goods good_sale100; /销售信息char totals10; /总价钱char pays10; /实付款char leavings10; /找零huidans;2 系统设计2.1 总体设计按系统分析的功能要求将系统划分为以下三个主要功能模块:1、收银操作。2、商品库存信息查询。3、更改收银员用户名及密码。商场收银系统收银操作库存信息
7、查询更改用户名及密码2.2 详细设计2.2.1 界面设计1、菜单设计主菜单界面设计:2、输入界面的设计菜单选择界面:验证收银员信息界面:收银操作输入界面:更改收银员信息界面:4、 信息显示界面的设计显示全部商品信息界面:2.2.2 各功能模块的设计根据划分的功能模块,定义以下函数实现各功能: 1、 主函数main()主函数流程图:开始输入验证信息是否通过验证?选择菜单结束、菜单,收银操作菜单sale1()输入商品编号编号是否为“0”?编号是否存在?输入购买数量计算出总金额输入实付款计算出找零显示回单结束、菜单,显示所有商品信息sale()该部分函数直接读取出商品信息文件中的数据,然后显示出来。
8、、菜单,更改收银员用户名和密码sale()流程:先输入所需更改的收银员的编号,接着输入旧的用户名和密码,只有通过了验证才允许修改相关信息。如果通过了验证,就输入新用户名,再输入新密码,修改成功。3 系统编码设计3.1 main函数这是主函数,功能是读取系统运行所需的文件信息、验证收银员身份信息、main()int i,j; clrscr();gotoxy(1,2);printf(" = n"); printf("| |n"); printf("| Check information |n"); printf("| |n&qu
9、ot;); printf(" = n");gotoxy(1,8);/读取收银员相关信息fp=fopen("shouyy.txt","r"); /打开商品文件if(fp=NULL)printf("File shouyinyuan.txt is not exist");getch();elsefor(i=0;i<10;i+) /取出全部10个收银员的信息fread(&name_ii,sizeof(struct name_information),1,fp);fclose(fp); /读取完成信息后,关闭文
10、件printf("nPlease choose you name_number 0-9 :"); /输入收银员编号0-9doscanf("%d",&name_num);if(name_num>9)printf("Worng number,please choose again:");while(name_num>9|name_num<0);for(i=0;i<10;i+)/读取所输入编号收银员的相关信息,用户名和密码长度均为10个字符sys_namei=name_iname_i;sys_
11、codei=name_iname_num.codei;do /验证收银员相关信息printf("nInput your name please:"); /验证用户名scanf("%s",&in_name);if(strcmp(in_name,"0")=0)/当输入“0”,则退出main();if(strcmp(in_name,sys_name)=0)doprintf("nInput your code please:"); /验证密码scanf("%s",&in_code);if
12、(strcmp(in_code,"0")=0)/当输入“0”,则退出main();if(strcmp(in_code,sys_code)!=0)printf("nSorry,it is a wrong code");while(strcmp(in_code,sys_code)!=0);else printf("nSorry,it is a worng user name");while(strcmp(in_name,sys_name)!=0); /读取商品相关信息fp=fopen("shangpin.txt",&q
13、uot;r"); /打开商品文件if(fp=NULL)printf("open file error");getch();elsefor(i=0;i<6;i+) /共取出6种商品信息fread(&godsi,sizeof(struct goods),1,fp);fclose(fp); /读取完成信息后,关闭文件while(1)/主菜单clrscr();gotoxy(1,2);printf(" = n"); printf("| |n"); printf("| Sale system |n");
14、 printf("| |n"); printf("|shouyinyuan number is: "); /显示当前系统收银员编号 printf("%d",name_num); printf(" |n"); printf("|shouyinyuan name is: "); /显示当前系统收银员名字 printf(sys_name); printf(" |n"); printf(" = n");printf(" = n");printf
15、(" |1.Sale system work |n"); /系统收银操作printf(" |2.Shangpin Information |n"); /查看商品信息printf(" |3.Update information |n"); /更新收银员的用户名和密码,开机默认用户名为ying,密码5555printf(" |4.Exit |n"); /退出到登陆界面printf(" = nn");printf(" Please choose 1 to 4:");scanf(&q
16、uot;%d",&choose_menu);switch(choose_menu)case 1: sale1();break;case 2: sale2();break;case 3: sale3();break;case 4: main();break;3.2 huidan_printf函数函数功能:该函数用于显示回单到屏幕上。回单信息包括:收银员的编号和姓名,所购买商品的名称、数量、单价,购买总金额和实付金额,回单最下面是商场的一些信息(电话和地址)。/显示回单void huidan_printf()int i=0;int j=0;clrscr();printf(&quo
17、t; = n"); printf("| |n"); printf("| Thank you for your sale! |n"); printf("| |n"); printf("|shouyinyuan number is: "); /显示当前系统收银员编号 printf("%d",name_num); printf(" |n"); printf("|shouyinyuan name is: "); /显示当前系统收银员名字 printf(s
18、ys_name); printf(" |n"); printf(" = n"); /保存数据到回单huidans.totals0=Total/1000+0x30; /总金额huidans.totals1=Total/100%10+0x30;huidans.totals2=Total/10%10+0x30;huidans.totals3=Total%10+0x30;huidans.pays0=(int)paid/1000+0x30; /所付金额huidans.pays1=(int)paid/100%10+0x30;huidans.pays2=(int)pa
19、id/10%10+0x30;huidans.pays3=(int)paid%10+0x30;huidans.leavings0=leavings/1000+0x30; /找零huidans.leavings1=leavings/100%10+0x30;huidans.leavings2=leavings/10%10+0x30;huidans.leavings3=leavings%10+0x30;printf(" = n");printf("| shangpin shuliang*danjia=money |n");for(j=0;j<shangpi
20、n_c;j+) /shangpin_c为购买商品数printf("|%d>",j+1);for(i=0;i<10;i+)putchar(huidans.good_i);printf(" ");/显示 数量*单价=该商品总金额for(i=0;i<3;i+)putchar(huidans.good_salej.shuliangi);printf("*");for(i=0;i<5;i+)putchar(huidans.good_salej.danjiai);/商品数量字符型数据转化为整型数据shu
21、l=(huidans.good_salej.shuliang0-48)*100+(huidans.good_salej.shuliang1-48)*10+huidans.good_salej.shuliang2-48;/商品单价字符型数据转化为整型数据danj=(huidans.good_salej.danjia0-48)*1000+(huidans.good_salej.danjia1-48)*100+(huidans.good_salej.danjia2-48)*10+(huidans.good_salej.danjia4-48);printf(" =%d.%d",sh
22、ul*danj/10,shul*danj%10);printf(" |n");printf(" = n");printf(" = "); printf("n|The all price is:"); /价钱格式为三位整数、一位小数for(i=0;i<3;i+)putchar(huidans.totalsi);putchar('.');for(i=3;i<4;i+)putchar(huidans.totalsi);printf(" |n|pay:"); /价钱格式为三位
23、整数、一位小数for(i=0;i<3;i+)putchar(huidans.paysi);putchar('.');for(i=3;i<4;i+)putchar(huidans.paysi);printf(" leavings:"); /找零for(i=0;i<3;i+)putchar(huidans.leavingsi);putchar('.');for(i=3;i<4;i+)putchar(huidans.leavingsi);printf(" |n");printf(" = n&qu
24、ot;);printf(" = n"); printf("|Welcome! |n"); printf("|Serve tel|n"); printf("|Address:Guangdong university of technology |n");printf(" = n");3.3 huidan_save函数函数功能:该函数用于把所显示的回单保存到“huidan.txt”文件中,内容与格式和显示回单函数基本相同。/保存回单到文件void huidan_save(
25、)int i=0;int j=0;fp=fopen("huidan.txt","a");if(fp=NULL)printf("open file error");getch();elsefprintf(fp,"nnn = n"); fprintf(fp,"| |n"); fprintf(fp,"| Thank you for your sale! |n"); fprintf(fp,"| |n"); fprintf(fp,"|shouyinyuan
26、 number is: "); /收银员编号 fprintf(fp,"%d",name_num); fprintf(fp," |n"); fprintf(fp,"|shouyinyuan name is: "); /收银员名字 fprintf(fp,sys_name); fprintf(fp," |n"); fprintf(fp," = n");fprintf(fp," = n");fprintf(fp,"| shangpin shuliang*danji
27、a=money |n");for(j=0;j<shangpin_c;j+) /shangpin_c为购买商品数fprintf(fp,"|%d>",j+1);for(i=0;i<10;i+)fputc(huidans.good_i,fp);fprintf(fp," ");for(i=0;i<3;i+)fputc(huidans.good_salej.shuliangi,fp);fprintf(fp,"*");for(i=0;i<5;i+)fputc(huidans.good_s
28、alej.danjiai,fp);/商品数量字符型数据转化为整型数据shul=(huidans.good_salej.shuliang0-48)*100+(huidans.good_salej.shulia ng1-48)*10+huidans.good_salej.shuliang2-48;/商品单价字符型数据转化为整型数据danj=(huidans.good_salej.danjia0-48)*1000+(huidans.good_salej.danjia1-48)*100+(huidans.good_salej.danjia2-48)*10+(huidans.good_salej.dan
29、jia4-48);fprintf(fp," =%d.%d",shul*danj/10,shul*danj%10);fprintf(fp," |n");fprintf(fp," = n");fprintf(fp," = n"); fprintf(fp,"|The all price is:"); /价钱格式为三位整数、一位小数for(i=0;i<3;i+)fputc(huidans.totalsi,fp);fprintf(fp,".");for(i=3;i<4;i+
30、)fputc(huidans.totalsi,fp);fprintf(fp," |n|pay:"); /价钱格式为三位整数、一位小数for(i=0;i<3;i+)fputc(huidans.paysi,fp);fprintf(fp,".");for(i=3;i<4;i+)fputc(huidans.paysi,fp);fprintf(fp," leavings:"); /找零for(i=0;i<3;i+)fputc(huidans.leavingsi,fp);fprintf(fp,".");for
31、(i=3;i<4;i+)fputc(huidans.leavingsi,fp);fprintf(fp," |n");fprintf(fp," = n");fprintf(fp," = n"); fprintf(fp,"|Welcome! |n"); fprintf(fp,"|Serve tel|n"); fprintf(fp,"|Address:Guangdong university of technology |n");fprintf(f
32、p," = n");fclose(fp);3.4 sale1函数函数功能:该函数为第一个菜单函数,该函数中,收银员逐条输入商品编号及数量,系统自动计算金额,输入完毕后显示应付款,当输入实收额后,计算出找赎值。/收银操作函数/*功能:收银员逐条输入商品编号及数量,系统自动计算金额,输入完毕后显示应付款,当输入实收额后,计算出找赎值*/void sale1()int i;int shuliang,danjia_c;char ch;int num;clrscr();printf(" = n"); printf("| |n"); printf
33、("| Sale system work |n"); printf("| |n"); printf("|shouyinyuan number is: "); /显示当前系统收银员编号 printf("%d",name_num); printf(" |n"); printf("|shouyinyuan name is: "); /显示当前系统收银员名字 printf(sys_name); printf(" |n"); printf(" = n&qu
34、ot;);all_shangpin(); /显示出所有的商品shangpin_c=0;/购买数量,重新计数Total=0;/购买总金额,重新计数while(1) /逐个输入商品商品编号及数量,直到输入编号“0”结束printf("nChoose product:");doscanf("%d",&num);if(num>6) /检测所输入商品编号是否存在printf("Worng number,please choose again:");while(num>6);if(num=0) /如果输入的编号为“0”,则结束
35、本循环break;printf("It is:");for(i=0;i<10;i+) /显示所选商品的名称putchar(i); /剩余商品字符转化为数字形式leave_s=godsnum-1.shuliang2-0x30+(godsnum-1.shuliang1-0x30)*10+(godsnum-1.shuliang0-0x30)*100;/商品单价字符转化为数字形式,三位整数,移位小数danjia_c=godsnum-1.danjia4-0x30+(godsnum-1.danjia2-0x30)*10+(godsnum-1.danji
36、a1-0x30)*100+(godsnum-1.danjia0-0x30)*1000;/显示所选商品单价printf("nThe danjia is:%d.%d ",danjia_c/10,danjia_c%10);do /输入购买数量,并判断是否超出库存量printf("nThe shuliang is:");scanf("%d",&shuliang);if(shuliang>leave_s)printf("nSorry,the shuliang is not enoughn");while(shu
37、liang>leave_s); Total=Total+danjia_c*shuliang; /总价钱leave_s=leave_s-shuliang; /剩余商品数量/显示商品单价、总价钱(均是一位小数)printf("These money is:%d*%d.%d=%d.%dn",shuliang,danjia_c/10,danjia_c%10,danjia_c*shuliang/10,danjia_c*shuliang%10);/格式转换/更改商品信息中的商品剩余数量godsnum-1.shuliang2=leave_s%10+0x30;godsnum-1.sh
38、uliang1=leave_s/10%10+0x30;godsnum-1.shuliang0=leave_s/100+0x30;/购买数量写进回单huidans.good_saleshangpin_c.shuliang0=shuliang/100+0x30;huidans.good_saleshangpin_c.shuliang1=shuliang/10%10+0x30;huidans.good_saleshangpin_c.shuliang2=shuliang%10+0x30;for(i=0;i<10;i+)/购买物品名称写进回单huidans.good_saleshangpin_c.
39、namei=i; /购买物品的单价写进回单huidans.good_saleshangpin_c.danjiai=godsnum-1.danjiai;shangpin_c+; /购买数量加1printf("The all money is:%d.%dn",Total/10,Total%10);doprintf("The pay money is:"); /输入付款金额scanf("%f",&paid);paid=paid*10; /带一位小数点if(Total>paid)printf(&quo
40、t;nSorry,the money is not enough,please pay moren");while(Total>paid); /判断所付金额是否足够leavings=paid-Total; /应找零的钱数(带一位小数)sale_information_save();huidan_printf(); /显示回单update(); /更新商品信息到文件huidan_save(); /保存回单getch();3.5 sale2函数函数功能:该函数为第二菜单函数,用于显示所有的库存商品信息。信息内容包括:商品编号、商品名称、商品库存量以及商品单价。void sale2(
41、) /浏览商品信息unsigned char i,k;clrscr();printf(" = n"); printf("| |n"); printf("| All goods |n"); printf("| |n"); printf("|shouyinyuan number is: "); /显示当前系统收银员编号 printf("%d",name_num); printf(" |n"); printf("|shouyinyuan name is
42、: "); /显示当前系统收银员名字 printf(sys_name); printf(" |n"); printf(" = n");all_shangpin();getch();3.6 sale3函数函数功能:该函数为第三菜单函数,用于更改收银员的用户名和密码。/更改收银员用户名和密码,用户名和密码均为10位字符void sale3()int i;clrscr();printf(" = n"); printf("| |n"); printf("| Update information |n"); printf("| |n"); printf("|shouyinyuan number is: "); /显示当前系统收银员编号 printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品监测责任制度范本
- 园区卫生管理责任制度
- 村级道路安全责任制度
- 甲方项目总监责任制度
- 加强食品安全责任制度
- 工地经理岗位责任制度
- 幼儿园食品岗位责任制度
- 2025年体育总局科研所体育服务检验中心检验检测工作岗位编外聘用人员招聘备考题库及参考答案详解1套
- 中国铁建昆仑投资集团有限公司2026届大学毕业生招聘35人备考题库及答案详解1套
- 大学食堂安全责任制度
- 2026年辽宁医药职业学院单招职业技能考试题库含答案
- 职场压力与心理调适-洞察及研究
- 证券基础知识入门
- 上市公司销售合同范本
- 长城专题课件
- DB31T+1487-2024国际医疗服务规范
- 云南的士从业资格证考试及答案解析
- 经络腧穴学教学课件
- 调酒师英文教学课件
- 加盟三方合同协议书范本
- 2025年华电集团应聘笔试题目及答案
评论
0/150
提交评论