最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng)課程設(shè)計(jì)

 更新時(shí)間:2022年03月24日 15:57:53   作者:aqqwvfbukn  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一、 需求分析

目前商品市場(chǎng)的商品信息玲瑯滿目,貨物信息的儲(chǔ)存以及更新就變的越來(lái)越重要。因此,我們小組設(shè)計(jì)的“超市信息管理程序”旨在解決貨物的信息和購(gòu)買商品信息的儲(chǔ)存問(wèn)題以及實(shí)現(xiàn)建立庫(kù)存信息,對(duì)購(gòu)物車添加商品、結(jié)算并修改庫(kù)存等操作,同時(shí)也能實(shí)現(xiàn)對(duì)庫(kù)存信息的讀取和顯示。

我們?cè)O(shè)計(jì)的程序要實(shí)現(xiàn)以下要求:

1、 使用兩個(gè)不同的結(jié)構(gòu)體分別保存貨物信息和購(gòu)物車中的商品信息,可在商品信息結(jié)構(gòu)體中嵌套貨物信息結(jié)構(gòu)體。
2、 將貨物信息寫入文件保存,在每次運(yùn)行時(shí),貨物信息可以從二進(jìn)制文件導(dǎo)入,并在結(jié)算后更新。
3、 建立一個(gè)鏈表保存購(gòu)物車信息,可以實(shí)現(xiàn)商品的添加和當(dāng)前購(gòu)物列表的顯示。
4、 系統(tǒng)制作完成后,能夠正常運(yùn)行。
具體目標(biāo)是在有限的商品信息中,程序能正常運(yùn)行。并能夠?qū)崿F(xiàn)查詢,增添,刪除和結(jié)算目的。

二、 總體設(shè)計(jì)

基本思路如下:

(1) 創(chuàng)建庫(kù)存信息:設(shè)計(jì)函數(shù)void establish();諸葛輸入貨物信息至結(jié)構(gòu)數(shù)組goods[NUM],在將數(shù)組寫入文件。
(2) 對(duì)購(gòu)物車進(jìn)行相關(guān)操作:定義指針struct item-node*cart來(lái)保存鏈表,若用戶選擇向購(gòu)物車添加商品,則新建一個(gè)節(jié)點(diǎn),將該商品信息存入節(jié)點(diǎn)中,再追加到鏈表的末尾。顯示購(gòu)物信息時(shí),若指針不為空,逐一顯示節(jié)點(diǎn)內(nèi)容。
(3) 結(jié)算:先調(diào)用display()顯示購(gòu)物清單,逐一讀取鏈表cart中每一個(gè)節(jié)點(diǎn)的數(shù)據(jù),計(jì)算價(jià)格,并修改結(jié)構(gòu)體數(shù)組goods。打印顯示總數(shù),并輸入實(shí)付金額,計(jì)算找零。再寫入文件。

遇到的問(wèn)題以及解決方法如下:

(1) 由于是初次接觸未知的函數(shù)體,因此對(duì)于它們的使用方式還不能靈活運(yùn)用。(解決方法:查閱相應(yīng)的函數(shù)結(jié)構(gòu)體書籍。)
(2) 要做到“增刪查改”這一點(diǎn),需要有明確的思維圖示。(解決方法:查閱書籍,多次例題實(shí)踐,達(dá)到熟能生巧。)
(3) 每個(gè)程序之間的銜接問(wèn)題。(解決方法:必須仔細(xì)編譯。)

程序框圖如下

三、詳細(xì)設(shè)計(jì)

程序由頭文件market.h和源文件market.c、establish.c、shoppingcart.c、calculate.c,四個(gè)源文件中具體包含的函數(shù)如下表所示。

代碼如下:

//Market.h
#ifndef?? ?MARKET_H
#define MARKET_H
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NUM 2
struct item {
?? ?char brand[20];
?? ?char id[10];
?? ?float in_price;
?? ?float out_price;
?? ?int storage;
};


struct item_node {
?? ?struct item wanted;
?? ?int amount;
?? ?struct item_node* next;
};

