導航:首頁 > 編程語言 > python編程列印購物小票

python編程列印購物小票

發布時間:2022-12-14 07:27:17

『壹』 思軟系統怎麼從新列印小票

思軟系統重新列印小票步驟如下:
1、點擊系統參數設置。
2、小票設置。
3、自動切紙,前面打勾。
4、點擊收銀參數。
5、票數列印。
6、設置列印份數。

『貳』 用c#語言列印購物小票並計算積分

//輸出寬度自己調下吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;

namespace test
{
public class Goods
{
int number;
string name;
double price;
int buyCount;

public int Number
{
get { return this.number; }
set { this.number = value; }
}

public string Name
{
get { return this.name; }
set { this.name = value; }
}

public double Price
{
get { return this.price; }
set { this.price = value; }
}

public int BuyCount
{
get { return this.buyCount; }
set { this.buyCount = value; }
}
}

class Program
{
static void Main(string[] args)
{
Dictionary<int, string> initGoods = new Dictionary<int, string>();
initGoods.Add(1, "1;農夫山泉;2.50");
initGoods.Add(2, "2;今麥郎碗面;1.50");
initGoods.Add(3, "3;雙匯火腿腸;1.00");
Dictionary<int, Goods> goodList = init(initGoods);//初始化商品
Console.WriteLine("編號 商品名稱");
foreach (int item in goodList.Keys)
{
Console.Write(item);
Console.Write(" " + goodList[item].Name);
Console.WriteLine();
}
Console.WriteLine();
Dictionary<int, Goods> buyGoods = new Dictionary<int, Goods>();//購買商品
label1:
Console.Write("輸入商品編號:");
int bianhao = Convert.ToInt32(Console.ReadLine());
if (!goodList.Keys.Contains(bianhao))
{
Console.WriteLine("不存在商品編號!");
Console.WriteLine();
goto label1;
}
if (!buyGoods.Keys.Contains(bianhao))
{
buyGoods.Add(bianhao, goodList[bianhao]);
}
Console.Write("輸入購買數量:");
int buyGoodCount = Convert.ToInt32(Console.ReadLine());
buyGoods[bianhao].BuyCount += buyGoodCount;
Console.Write("輸入e停止購物,輸入其他任意鍵繼續購物:");
string s = Console.ReadLine();
if (s.ToUpper() == "E")
{
goto print;
}
else
{
goto label1;
}
print:
Console.WriteLine();
Console.WriteLine("----------------歡迎光臨光輝超市----------------");
Console.WriteLine("商品名稱 單價 數量 小計");
foreach (int item in buyGoods.Keys)
{
Console.Write(buyGoods[item].Name);
Console.Write(" "+buyGoods[item].Price);
Console.Write(" " + buyGoods[item].BuyCount);
Console.Write(" ¥" + (buyGoods[item].Price * buyGoods[item].BuyCount));
Console.WriteLine();
}
Console.ReadKey();
}

private static Dictionary<int, Goods> init(Dictionary<int, string> goodsAndPrice)
{
Dictionary<int, Goods> goods = new Dictionary<int, Goods>();
Goods goodsSigle;
for (int i = 1; i <= goodsAndPrice.Count; i++)
{
goodsSigle = new Goods();
string[] temp = goodsAndPrice[i].ToString().Split(';');
goodsSigle.Number = Convert.ToInt32(temp[0]);
goodsSigle.Name = temp[1];
goodsSigle.Price = Convert.ToDouble(temp[2]);
goods.Add(goodsSigle.Number, goodsSigle);
}
return goods;
}
}
}
以上是復制內容,侵權刪。

『叄』 python購物籃數據(關聯分析)

pip install mlxtend

由於已經是csv格式,所以直接輸入:

每一行: 一個購物籃

每一列: 購物籃中的商品

先看看pd讀的對不對:

然後按行列印:

再將這些存在一個數組中:

1、什麼是獨熱碼

