欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)商品管理程序

 更新時間:2019年12月26日 17:15:58   作者:隔壁菜雞  
這篇文章主要為大家詳細介紹了C++實現(xiàn)商品管理程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++商品管理程序的具體代碼,供大家參考,具體內(nèi)容如下

一、題目:商品管理程序

二、目的與要求

1.目的

培養(yǎng)學生綜合利用C++語言進行程序設計的能力,培養(yǎng)學生綜合利用C++語言進行程序設計的能力,熟悉數(shù)組的操作,加強函數(shù)的運用,掌握典型算法的使用,提高軟件系統(tǒng)分析能力和程序文檔建立、歸納總結的能力。

2.基本要求

(1) 要求用C++語言編程,在Visual C++環(huán)境下調(diào)試完成;
(2) 要求按照程序功能分成幾個功能模塊來實現(xiàn),各個功能模塊分別使用函數(shù)來完成;
(3) 要求提供操作菜單,以便用戶進行選擇;
(4) 應對程序添加必要的注釋;
(5) 要求應用本課所講授的程序設計語言知識來解決問題,使用教材前六章的內(nèi)容來完成程序。

3.創(chuàng)新要求

在基本要求達到后,進行創(chuàng)新設計:

(1) 對程序功能進行拓展,使其更加實用。例如增加刪除功能和插入功能,即找到指定商品后將其從原數(shù)組中刪除;將新商品的信息按照商品代碼升序的順序插入到原數(shù)組中。

三、設計方法和基本原理

1.1功能描述

編寫一個簡單的商品信息管理程序,主要完成商品的一些信息的計算,商品的排序、查詢及顯示功能。
問題詳細描述
某商場的電器區(qū)有多種商品,每種商品包括以下信息:
代碼(整型),名稱(字符串),總量(整型),單價(雙精度),銷售量(整型),庫存量(=總量-銷售量,整型),銷售額(銷售量*單價,雙精度),例如目前有五種商品的基本信息,如表1所示。

--------------------------------------表1 商品信息列表-----------------------------------------------

要求在主函數(shù)中對各類商品的信息進行初始化,編寫多個函數(shù)分別實現(xiàn)下列功能,而后在main函數(shù)中進行調(diào)用。
各個函數(shù)的功能描述為:

(1) 計算函數(shù)cal:計算各類商品的庫存量及銷售額。
(2) 排序函數(shù)sort1:按庫存量升序排序,若庫存量相同則按銷售量升序排序,要求使用冒泡法排序。
(3) 排序函數(shù)sort2:按商品名稱降序排序,要求使用選擇法排序。
(4) 查詢函數(shù)search:根據(jù)商品代碼查找指定商品。若找到則返回該商品的下標,否則返回-1。
(5) 匯總函數(shù)total:計算并返回銷售總額(所有商品的銷售額的和)。
(6) 顯示函數(shù)output:輸出商品的信息。
(7) 顯示菜單函數(shù)showMenu:顯示菜單。

下面給出程序運行的部分界面:

(1) 程序首先計算庫存量與銷售額,而后顯示菜單,提示用戶輸入數(shù)字1~6以進行對應操作,運行界面如圖1所示。

(2)若用戶輸入的菜單選項不滿足要求(未在1~6范圍內(nèi)),則給出提示信息,提示用戶重新輸入,直到用戶輸入正確選項,運行界面如圖2所示。
(3) 當用戶輸入正確菜單選項時,則調(diào)用對應函數(shù),運行界面如圖3所示(執(zhí)行菜單項1與5后的界面)、圖4(執(zhí)行菜單項3后的界面)。

(4) 當用戶輸入6時,結束程序執(zhí)行,否則將一直提示用戶進行輸入。

1. 2. 問題的解決方案

根據(jù)問題的描述,為實現(xiàn)程序的功能,可按照下述過程完成程序(僅供參考,可自行設計實現(xiàn)過程及方法):
* (1) 在主函數(shù)中定義結構體數(shù)組存儲五種商品的信息,并使用給出的數(shù)據(jù)對該數(shù)組進行初始化,而后調(diào)用cal函數(shù)進行計算。
* (2) 為方便用戶選擇,應提供良好的操作界面供用戶使用,根據(jù)不同的要求進入到對應的功能模塊。執(zhí)行完某個功能后,應重新顯示菜單,因此可定義顯示菜單函數(shù)showMenu,并將該函數(shù)的調(diào)用置于循環(huán)結構中。
* (3) 為實現(xiàn)根據(jù)用戶的不同輸入(共6個)調(diào)用對應函數(shù),應采用多分支結構,可使用switch語句或else if語句實現(xiàn)。為實現(xiàn)多次輸入,應將將菜單的顯示、用戶對菜單選項的輸入及各個功能模塊的調(diào)用置于一個循環(huán)結構,當輸入為6時,結束該循環(huán)。
* (4) 輸入待查找商品的代碼,再調(diào)用查找函數(shù)search進行查找,若找到,調(diào)用output函數(shù)輸出該商品的信息,否則輸出未找到的提示信息。

