C语言仿超市购物小票打印程序,带分页功能

以前讲课的时候,给学生讲解编的一个程序


最后1页,出现总计


第1页,不出现总计

程序完整代码

函数调用形式

#include "stdio.h"

#include "stdlib.h"

#include "windows.h"

#define MAX 50

#define LEN 20

//购买商品,并修改商品数量数组,该数组通过传地址调用

void init_goods_buy(int goods_num[])

{

int i,num;

printf(" 说明: 请分别输入所购买商品的编号 (编号范围0-%d,不要超过哦,程序不做异常检查) 和数量(实际购买量) ",MAX-1);

printf(" 输入格式采用(商品序号 商品数量) (用空格隔开哦,然后回车再输入第二件商品, 以此类推),最后再输入数字-1 -1作为结束 ");


printf(" 下面模拟超市扫描商品过程 ");

for(;1;)

{

printf(" ");

scanf("%d %d",&i,&num);

if(i==-1) break;

if(i>49)

{

printf("编号错误,请重新输入! ");

continue;

}

goods_num[i]=num;

}

}

//打印商品小票(不分页)

void print_goods_bill_no(char goods_name[ ][LEN],double goods_pr[],int goods_num[])

{

int i;

double total=0.0;

printf(" 商品编号 商品名称 商品单价 商品数量 商品小计 ");

printf(" ======================================================== ");

for(i=0;i

{

if(goods_num[i]!=0)

if(strlen(goods_name[i])<=8)

printf(" %-10d%-10s%8.2f%10d%18.2f ",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]);

else

printf(" %-10d%-.6s... %8.2f%10d%18.2f ",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]);

tot5al+=(goods_pr[i]*goods_num[i]);

}

printf(" ======================================================== ");

printf(" 总计:%50.2f ",total);

}

//打印商品小票(分页)

void print_goods_bill_yes(int count,char goods_name[ ][LEN],double goods_pr[],int goods_num[])

{

int i=1,j,k=0;

int order[MAX/5];

double total=0.0;


for(j=0;j

if(goods_num[j]!=0)

if(i++%5==1)

order[k++]=j;


if(count<=5)

{

printf(" 商品编号 商品名称 商品单价 商品数量 商品小计 ");

printf(" ======================================================== ");

if(count==0)

printf(" 无购物信息! ");

else

{

for(i=0;i

{

if(goods_num[i]!=0)

if(strlen(goods_name[i])<=8)

printf(" %-10d%-10s%8.2f%10d%18.2f ",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]);

else

printf(" %-10d%-.6s... %8.2f%10d%18.2f ",i,goods_name[i],goods_pr[i],goods_num[i],goods_pr[i]*goods_num[i]);

total+=(goods_pr[i]*goods_num[i]);

}

}


printf(" ======================================================== ");

printf(" 总计:%50.2f ",total);

}

else

{

i=1;

for(;;)

{

printf(" 商品编号 商品名称 商品单价 商品数量 商品小计 ");

printf(" ======================================================== ");


j=0;

for(k=order[i-1];k

{

if(goods_num[k]!=0)

{

if(strlen(goods_name[k])<=8)

printf(" %-10d%-10s%8.2f%10d%18.2f ",k,goods_name[k],goods_pr[k],goods_num[k],goods_pr[k]*goods_num[k]);

else

printf(" %-10d%-.6s... %8.2f%10d%18.2f ",k,goods_name[k],goods_pr[k],goods_num[k],goods_pr[k]*goods_num[k]);

if(++j==5)

break;

}

}

if((count%5==0&&i==count/5)||i==count/5+1)

{

for(j=0;j

{

if(goods_num[j]!=0)

total+=(goods_pr[j]*goods_num[j]);

}


printf(" ======================================================== ");

printf(" 总计:%50.2f ",total);

}

total=0.0;


printf(" |< ");

if(count%5==0)

{

for(i=1;i<=count/5;i++)

printf("%d ",i);

printf(">| ");

}

else

{

for(i=1;i<=count/5+1;i++)

printf("%d ",i);

printf(">| ");

}


printf(" 请输入显示第几页商品信息(请不要超过最大页数,暂不检查异常)!");

scanf("%d",&i);

system("cls");

}

}

}

//统计购买的商品数量

int count_goods_num(int goods_num[ ])

{

int i,count=0;

for(i=0;i

{

if(goods_num[i]!=0)

++count;

}

return count;

}

void print_line_copyright( )

{

//下面固定输出版权信息

//个人根据情况不同,请修改成自己的信息

int split_num=24,split_i; //后面用,不可删除

char split_line='*'; //后面用,不可删除,可更改*为其他符号


printf(" ");

//我是分割线

for(split_i=1;split_i<=split_num;split_i++)

printf("%c",split_line);

printf(" ");

printf(" 班级:XXXXXXX ");

printf(" 姓名:XXXXXXX ");

printf(" 学号:XXXXXXX ");

printf(" 系部:信息工程系 ");

//我是分割线

for(split_i=1;split_i<=split_num;split_i++)

printf("%c",split_line);

printf(" ");

getchar();

}

void main()

{

double goods_pr[MAX]={1.2,2.3,3.1,2.5,2.8,4.2,2.15,3.05,5.5,6.1,14.3,50.2,15.8,24.6,20.3,15.3,14.0,18.6,21.5,22.5,1.2,2.3,3.1,2.5,2.8,4.2,2.15,3.05,5.5,6.1,14.3,50.2,15.8,24.6,20.3,15.3,14.0,18.6,21.5,22.5,5.5,6.1,14.3,50.2,15.8,24.6,20.3,15.3,14.0,18.6};

char goods_name[MAX][LEN]={"火龙果","桃子","梨","苹果","猕猴桃","康师傅方便面","娃哈哈矿泉水","冰糖雪梨","辣条","榨菜","大葱","香菜","胡萝卜","大白菜","猪头肉","五香牛肉","手帕纸","旺旺雪饼","豆腐","烤红薯","商品1","商品2","商品3","商品4","商品5","商品6","商品7","商品8","商品9","商品10","商品11","商品12","商品13","商品14","商品15","商品16","商品17","商品18","商品19","商品20","商品21","商品22","商品23","商品24","商品25","商品26","商品27","商品28","商品29","商品30"};

int goods_num[MAX]={0};

int count;

//调用选购商品功能代码

init_goods_buy(goods_num);

count=count_goods_num(goods_num);

//清屏吧

system("cls");

//调用打印小票结账功能代码(不分页)

//print_goods_bill_no(goods_name,goods_pr,goods_num);

//调用打印小票结账功能代码(分页)

print_goods_bill_yes(count,goods_name,goods_pr,goods_num);

//调用打印分割线和版权信息功能代码

print_line_copyright( );


getchar();

}

展开阅读全文

页面更新:2024-05-01

标签:小计   功能   商品名称   商品编号   单价   数量   编号   语言   超市   代码   程序   商品   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top