獨熱碼,在英文文獻中稱做 one-hot code, 直觀來說就是有多少個狀態就有多少比特,而且只有一個比特為1,其他全為0的一種碼制,更加詳細參加 one_hot code(維基網路) 。在機器學習中對於離散型的分類型的數據,需要對其進行數字化比如說性別這一屬性,只能有男性或者女性或者其他這三種值,如何對這三個值進行數字化表達?一種簡單的方式就是男性為0,女性為1,其他為2,這樣做有什麼問題?

使用上面簡單的序列對分類值進行表示後,進行模型訓練時可能會產生一個問題就是特徵的因為數字值得不同影響模型的訓練效果,在模型訓練的過程中不同的值使得同一特徵在樣本中的權重可能發生變化,假如直接編碼成1000,是不是比編碼成1對模型的的影響更大。為了解決上述的問題,使訓練過程中不受到因為分類值表示的問題對模型產生的負面影響,引入獨熱碼對分類型的特徵進行獨熱碼編碼。

        可以這樣理解,對於每一個特徵,如果它有m個可能值,那麼經過獨熱編碼後,就變成了m個二元特徵(如成績這個特徵有好,中,差變成one-hot就是100, 010, 001)。並且,這些 特徵互斥 ,每次只有一個激活。因此,數據會變成稀疏的。

這樣做的好處主要有:

(1)解決了分類器不好處理 屬性數據 的問題

(2)在一定程度上也起到了 擴充特徵 的作用

                                        M

以下為我摘取的別人的,貼上原文鏈接https://blog.csdn.net/hellozhxy/article/details/80600845

著名的啤酒與尿布, 這是典型的購物籃問題, 在數據挖掘界叫做頻繁項集(Frequent Itemsets).

note: 數據類型寫法按照Python的格式.

一. 目標與定義

1. 問題背景

超市中購物清單中總是有一些項目是被消費者一同購買的. 如果我們能夠發現這些 關聯規則 (association rules), 並合理地加以利用, 我們就能取得一定成果. 比如我們發現熱狗和芥末存在這種關系, 我們對熱狗降價促銷, 而對芥末適當提價, 結果能顯著提高超市的銷售額.

2. 目標

找到頻繁地 共同 出現在消費者結賬小票中項目(比如啤酒和尿布), 來一同促銷, 相互拉動, 提高銷售額.

3. 定義

支持度support: 其實就是概率論中的頻次frequency

支持度閾值support threshhold: 記為s, 指分辨頻繁項集的臨界值.

頻繁項集: 如果I是一個項集(Itemset), 且I的出現頻次(i.e.支持度)大於等於s, 那麼我們說I是頻繁項集.

一元項, 二元項, 三元項: 包含有一種商品, 兩種, 三種商品的項集.

4. 關聯規則

關聯規則: 形式為I->j, 含義是如果I種所有項都出現在某個購物籃的話, 那麼j很有可能也出現在這個購物籃中. 我們可以給出相應的confidence值(可信度, 即概率論中的置信度).

其中, 這個關聯規則的可信度計算為Confidence = I∪{j} / I, 本身是非常符合直覺和常識的. 比如我們說關聯規則{dog, cat} -> and 的可信度為0.6, 因為{dog, cat}出現在了1, 2, 3, 6, 7五個購物籃中, 而and出現在了1,2,7中, 因此我們可以算出Confidence = freq[{dog, cat, and}] / freq[{dog, cat}] = 3/5 = 0.6

注意到, 分子部分的頻次總是比分母低, 這是因為{dog, cat} 出現的次數總是大於等於{dog, cat, and}的出現次數.

二. 購物籃與A-Priori演算法

1. 購物籃數據表示

我們將有一個文本文件輸入, 比如allBills.txt, 或者allBills.csv. 裡面每行是一個購物籃.

文件的頭兩行可能是這樣(df.show(2)):

{23, 456, 1001}

{3, 18, 92, 145}