四、主要技術問題的描述

根據(jù)三的分析與描述,主要問題在于:
* 1. 結構體類型的構造(struct PRO)
為表示商品的完整信息,該類型應包括以下成員:代碼(int code)、名稱(char name[20]) ,總量(int amount) ,單價(double price),銷售量(int sale1),商品的庫存量(int stock),銷售額(double sale2)。
* 2. 函數(shù)的參數(shù)傳遞問題
由于該程序是對結構體數(shù)組的操作,因此使用傳遞地址的方法,并傳遞數(shù)組長度。以查找函數(shù)為例,該函數(shù)的原型說明語句為:int search(PRO s[],int n ,int x); ,即在長度為n的s數(shù)組中查找代碼為x的商品,若找到,則返回該商品的下標,否則返回-1。形參分別表示結構體數(shù)組,數(shù)組長度及待查商品的代碼。
* 3. 查詢后如何調(diào)用output函數(shù)只輸出一種商品的信息
已知output函數(shù)的原型說明語句為: void output(PRO s[],int n); ,因此若要輸出下標為k的一個商品的信息, 調(diào)用形式應為:output(s+k, 1); ,其中,s為結構體數(shù)組名,k為調(diào)用查詢函數(shù)search后返回的商品下標,1表示輸出商品的個數(shù)。

程序源代碼

#include <iostream>
using namespace std;
void showMenu()
{
  cout<<"***************************"<<endl;
  cout<<"請輸入1~6內(nèi)的數(shù)字"<<endl;
  cout<<"1  按照庫存量升序排序\n";
  cout<<"2  按照商品名稱降序排序\n";
  cout<<"3  查找指定代碼的商品信息\n";
  cout<<"4  計算銷售總額\n";
  cout<<"5  輸出商品的信息\n";
  cout<<"6  結束\n";
  cout<<"***************************"<<endl;
}
struct PRO
{
  int code;//代碼
  char name[20];//名稱
  int amount;//總量
  double price;//單價
  int sale1;//銷售量
  int stock;//商品庫存量
  double sale2;//銷售額
};
void cal(struct PRO s[],int n)//計算函數(shù)
{
  for(int i=0;i<n;i++)
  {
    s[i].stock=s[i].amount-s[i].sale1;
    s[i].sale2=s[i].sale1*s[i].price;
  }
}

void sort1(struct PRO s[],int n)//按庫存量升序(小到大)排序,若庫存量相同則按銷售量升序排序,要求使用冒泡法排序。
{
  for(int i=0;i<n-1;i++)//比較n-1輪
  {
    for(int j=0;j<n-i-1;j++)//每輪比較n-1-i次
    {
      if(s[j].stock>s[j+1].stock||(s[j].stock==s[j+1].stock&&s[j].sale1>s[j+1].sale1))
      {
        PRO a;
        a=s[j];
        s[j]=s[j+1];
        s[j+1]=a;
      }
    }
  }
}

void sort2(struct PRO s[],int n)//按商品名稱降序排序,要求使用選擇法排序。

{
  for(int i=0;i<n;i++)
  {  int max=i;
    for(int j=i+1;j<n;j++)
    {
      if(strcmp(s[j].name, s[max].name)>0)max=j;
    }
    PRO temp;
    temp=s[i];
    s[i]=s[max];
    s[max]=temp;
  }
}

double total(PRO s[],int n)//計算并返回銷售總額(所有商品的銷售額的和)。
{
  double sum=0;
  for(int i=0;i<n;i++)
  {
    sum+=s[i].sale2;
  }
  return sum;
}