int menu();
void establish();
void dis_all();
void shop_cart();
int cart_menu();
void add();
void calculate();
void display();
struct item goods[NUM];
struct item_node * cart;
#endif


//Market.c
//#include"Market.h"
int main()
{
?? ?printf("******************************\n");
?? ?printf(" ? ?歡迎進(jìn)入超市管理系統(tǒng)\n");
?? ?printf("******************************\n");
?? ?while (1) {
?? ??? ?switch (menu()) {
?? ??? ?case 1:
?? ??? ??? ?establish(); break;
?? ??? ?case 2:
?? ??? ??? ?dis_all(); break;
?? ??? ?case 3:
?? ??? ??? ?shop_cart(); break;
?? ??? ?case 4:
?? ??? ??? ?calculate(); break;
?? ??? ?case 5:
?? ??? ??? ?printf("感謝使用,再見!\n");
?? ??? ??? ?exit(0);
?? ??? ?}
?? ?}
}

int menu() {
?? ?char str[5];
?? ?int select;
?? ?printf("\n\n請(qǐng)選擇數(shù)字進(jìn)行操作\n");
?? ?printf("----------------------\n");
?? ?printf("1.建立庫(kù)存信息\n");
?? ?printf("2.顯示所有商品\n");
?? ?printf("3.購(gòu)物車\n");
?? ?printf("4.結(jié)算\n");
?? ?printf("5.退出\n");
?? ?printf("----------------------\n\n");
?? ?printf("請(qǐng)選擇對(duì)應(yīng)數(shù)字 1-5:");
?? ?while (1) {
?? ??? ?fflush(stdin);
?? ??? ?//gets(str);
?? ??? ?gets_s(str);
?? ??? ?select = atoi(str);
?? ??? ?if (select < 1 || select>5)
?? ??? ??? ?printf("輸入錯(cuò)誤,請(qǐng)重新輸入:");
?? ??? ?else
?? ??? ??? ?break;
?? ?}
?? ?return select;
}

void ?dis_all() {
?? ?int i;
?? ?FILE* fp;
?? ?fp = fopen("goods", "r");
?? ?for (i = 0; (fread(goods + i, sizeof(struct item), 1, fp)) != 0l; i++) {
?? ??? ?printf("---------------------\n");
?? ??? ?printf("貨號(hào) ? ? ? ? ?品名 ?單價(jià) ?庫(kù)存量\n");
?? ??? ?printf("%7s%10s%7.2f%8d\n", goods[i].id, goods[i].brand, goods[i].out_price, goods[i].storage);
?? ?}
?? ?fclose(fp);
}


//establish.c
//建立庫(kù)存信息文件
//#include"Market.h"
void establish() {
?? ?FILE* fp;
?? ?int i;
?? ?printf("請(qǐng)依次輸入貨物信息\n");
?? ?printf("-------------------\n");
?? ?for (i = 0; i < NUM; i++) {
?? ??? ?printf("品名:");
?? ??? ?fflush(stdin);
?? ??? ?//gets(goods[i].brand);
?? ??? ?gets_s(goods[i].brand);
?? ??? ?printf("貨號(hào):");
?? ??? ?fflush(stdin);
?? ??? ?//gets(goods[i].id);
?? ??? ?gets_s(goods[i].id);
?? ??? ?printf("進(jìn)價(jià):");
?? ??? ?fflush(stdin);
?? ??? ?scanf("%f", &goods[i].in_price);
?? ??? ?printf("售價(jià):");
?? ??? ?fflush(stdin);
?? ??? ?scanf("%f", &goods[i].out_price);
?? ??? ?printf("數(shù)量:");
?? ??? ?fflush(stdin);
?? ??? ?scanf("%d", &goods[i].storage);
?? ??? ?printf("\n");
?? ?}
?? ?if ((fp = fopen("goods", "w")) == NULL) {
?? ??? ?printf("創(chuàng)建文件失敗。\n");
?? ??? ?return;
?? ?}
?? ?fwrite(goods, sizeof(struct item), NUM, fp);
?? ?fclose(fp);
}
//shoppingcart.c
//購(gòu)物車
//#include"Market.h"
void shop_cart() {
?? ?while (1) {
?? ??? ?switch (cart_menu()) {
?? ??? ?case 1:display(); break;
?? ??? ?case 2:add(); break;
?? ??? ?case 3:return;
?? ??? ?}
?? ?}
}