我們假定這是一家大型連鎖超市, 比如沃爾瑪, 因此這個文本文件是非常大的, 比如20GB. 因此我們無法一次將該文件讀入內存. 因此, 演算法的主要時間開銷都是磁碟IO.

我們同時還假定, 所有購物籃的平均規模是較小的, 因此在內存中產生所有大小項集的時間開銷會比讀入購物籃的時間少很多.

我們可以計算, 對於有n個項目組成的購物籃而言, 大小為k的所有子集的生成時間約為(n, k) = n! / ((n-k)!k!) = O(n^k/ k!), 其中我們只關注較小的頻繁項集, 因此我們約定k=2或者k=3. 因此所有子集生成時間T = O(n^3).

Again, 我們認為 在內存中產生所有大小項集的時間開銷會比讀入購物籃的時間少很多.

2. Itemset計數過程中的內存使用

我們必須要把整個k,v字典放在內存中, 否則來一個Itemset就去硬碟讀取一次字典將十分十分地慢.

此處, 字典是k=(18, 145), v=15這種形式. 此處, 應當注意到, 如果有{bread, milk, orange}這樣的String類型輸入, 應當預先用一個字典映射成對應的整數值編碼, 比如1920, 4453, 9101這樣.

那麼, 我們最多能用字典存儲多少種商品?

先看下我們存儲多少個count值.

我們假定項的總數目是n, 即超市有n種商品, 每個商品都有一個數字編號, 那麼我們需要(n, 2) = n^2/2 的大小來存儲所有的二元組合的count, 假設int是佔4個byte, 那麼需要(2·n^2)Byte內存. 已知2GB內存 = 2^31 Byte, 即2^31/2 = 2^30 >= n^2 --> n <= 2^15. 也就是說n<33 000, 因此我們說商品種類的最多是33k種.

但是, 這種計算方法存在一個問題, 並不是有10種商品, 那麼這10種商品的任意二元組合都會出現的. 對於那些沒出現的組合, 我們在字典中完全可以不存儲, 從而節省空間.

同時, 別忘了我們同樣也得存儲key = (i, j), 這是至少額外的兩個整數.

那麼我們到底具體怎麼存儲這些計數值?

可以採用三元組的方式來構造字典. 我們採用[i, j, count]形式來存儲, 其中i代表商品種類1, j代表商品種類2, 前兩個值代表key, 後面的value就是count, 是這個二元組合下的計數.

現在, 讓我們注意到我們(1)假定購物籃平均大小較小, 並(2)利用三元組(2個key的)字典和(3)不存儲沒出現組合優勢. 假設有100k = 10^5種商品, 有10million=10^7個購物籃, 每個購物籃有10個項, 那麼這種字典空間開銷是(10, 2) · 10^7 = 45 x 10^7 x 3= 4.5x10^8x3 = 1.35x10^9 個整數.  這算出來約為4x10^8 Byte = 400MB, 處於正常計算機內存范圍內.

3. 項集的單調性

如果項集I是頻繁的, 那麼它的所有子集也都是頻繁的. 這個道理很符合常識, 因為{dog, cat} 出現的次數總是大於等於{dog, cat, and}的出現次數.

這個規律的推論, 就是嚴格地, 我們頻繁一元組的個數> 頻繁二元組的個數 > 頻繁三元組的個數.

4. A-Priori演算法

我們通過Itemset計數中內存使用的部門, 已經明確了我們總是有足夠的內存用於所有存在的二元項集(比如{cat, dog})的計數. 這里, 我們的字典不存放不存在於購物籃中的任何二元項集合, 而且頻繁二元組的數目將會大於三元頻繁三元組> ...

我們可以通過單邊掃描購物籃文件, 對於每個購物籃, 我們使用一個雙重循環就可以生成所有的項對(即二元組). 每當我們生成一個項對, 就給其對應的字典中的value +1(也稱為計數器). 最後, 我們會檢查所有項對的計數結果,並且找出那些>=閾值s的項對, 他們就是頻繁項對.