int search(PRO s[],int n,int x)
{
  for(int i=0;i<n;i++)
  {
    if(x==s[i].code)
    {
      return i;
    }
  }
  return -1;
}
void output(struct PRO s[],int n)
{
  cout<<"代碼   名稱     單價   總量  銷售量  庫存量   銷售額\n";
  for(int i=0;i<n;i++)
  {
    printf("%5d\t%s\t%5.0f\t%5d\t%5d\t%5d\t%10.0f\n",s[i].code,s[i].name,s[i].price,s[i].amount,s[i].sale1,s[i].stock,s[i].sale2);
  }
}
int main(int argc, const char * argv[]) {
  int C;
  struct PRO s[5]=  //商品信息初始化
  {
    {10120,"HaierCon",155,2998,55,0,0},
    {10564,"IPod MP3",245,1250,32,0,0},
    {11254,"SegaHDisk",120,655,20,0,0},
    {15826,"IBMLaptop",80,8188,15,0,0},
    {18257,"SonyDigtC",150,3588,29,0,0}
  };
  showMenu();
  cal(s, 5);
  while(cin>>C)
  {
    if(C<1|C>6){cout<<"輸入錯誤,請輸入1~6范圍內(nèi)的數(shù)字"<<endl;continue;}
    else
    {
      switch (C) {
        case 1:
        { cout<<"按庫存量升序排序,請等待....\n";
         sort1(s, 5);
         cout<<"排序結束.\n";
         break;
        }
        case 2:
        {
          cout<<"按商品名稱降序排序,請等待....\n";
          sort2(s, 5);
          cout<<"排序結束.\n";
          break;
        }
        case 3:
        {  int x;
          cout<<"請輸入指定商品的代碼:\n";
          cin>>x;
          if(search(s,5,x)==-1)
          {
            cout<<"未找到,沒有該種商品!"<<endl;
          }
          else
          {
            cout<<"找到改商品,其信息為:"<<endl;
            output(s+search(s,5,x),1);
          }
          break;
        }
        case 4:
          cout<<"銷售總額為:"<<total(s, 5)<<endl;
          break;
        case 5:
          output(s, 5);
          break;
        case 6:
          exit(0);
          break;
      }
    }
    showMenu();
  }
  return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • do...while(0)的妙用詳細解析

    do...while(0)的妙用詳細解析

    do...while(0)消除goto語句;通常,如果在一個函數(shù)中開始要分配一些資源,然后在中途執(zhí)行過程中如果遇到錯誤則退出函數(shù),當然,退出前先釋放資源
    2013-09-09
  • C++實現(xiàn)RSA加密解密算法是示例代碼

    C++實現(xiàn)RSA加密解密算法是示例代碼

    非對稱加密方式可以使通信雙方無需事先交換密鑰就可以建立安全通信,因此被廣泛應用于身份認證、數(shù)字簽名、等信息交換領域。其中最具有代表性的非對稱加密方式就是RSA公鑰密碼體制。本文將用C++實現(xiàn)RSA加密解密算法,需要的可以參考一下
    2022-09-09
  • C++讀寫.mat文件的方法

    C++讀寫.mat文件的方法

    本文介紹了“C++讀寫.mat文件的方法”,需要的朋友可以參考一下
    2013-03-03
  • C/C++的關鍵字之static你了解嗎

    C/C++的關鍵字之static你了解嗎

    這篇文章主要為大家詳細介紹了C/C++的關鍵字之static,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++調(diào)用迅雷接口解析XML下載功能(迅雷下載功能)

    C++調(diào)用迅雷接口解析XML下載功能(迅雷下載功能)

    這篇文章主要介紹了C++調(diào)用迅雷接口,封裝解析XML下載的類,功能簡單,大家參考使用吧
    2013-11-11
  • C++標準C函數(shù)在各平臺編譯結果都相同

    C++標準C函數(shù)在各平臺編譯結果都相同

    今天小編就為大家分享一篇關于C++標準C函數(shù)在各平臺編譯結果都相同,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 字符串拷貝函數(shù)memcpy和strncpy以及snprintf 的性能比較

    字符串拷貝函數(shù)memcpy和strncpy以及snprintf 的性能比較

    以下是對字符串拷貝函數(shù)memcpy和strncpy以及snprintf它們之間的性能進行了比較,需要的朋友可以過來參考下
    2013-07-07
  • 基于Matlab實現(xiàn)水波倒影特效的制作

    基于Matlab實現(xiàn)水波倒影特效的制作

    這篇文章主要介紹了如何利用Matlab制作出水波倒影的特效,文中的示例代碼講解詳細,對我們學習Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • 深入解析C++中多態(tài)性和虛函數(shù)使用原理

    深入解析C++中多態(tài)性和虛函數(shù)使用原理

    這篇文章主要為大家介紹了深入解析C++中多態(tài)性和虛函數(shù)使用原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • C語言實現(xiàn)猜數(shù)字大小的游戲

    C語言實現(xiàn)猜數(shù)字大小的游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)猜數(shù)字大小的游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01

最新評論