日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web版凑发票计算器经验总结

發布時間:2024/3/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web版凑发票计算器经验总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

故事背景

公司一直有這樣的報銷傳統:每個月加班一天報銷25塊錢,但是必須提供相應的發票。發票的規定有點奇葩,不能少于報銷金額,但是也不能多余報銷金額+30.舉個例子,比如一個月加班10天,那么可以報銷的金額是250元,需要提供的發票金額加起來必須在250-280之間。

旁邊的同事每個月都能搞到好多發票,各個金額都有。但是每次為了把這些發票湊成合適的數字,都要花一些時間。

由此想到,如果要是能寫個代碼,來完成這項工作就好了。

這就是想寫一個“發票計算器”的動機。

開發思路

對于這種需求來說,最核心的部分肯定是寫一個正確、完善的湊數字的程序。
基本需求就是,有一組數,看他們有否任意組合,滿足湊成和在某個區間內的條件。
再之后,可以簡化為,對于一個數組,寫出所有下標的組合。
列出來所有組合之后,在逐一組合檢查是否滿足“湊和”的條件。

于是問題轉換為,給一個數組,列出來所有下標的組合。

起初想用c++ 來寫這個小工具,用 QT 套個殼。但是后來考慮到 QT 發布 exe 不知道要趟多少缺少 dll 的坑,并且總不能誰需要就給誰手動拷貝個 exe,非常不利于推廣傳播。

因此,最終決定開發在 web平臺,算法和界面都用 javascript 來寫.最終把結果部署在我個人的服務器上。

這樣就比較方便使用、利于傳播了

經驗總結

關于web平臺

由于個人對 web 平臺 javascript 操作 dom不太熟悉,因此照著 w3school一點點寫了個簡陋的界面。嘗試用 js 動態添加、刪除 div.整個過程比想象的要順利得多。

并沒有采用 jQuery 以及各種前端框架,純手擼 html 和 javascript.

整體感覺下來,跟給游戲寫 ui 思路幾乎一樣,甚至更簡單一些。

關于算法

算法本身比我想象得要復雜。我把我自己的思路寫到了代碼的注釋里面。
可能遠遠達不到“最優解”,但是確實已經窮盡自己的智力極限了。

困難之處在于,由于得考慮各種各樣的組合,可能有兩個的組合,3個的組合,N個的組合。也就是說如果遍歷的話,可能需要寫的遍歷的層數是動態的。

這樣一來很容易就會想到遞歸求解。

但是及時想到了遞歸,依然沒有能夠快速把代碼寫出來。

這里我就圖省事兒直接上圖吧。

打包發布時遇到的問題

最終結果出來,本地測試運行良好.部署到我騰訊云的 CentOS服務器上時,遇到了兩個小問題。

  • 如何把本地文件上傳到服務器

  • 上傳到服務器之后,原本正常的 html 網頁方問竟然是亂碼

  • 成果展示

    各種邊界條件都有處理,比如沒有輸入發票、輸入發票沒有解法時,都有對應的處理。
    唯一已知但是沒有處理的是輸入沒有屏蔽非數字。
    結果在這個鏈接

    http://gj1111myl.cn/receipt

    本來想貼一下代碼,但其實一共個3個文件,代碼也沒有加密。 chrome 瀏覽器打開上面的地址,直接用開發者工具就能看到了。

    總結

    以上是生活随笔為你收集整理的web版凑发票计算器经验总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。