1) A-Priori演算法的第一遍掃描

在第一遍掃描中, 我們將建立兩個表. 第一張表將項的名稱轉換為1到n之間的整數, 從而把String類型這樣的key轉為空間大小更小的int類型.  第二張表將記錄從1~n每個項在所有購物籃中出現的次數. 形式上類似

table 0(name table): {'dolphin': 7019, 'cat': 7020}  //dict形式, 其實也可以做成list形式 [['dolphin', 7019], ['cat', 7020]]

table 1(single-item counter table): {7019: 15, 7020: 18}  //dict形式, 其實也可以做成數組形式A[7019] = 2, A[7020] = 18

2) 第一遍掃描完的處理

第一遍掃描完後, 我們會按照自己設定的閾值s, 對整個table 1再進行一次mapping, 因為我們只關注最後counter值大於等於閾值的項目, 而且不關心其counter值具體多少. 因此, mapping策略是:

對凡是counter<s的, 一律把counter設成0; 對於counter>=s的, 按照次序, 把其設置成1~m的值(總共有m個滿足要求的項)

3) 第二遍掃描

第二遍掃描所做的事有三:

(1) 對每個購物籃, 在table 1中檢查其所有的商品項目, 把所有為頻繁項的留下來建立一個list.

(2) 通過一個雙重循環生成該list中的所有項對.

(3) 再走一次循環, 在新的數據結構table 2(dict或者list)中相應的位置+1. 此時的效果是dicta = {48: {13: 5}, 49: {71, 16}} 或者 lista [ [48, 13, 5],[49, 71, 16], ... ]

注意此時內存塊上存儲的結構: table1(name table), table2(single-item counter table), table3(double-item counter table)

5. 推廣: 任意大小頻繁項集上的A-Priori演算法

我們對上面這個演算法進行推廣.

從任意集合大小k到下一個大小k+1的轉移模式可以這么說:

(1) 對每個購物籃, 在table 1中檢查其所有的商品項目, 把所有為頻繁項的留下來建立一個list.

(2) 我們通過一個k+1重循環來生成該list中的所有(k+1)元組

(3) 對每個k+1元組, 我們生成其的(k+1 choose k)個k元組, 並檢查這些k元組是否都在之前的table k中. (注意到k=1的時候, 這步與(1)是重復的, 可以省略)

(4)再走一次循環, 在新的數據結構table k+1(dict或者list)中相應的位置+1. 此時的效果是k=2, k+1=3, 生成dicta = {48: {13: {19: 4}}, 49: {71: {51: 10}},  ... } 或者 生成lista [ [48, 13, 19, 4],[49, 71, 51, 10], ... ]

注意, 在進入下一次掃描前, 我們還需要額外把counter中值小於s的元組的計數值都記為0.

模式總體是:C1 過濾後 L1 計數後 C2 置零後 C2' 過濾後 L2 計數後 C3 置零後 C3' ......

END.

生成的商品種類為set形式:轉成list形式

第一張表:把項名稱轉換為1~n的整數:

至於數數,大神說,你就用collections.Counter就好:哈?

哈哈,可愛的wyy,開始分析吧~嚕嚕嚕啦啦啦~嚕啦嚕啦嚕~

生成全零矩陣:

換成zeros:

統計每一列的和,即每種商品的購買總數:

每一行列:

第一行:

建立一個新的只含有頻繁一項集的購物籃矩陣:

頻繁二項集:

『肆』 用C語言設計一個超市購物列印系統

我自己設計了一個,你試試!操作結束後按Ctrl+z顯示清單。使用方面有什麼不懂可以問我!
#include "stdio.h"
typedef struct{
char node[100]; /*商品編號*/
char name[100];/*商品名稱*/
float price;/*商品價格*/
} datatype;

typedef struct node{
datatype food[100];
int len;/*存放商品總數*/
}SPku;