int cart_menu() {
?? ?char str[5];
?? ?int select;
?? ?printf("\n請(qǐng)選擇操作\n");
?? ?printf("-----------------\n");
?? ?printf("1.顯示當(dāng)前購(gòu)物列表\n");
?? ?printf("2.添加商品\n");
?? ?printf("3.退出\n");
?? ?printf("-----------------\n\n");
?? ?printf("請(qǐng)選擇對(duì)應(yīng)數(shù)字1-4\n");
?? ?while (1) {
?? ??? ?fflush(stdin);
?? ??? ?//gets(str);
?? ??? ?gets_s(str);
?? ??? ?select = atoi(str);
?? ??? ?if (select < 1 || select>3)
?? ??? ??? ?printf("輸入錯(cuò)誤,請(qǐng)重新輸入:\n");
?? ??? ?else
?? ??? ??? ?break;
?? ?}
?? ?return select;
}

void display() {
?? ?struct item_node * p , ?* cart;
?? ?if (p = NULL) {
?? ??? ?printf("購(gòu)物車為空\(chéng)n");
?? ??? ?return;
?? ?}
?? ?while (p != NULL) {
?? ??? ?printf("--------------------------\n");
?? ??? ?printf("貨號(hào) ? ? ? ? ? 品名 ?單價(jià) ?數(shù)量\n");
?? ??? ?printf("%10s%20s%7.2f%8d\n", p->wanted.id, p->wanted.brand, p->wanted.out_price, p->amount);
?? ??? ?p = p->next;
?? ?}
}
void add() {
?? ?FILE* fp;
?? ?int i, n;
?? ?char str[20];
?? ?char choice1, choice2;
?? ?struct item_node* p, * p1;
?? ?do {
?? ??? ?printf("輸入所需物品的名稱或貨號(hào):\n");
?? ??? ?fflush(stdin);
?? ??? ?//gets(str);
?? ??? ?gets_s(str);
?? ??? ?if ((fp = fopen("goods", "r")) == NULL) {
?? ??? ??? ?printf("打開文件失敗\n");
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?for (i = 0; fread(goods + i, sizeof(struct item), 1, fp) != 0; i++) {
?? ??? ??? ?if ((strcmp(goods[i].brand, str) == 0 || strcmp(goods[i].id, str) == 0) && goods[i].storage != 0) {
?? ??? ??? ??? ?printf("已找到所需物品:\n");
?? ??? ??? ??? ?printf("--------------------------------\n");
?? ??? ??? ??? ?printf("貨號(hào) ? ? ? ? ? 品名 ?單價(jià) ?庫(kù)存量\n");
?? ??? ??? ??? ?printf("%10s%20s%7.2f%8d\n", goods[i].id, goods[i].brand, goods[i].out_price, goods[i].storage);
?? ??? ??? ??? ?printf("請(qǐng)輸入所需數(shù)量:");
?? ??? ??? ??? ?scanf("%d", &n);
?? ??? ??? ??? ?if (n > goods[i].storage) {
?? ??? ??? ??? ??? ?printf("庫(kù)存不足\n");
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?printf("\n 是否購(gòu)買?(Y/N)");
?? ??? ??? ??? ?fflush(stdin);
?? ??? ??? ??? ?choice1 = getchar();
?? ??? ??? ??? ?if (choice1 == 'Y' || choice1 == 'y') {
?? ??? ??? ??? ??? ?p1 = (struct item_node* )malloc(sizeof(struct item_node));
?? ??? ??? ??? ??? ?if (p1 == NULL) {
?? ??? ??? ??? ??? ??? ?printf("內(nèi)存申請(qǐng)失敗!\n");
?? ??? ??? ??? ??? ??? ?exit(1);
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?p1->amount = n;
?? ??? ??? ??? ??? ?p1->wanted = goods[i];
?? ??? ??? ??? ??? ?p1->next = NULL;
?? ??? ??? ??? ??? ?p = cart;
?? ??? ??? ??? ??? ?if (cart == NULL)
?? ??? ??? ??? ??? ??? ?cart = p1;
?? ??? ??? ??? ??? ?else {
?? ??? ??? ??? ??? ??? ?while (p->next != NULL)
?? ??? ??? ??? ??? ??? ??? ?p = p->next;
?? ??? ??? ??? ??? ??? ?p1->next = p->next;
?? ??? ??? ??? ??? ??? ?p->next = p1;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ??? ?break;
?? ??? ??? ?}

?? ??? ?}
?? ??? ?if (i = NULL)
?? ??? ??? ?printf("未找到所需物品\n");
?? ??? ?fclose(fp);
?? ??? ?printf("是否繼續(xù)購(gòu)物?(Y/N)");
?? ??? ?fflush(stdin);
?? ??? ?choice2 = getchar();
?? ?} while (choice2 == 'Y' || choice2 == 'y');
}
//calculate.c
//結(jié)算
//#include "Market.h"
void calculate() {
?? ?float total = 0, pay;
?? ?struct item_node* p;
?? ?int i;
?? ?FILE* fp;
?? ?printf("以下是購(gòu)物清單:\n");
?? ?display();
?? ?if ((fp = fopen("goods", "r")) == NULL) {
?? ??? ?printf("打開文件失敗。\n");
?? ??? ?return;
?? ?}
?? ?for (i = 0; (fread(goods + i, sizeof(struct item), 1, fp)) != 0; i++)//有個(gè)分號(hào)
?? ??? ?;
?? ?fclose(fp);


?? ?p = cart;
?? ?while (p != NULL) {
?? ??? ?total += p->wanted.out_price * p->amount;
?? ??? ?for (i = 0; strcmp(goods[i].id, p->wanted.id) != 0; i++)
?? ??? ??? ?;
?? ??? ?goods[i].storage -= p->amount;
?? ??? ?p = p->next;
?? ?}
?? ?printf("總計(jì)%7.2f", total);
?? ?printf("\n輸入實(shí)付金額:");
?? ?scanf("%f", &pay);
?? ?printf("實(shí)付: ? ? %7.2f ? ?找零: ? ? %7.2f", pay, pay-total);
?? ?if ((fp = fopen("goods", "w")) == NULL) {
?? ??? ?printf("打開文件失敗。\n");
?? ??? ?return;
?? ?}
?? ?fwrite(goods, sizeof(struct item), NUM, fp);
?? ?fclose(fp);
}

四、程序運(yùn)行結(jié)果測(cè)試與分析

系統(tǒng)制作完成后,顯示如下圖界面

建立庫(kù)存信息,界面如下

顯示庫(kù)存列表,界面如下

進(jìn)入購(gòu)物車,界面如下

向鏈表中添加商品,界面如下

若商品不存在,界面如下

顯示當(dāng)前購(gòu)物列表,界面如下

結(jié)算界面如下

五、結(jié)論與心得

超市的目標(biāo)是以優(yōu)質(zhì)的服務(wù)和品種齊全的商品,面向地區(qū)的所有消費(fèi)者,以使經(jīng)營(yíng)者能夠?qū)崿F(xiàn)最大利潤(rùn),具體的目標(biāo)為:最方便的提供消費(fèi)者所需購(gòu)買物品,詳細(xì)如實(shí)的記錄物品的品種分類,了解市場(chǎng)發(fā)展方向,及時(shí)修正進(jìn)貨信息,修改庫(kù)存管理方法,提高工作效率節(jié)余才力物力資源。
經(jīng)過(guò)努力,報(bào)告基本完成。從最初的茫然,到慢慢的進(jìn)入狀態(tài),再到對(duì)思路逐漸的清晰,從代碼的錄入到程序的調(diào)試,整個(gè)過(guò)程難以用語(yǔ)言來(lái)表達(dá)。
目前的缺點(diǎn)是無(wú)法進(jìn)行準(zhǔn)確及時(shí)的成本,毛利核算:成本管理永遠(yuǎn)是主管的主題,特別是現(xiàn)在面對(duì)多變的市場(chǎng)環(huán)境,如何及時(shí)的滿足客戶的需求,進(jìn)行科學(xué)合理的成本預(yù)測(cè),成本分析及成本控制,及時(shí)準(zhǔn)確的為超市管理者提供決策依據(jù)信息。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++常用語(yǔ)句簡(jiǎn)介

    C++常用語(yǔ)句簡(jiǎn)介

    這篇文章主要介紹了C++常用語(yǔ)句簡(jiǎn)介,文章將要介紹的常用語(yǔ)句有聲明變量、賦值語(yǔ)句、cin、cout語(yǔ)句、庫(kù)函數(shù)、自定義函數(shù),需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼

    C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼

    本篇文章主要介紹了C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • C++實(shí)現(xiàn)隨機(jī)數(shù)生成的現(xiàn)代化封裝

    C++實(shí)現(xiàn)隨機(jī)數(shù)生成的現(xiàn)代化封裝

    在現(xiàn)代?C++?中,隨機(jī)數(shù)生成是許多程序設(shè)計(jì)中不可或缺的部分,例如游戲開發(fā)、算法設(shè)計(jì)、統(tǒng)計(jì)模擬等,本文將以一個(gè)封裝好的隨機(jī)工具類?Random?為例,深入剖析其功能的實(shí)現(xiàn)與使用,并引入相關(guān)知識(shí),幫助讀者觸類旁通,掌握?C++?隨機(jī)數(shù)的核心技巧
    2024-11-11
  • 詳解如何將c語(yǔ)言文件打包成exe可執(zhí)行程序

    詳解如何將c語(yǔ)言文件打包成exe可執(zhí)行程序

    這篇文章主要介紹了詳解如何將c語(yǔ)言文件打包成exe可執(zhí)行程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解

    C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解

    下面小編就為大家?guī)?lái)一篇C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)多文本編輯器

    Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)多文本編輯器

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)簡(jiǎn)易的多文本編輯器,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C++簡(jiǎn)單QQ程序服務(wù)器端的實(shí)現(xiàn)代碼

    C++簡(jiǎn)單QQ程序服務(wù)器端的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C++簡(jiǎn)單QQ程序服務(wù)器端的實(shí)現(xiàn)代碼,感興趣的朋友可以參考一下
    2016-05-05
  • C語(yǔ)言鏈表實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì)

    C語(yǔ)言鏈表實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語(yǔ)言實(shí)現(xiàn)基于控制臺(tái)的電子時(shí)鐘

    C語(yǔ)言實(shí)現(xiàn)基于控制臺(tái)的電子時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)基于控制臺(tái)的電子時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++ RTTI與4種類型轉(zhuǎn)換的深入理解

    C++ RTTI與4種類型轉(zhuǎn)換的深入理解

    這篇文章主要給大家介紹了關(guān)于C++ RTTI與4種類型轉(zhuǎn)換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

青河县| 宁南县| 宜兴市| 清镇市| 饶河县| 马龙县| 巫溪县| 白玉县| 万源市| 喜德县| 长子县| 鲁甸县| 堆龙德庆县| 于都县| 枣庄市| 鸡东县| 申扎县| 富锦市| 武邑县| 峡江县| 府谷县| 公主岭市| 宕昌县| 刚察县| 磐石市| 大姚县| 秦皇岛市| 赤壁市| 塘沽区| 临颍县| 水富县| 湟中县| 平安县| 玛多县| 沙雅县| 东乌珠穆沁旗| 大邑县| 华蓥市| 吴川市| 武宣县| 买车|