1、1课 程 设 计课程名称 C 语言程序设计课程设计 A题目名称 商场收银系统 2目 录1 系统分析 11.1 课程设计内容 11.2 系统功能需求分析 11.3 数据结构设计 12 系统设计 22.1 总体设计 22.2 详细设计 22.2.1 界面设计 22.2.2 各功能模块的设计 33 系统编码设计 43.1 main 函数 44 系统运行 55 总结 611 系统分析1.1 课程设计内容建立一商品信息文件,商品信息包括商品编号、商品名、商品类别、商品数量、商品价格等。建立一商场收银系统,功能包括:1. 系统登录:运行系统时,收银员应输入姓名(或编号)及密码,验证后方可使用系统。2. 收
2、银操作:收银员逐条输入商品编号及数量,系统自动计算金额,输入完毕后显示应付款,当输入实收额后,计算出找赎值。3. 交易完成后按一定格式显示回单(格式参照一般超市中的打印小票) 。 4. 保存所显示的回单。5. 自动按销售情况更新商品信息文件中的数据。6. 查询收银员销售信息。7. 浏览库存商品信息。1.2 系统功能需求分析本系统应具有以下功能:1、文件操作功能进行商品信息管理,以文本的形式保存商品最新信息2、数据输入功能个人登录,消费商品基本资料的输入,销售信息输入等3、数据添加、修改、删除功能商品数据更新,个人入库信息修改更新4、计算功能基本计算功能,销售额处理5、查询功能资料库信息查询7、
3、数据显示功能保障客户知情权,对系统输入输出信息的显示22 系统设计2.1 总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块:1、 建立新文本库信息模块2、 销售系统模块3、 商品销售信息回单模块4、 商品库更新模块5、 销售回单保存模块2.2 详细设计2.2.1 界面设计1、菜单设计主菜单:子菜单:32、输入界面的设计3、信息显示界面的设计42.2.2 各功能模块的设计根据划分的功能模块,定义以下函数实现各功能:(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)1、主函数 main()2、charge 函数、receipt_m 函数界面显示密码登录系统主菜单界面
4、销售界面商品信息录入 密 码 登 录 系 统 密 码 登 录 系 统 53、input_s 函数4、disp 函数3 系统编码设计(这部分将代码列出,注意,每个函数开始处要介绍函数的功能,重要的代码应有注释,代码格式按锯齿式编排)3.1 main 函数void main()/*主函数:密码登陆与主页面显示使用*/商品销售额输出等商品销售信息显示商品信息录入更新商品基本信息录入最新商品信息保存更新信息库内容最新消费信息建立保存显示信息库内容6int key,j;int x,i;void openf();void newf();loop1:clrscr();gotoxy(10,4);for(i=0
5、;i8);switch(x) case 1:newf(); break;case 2:charge();break;case 3:receipt_m();break;case 4:input_s();break;case 5:sell_m();break;case 6:disp();break;case 7:exit(); while(1);3.3 newf 函数/*新建库信息函数,建立新文档存储更新商品信息 */void newf() void openf();8int i,x;clrscr();doclrscr();gotoxy(10,5);for(i=0;i20;i+)printf(“*
6、 “);gotoxy(16,8);printf(“1.the new warehouse filename n“);gotoxy(16,9);printf(“2.add the goods message“);gotoxy(16,10);printf(“3.exit“);gotoxy(10,16);for(i=0;i20;i+)printf(“* “);gotoxy(16,18);printf(“please select the menu:“);scanf(“%d“,switch(x) case 1:openf(); break;case 2:input_s();break;case 3:e
7、xit();while(1);void openf() int i;char f;clrscr();/*system(“cls“);*/printf(“tinput the warehouse filename pleasen“);scanf(“%s“,xname);fp=fopen(“xname“,“a“);fp1=fopen(“b.txt“,“w“);fprintf(fp1,“%dt%d“,n,n1);fclose(fp1);fp2=fopen(“c.txt“,“w“);fp3=fopen(“d.txt“,“w“);printf(“tYou were built the warehouse
8、 n“);printf(“ntcontinue to add goods message?(y/n)“);9f=getch();if(f=y)input_s();3.4 charge 函数/*销售信息管理系统*/charge()int i,j,f;int No;float sum=0;float change,receive;clrscr();gotoxy(10,5);for(i=0;i20;i+)printf(“* “);fp1=fopen(“b.txt“,“r“);fscanf(fp1,“%d%d“,fclose(fp1);if( fp=fopen(“a.txt“,“r“)!=NULL)f
9、or(i=0;in;i+)fscanf(fp,“%d%s%d%d“, doprintf(“ntNo.:t“);scanf(“%d“,printf(“ntamount:t“);scanf(“%d“,No-;n1+;goodsNo.amount-; sum+=j*goodsNo.price;fp2=fopen(“c.txt“,“a“);fprintf(fp2,“%st%dt%st%dt%dn“,salesperson_num,goodsNo.num,goodsNo.name,goodsNo.price,j);fclose(fp2);fp3=fopen(“d.txt“,“a“);fprintf(fp
10、3,“%dnt%d“,goodsNo.num,j);fclose(fp3);f=getch();if(f=0)getch();break;while(1);10printf(“ntsum:t%5.2f“,sum);printf(“nntreceive:t“);scanf(“%f“,change=receive-sum;printf(“ntchange:t%5.2f“,change);fp3=fopen(“d.txt“,“a“);fprintf(fp3,“nt%5.2fnt%5.2fnt%5.2f“,sum,receive,change);fclose(fp3);fp=fopen(“a.txt“
11、,“w“);for(i=0;in;i+)fprintf(fp,“%dt%st%dt%dn“,goodsi.num,goodsi.name,goodsi.price,goodsi.amount);fclose(fp);fp1=fopen(“b.txt“,“w“);fprintf(fp1,“%dt%d“,n,n1);fclose(fp1);gotoxy(10,20);for(i=0;i20;i+)printf(“* “);gotoxy(16,22);printf(“Press any key to exit“);getch(); 3.5 receipt 函数/*客户回单信息*/receipt_m(
12、)int i,No,j;float change,receive,sum; clrscr();gotoxy(10,5);for(i=0;i20;i+)printf(“* “);fp1=fopen(“b.txt“,“r“);fscanf(fp1,“%d%d“,fclose(fp1);if( fp3=fopen(“d.txt“,“r“)!=NULL) for(i=0;in1;i+)fscanf(fp3,“%dt%dt%ft%ft%f“,for(i=0;in1;i+)printf(“ntNo:t%dntamount:t%dntsum:t%5.2fntreceive:%5.2fntchange:t%5
13、.2fn“,goodsNo.num,j,sum,receive,change);fclose(fp3);11elseprintf(“errorn“);gotoxy(10,20);for(i=0;i20;i+)printf(“* “);gotoxy(16,22);printf(“Press any key to exit“);getch(); 3.6 input 函数/*库存信息更新*/input_s()int i,f,j=0;clrscr();printf(“tthis is the goods stock,please add the goods messagen“);printf(“num
14、:name:price:amount:n“);fp1=fopen(“b.txt“,“r“);fscanf(fp1,“%d%d“,fp=fopen(“a.txt“,“a“);for(i=0;i+,j+) scanf(“%d%s%d%d“,n+;fp1=fopen(“b.txt“,“w“);fprintf(fp1,“%dt%d“,n,n1);fclose(fp1);printf(“ncontinue?(y/n)“);f=getch();if(f=n) break; for(i=0;i=j;i+)fprintf(fp,“%dt%st%dt%dn“,goodsi.num,goodsi.name,goo
15、dsi.price,goodsi.amount);fclose(fp); gotoxy(16,20);printf(“press any key to break“);getch();3.7 sell 函数/*显示最近销售信息*/12sell_m() int i,j,No; clrscr();gotoxy(10,5);for(i=0;i20;i+)printf(“* “);printf(“ntsalesperson_numtnumtnametpricetsell_numn“);fp1=fopen(“b.txt“,“r“);fscanf(fp1,“%d%d“,fclose(fp1);if( fp
16、2=fopen(“c.txt“,“r“)!=NULL) for(i=0;in1;i+)fscanf(fp2,“%st%dt%st%dt%dn“,salesperson_num,for(i=0;in1;i+)printf(“t%stt%dt%st%dt%dn“,salesperson_num,goodsNo.num,goodsNo.name,goodsNo.price,j);fclose(fp2);elseprintf(“errorn“);gotoxy(10,20);for(i=0;i20;i+)printf(“* “);gotoxy(16,22);printf(“Press any key t
17、o exit“);getch();3.8 display 函数/*显示最近销售的库存信息*/disp()int i; clrscr();gotoxy(10,5);for(i=0;i20;i+)printf(“* “);printf(“ntinput the warehouse filenamen“);gotoxy(10,7);scanf(“%s“,xname);printf(“tNo.tnametpricetamountn“); fp1=fopen(“b.txt“,“r“);13fscanf(fp1,“%d“,if( fp=fopen(xname,“r“)!=NULL) for(i=0;in;
18、i+)fscanf(fp,“%d%s%d%d“,for(i=0;in;i+)printf(“t%dt%st%dt%dn“,goodsi.num,goodsi.name,goodsi.price,goodsi.amount);fclose(fp);elseprintf(“errorn“);gotoxy(10,20);for(i=0;i20;i+)printf(“* “);gotoxy(16,22);printf(“Press any key to exit“);getch();4 系统运行(这部分介绍程序运行过程,系统操作使用的说明,使用测试数据运行的结果,可将运行结果截图进行说明)密码登陆界面
19、14菜单页面销售系统显示界面15销售记录商品信息添加16销售信息记录信息库信息175 总结本程序在刚开始调试时有很错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。在刚开始的几次调试中曾经出现过不能运行、不能产生函数的循环操作,如 infor函数的循环,sell 函数的循环等。服,并且使程序的功能也得到了一定的完善。现在它能对出错的商品号显示重新输入,给出正确销售额。在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。除此之外,我还得到了一些有用的教训:写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。