datatype Input(void)
{datatype x;<br/> scanf("%s %s %f",x.node,x.name,&x.price);<br/> printf("輸入完畢!");<br/>return x;<br/>}

void create(SPku *r)
{ int i;
printf("\n輸入商品總數:");
scanf("%d",&r->len);
for(i=0;i<r->len;i++)
{printf("\n輸入商品編號 名稱 價格:"); <br/> r->food[i]=Input();<br/> }
}
int strlen(char s[])
{int i;<br/> for(i=0;i<s[i];i++);<br/> return i;<br/> }
int compare(char y[],char s[])
{int i;<br/>if(strlen(y)!=strlen(s))<br/> return 0;<br/>else<br/> for(i=0;i<strlen(y);i++)<br/> if(y[i]!=s[i])<br/> return 0;<br/> return 1;<br/>}

void Output(datatype f)
{
printf("\n%s %s %f",f.node,f.name,f.price);
}

int judge(SPku *r,char nd[])
{ int i;
for(i=0;i<r->len;i++)
if(compare(r->food[i].node,nd))
{ Output(r->food[i]) ;
return i;
}
return 1000;
}

main()
{SPku r,n;<br/> char nd[100];<br/> int k,j,i,y=0;<br/> printf("\n開始創建資料庫...");<br/> create(&r);<br/> printf("\n*********商品總單*********");<br/> for(i=0;i<r.len;i++)<br/> Output(r.food[i]);<br/> printf("\n**************************");<br/>while((j=getchar())!=EOF)<br/> {<br/> printf("\n掃描輸入商品的編號:");<br/> gets(nd);<br/> printf("輸入成功!");<br/> k=judge(&r,nd);<br/> if(k==1000) <br/> printf("\n無此商品...");<br/> else<br/> n.food[y++]=r.food[k];<br/> }
printf("\n*********商品清單*********");
n.len=y;
for(i=0;i<n.len;i++)
Output(n.food[i]);
}

『伍』 用C#實現超市購物結算並輸出購物小票功能

你的意思是列印出小票嗎?這個需要小票列印機,然後時限列印功能就好了。注意,小票的紙張高度和寬度與我們平時使用的A4紙張不一樣,所以需要設置列印區域。

『陸』 如何用wps製作小票

4步。
1、首先要把,整個表格選中,中表格的第一個單元格拖動到最後一個單元格就可以了。
2、然後我們按順序點擊「文件」—「列印區域「—「設置列印區域」,這樣就把我們整個表格設置成了列印區域了。我們現在可以看到在表格中又兩條虛線,這是一個是默認的列印區域,一個是我們剛剛設置的列印區域。現在還是按默認的列印的。
3、接下來我們打開「列印預覽」之後,我們在菜單上點擊「分頁預覽」。
4、在顯示出來的頁面中我們會看到表格給一個藍色的框,還有一個藍色的虛線,我們把滑鼠移動到虛線上,之後滑鼠會變成一個雙箭頭的圖標。虛線就能被拖動了,我們把虛線拖動到旁邊的藍色實線那裡。
購物小票又稱為購物收據,是指在消費者購物時由商場或其它商業機構給用戶留存的銷售憑據。現在除了少數手寫的小票之外,大多為收銀機列印。列印的購物小票上一般包含有如下內容:銷售單位名稱、聯系方式、收銀機號、賬單流水號、收銀員編號、銷售日期、商品名稱、數量、單價、商品金額、合計金額、付款方式、實收金額、找零額、票據列印時間等。

『柒』 如何用nodejs或python 控制小票列印機的格式

裝好小票列印機驅動,添加列印機,再到軟體裡面找到系統設置,外接設備,裡面就有列印機了。

『捌』 C#製作一個列印購物小票

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;

namespacePrintBill
{
classProgram
{
intItemId;
intAmount;
intnongfushanquan=0;
intjinmailang=0;
intshuanghuihuotuichang=0;
strings=string.Empty;

privatevoidbusiness()
{
Console.Write("輸入商品編號:");
ItemId=Convert.ToInt32(Console.ReadLine());
Console.Write("輸入商品數量:");
Amount=Convert.ToInt32(Console.ReadLine());
if(ItemId==1)
{
nongfushanquan=nongfushanquan+Amount;
}
if(ItemId==2)
{
jinmailang=jinmailang+Amount;
}
if(ItemId==3)
{
shuanghuihuotuichang=shuanghuihuotuichang+Amount;
}
Console.WriteLine("輸入e停止購物,輸入其他任意鍵繼續購物:");
s=Console.ReadLine();
}

privatevoidProceBill()
{
doublesum1=0;
doublesum2=0;
doublesum3=0;

Console.WriteLine("----------------歡迎光臨光輝超市----------------");
Console.WriteLine("商品名稱單價數量小計");
if(nongfushanquan!=0)
{
sum1=nongfushanquan*1.02;
Console.WriteLine("農夫山泉1.02"+""+nongfushanquan+""+"&#165;"+sum1);
}
if(jinmailang!=0)
{
sum2=jinmailang*3.5;
Console.WriteLine("今麥郎碗面3.50"+""+jinmailang+""+"&#165;"+sum2);
}
if(shuanghuihuotuichang!=0)
{
sum3=shuanghuihuotuichang*0.5;
Console.WriteLine("雙匯火腿腸0.50"+""+shuanghuihuotuichang+""+"&#165;"+sum3);
}

doubletotalSum=sum1+sum2+sum3;
Console.WriteLine("總計:&#165;"+totalSum);

}

staticvoidMain(string[]args)
{
Console.WriteLine("編號商品名稱");
Console.WriteLine("1農夫山泉");
Console.WriteLine("2今麥郎碗面");
Console.WriteLine("3雙匯火腿腸");
Console.WriteLine("");
Programp=newProgram();
p.business();
while(p.s!="e")
{
p.business();
}
p.ProceBill();
}
}
}

運行結果:

建議你自己再寫寫。

『玖』 收銀系統怎麼列印小票

超市收銀機的重復列印小票操作步驟如下:

1、打開超市收銀軟體系統後台,點擊菜單「系統管理」。

『拾』 超市小票列印機怎麼編程(並口的),好像和什麼彈錢箱有關的!謝謝

錢箱是和列印機連接的 只要你的收款軟體給你列印指令列印機能正常列印 錢箱一般就能自動彈出 不能的話查看埠設置的對不對,
還有就是列印機要有驅動,如果以上都沒有問題把錢箱鏈接的列印機插頭拔了重新插或者列印機關了重開一下。

閱讀全文

與python編程列印購物小票相關的資料

熱點內容
解壓故事校園戀愛又煩惱 瀏覽:555
冰箱壓縮機放多久能啟動 瀏覽:171
軟體演算法發明專利 瀏覽:987
旁氏演算法 瀏覽:765
程序員那麼可愛電視劇免費觀看極速版 瀏覽:747
程序員那麼可愛陸漓孩子保住了嗎 瀏覽:564
如何獲取伺服器dns秒解 瀏覽:663
如何破解大黃蜂的加密文件 瀏覽:11
新概念英語第三冊pdf 瀏覽:401
分項詳細估演算法步驟 瀏覽:436
ipad桌面文件夾放大 瀏覽:891
我的世界基岩版怎麼進國際伺服器 瀏覽:516
福州醫院有沒有解壓艙 瀏覽:470
帶pwm的51單片機 瀏覽:917
ace程序員指南源碼 瀏覽:414
哪個app可以分36期還款 瀏覽:244
為什麼安卓軟體平台那麼多 瀏覽:288
如果把伺服器切斷了怎麼辦 瀏覽:19
app建立網站需要什麼技術 瀏覽:691
迷你世界教你開雲伺服器 瀏覽:562