首頁 > 軟體

C語言實現電器銷售管理系統

2022-06-16 10:03:04

本文範例為大家分享了C語言實現電器銷售管理系統的具體程式碼,供大家參考,具體內容如下

系統功能設計

管理資訊系統具有多種功能,各種功能之間又有多種聯絡,構成了一個有機結合的整體。資訊處理功能主要涉及資料的採集、輸入、加工處理、傳輸、儲存和輸出等功能。根據對電器銷售管理系統的分析,系統的主要功能包括:電器銷售資訊的新增、刪除、修改、查詢、排序以及資訊的儲存及讀取。

使用者登入

使用者登入系統必須具有存取許可權,本系統的登入模組主要通過呼叫函數“login()”實現,使用者最多可以輸入3次密碼。其主要程式碼為:

for(count=1;count<=3;count++)   //給使用者三次機會
    {
        printf("n");    
        printf("********請輸入使用者名稱:");
        gets(username);
        printf("********請輸入密碼:");
        gets(userpwd);
        //如果使用者名稱和密碼正確,則登入成功,返回1
        if(strcmp(name,username)==0&&strcmp(pwd,userpwd)==0) 
            return 1; 
        else//如果輸入錯誤則顯示錯誤提示資訊
            if (count<3)  //如果不是第3次,則輸出此錯誤資訊,
            printf("******使用者名稱或密碼輸入錯誤,請重新輸入!!!*******n");
    } 

增加分店資訊

通過呼叫函數“adddianqixs()”實現電器銷售資訊的新增功能,部分程式碼如下:

void adddianqixs()
{
    char temp[30];
    printf("請輸入分店:n");
    gets_s(dianqixs[NOWNUM].store,29);
    printf("請輸入產品名稱:n");
    gets_s(dianqixs[NOWNUM].cpmc,29);
    printf("請輸入產品單價:n");
    scanf_s("%d",&dianqixs[NOWNUM].price);
    printf("請輸入1月銷量:n");
    scanf("%d",&dianqixs[NOWNUM].yyxl);
    printf("請輸入2月銷量:n");
    scanf("%d",&dianqixs[NOWNUM].eyxl);
    printf("請輸入3月銷量:n");
    scanf("%d",&dianqixs[NOWNUM].syxl);
    printf("請輸入季度總銷量:n");
    scanf("%d",&dianqixs[NOWNUM].jdzx);
    printf("請輸入季度平均銷量:n");
    scanf("%d",&dianqixs[NOWNUM].jdpx);
    printf("請輸入季度總銷售額:n");
    scanf("%d",&dianqixs[NOWNUM].jdze);
    NOWNUM++;    //店家數量加一
    printf("銷售資訊新增完畢,請按任意鍵繼續n");
    getchar();
}

修改分店資訊

通過呼叫函數“resive()”實現電器銷售資訊的修改功能。部分程式碼如下:

void resive()
{
    char shop[20];
    int i;
 
    printf(" 請輸入你要修改的分店 nn");
    scanf("%s",shop);
    for(i = 0 ;i < NOWNUM; i++)
    {
        if(strcmp(shop,dianqixs[i].store) == 0)
            break;
    }
    if(i<NOWNUM)
    {
        printf("成功找到這家店!nn");
        printf("請輸入要修改的資訊:nn");
        printf("1.店名nn");
        printf("2.商品名稱nn");
        printf("3.商品單價nn");
        printf("4.一月銷量nn");
        printf("5.二月銷量nn");
        printf("6.三月銷量nn");
        printf("7.季度總銷量nn");
        printf("8.季度平均銷量nn");
        printf("9.季度總銷售額nn");
        
        int order;
 
        scanf("%d",&order);
 
        switch(order)
        {
        case 1:
            scanf("%s",dianqixs[i].store);
            break;
        case 2:
            scanf("%s",dianqixs[i].cpmc);
            break;
        case 3:
            scanf("%d",&dianqixs[i].price);
            break;
        case 4:
            scanf("%d",&dianqixs[i].yyxl);
            break;
        case 5:
            scanf("%d",&dianqixs[i].eyxl);
            break;
        case 6:
            scanf("%d",&dianqixs[i].syxl);
            break;
        case 7:
            scanf("%d",&dianqixs[i].jdzx);
            break;
        case 8:
            scanf("%d",&dianqixs[i].jdpx);
            break;
        case 9:
            scanf("%d",&dianqixs[i].jdze);
            break;
        }
        printf("修改成功nn");
    }
}

刪除分店資訊

通過呼叫函數“deldianqixs()”實現電器銷售資訊的刪除功能。部分程式碼如下:

void deldianqixs()   //刪除指定記錄
{ 
    char delno[40];  //存放要刪除分店銷售電器
    char ok[55];  //確定是否要真的刪除
    int i,j;
    printf("請輸入要刪除分店銷售電器:");
    gets(delno);//根據店名查詢記錄位置
    for(i=0;i < NOWNUM;i++)
        if (strcmp(delno,dianqixs[i].store)==0)
            break;
     if (i < NOWNUM)  //找到了該記錄
    { 
      //找到後先輸出原資訊,然後確認是否刪除
      printall();  //先顯示原資訊
      printf("nn%-9s%-15s%-15d%-18d%-15d%-15d%-15d%-18d%-18dn",dianqixs[i].store,dianqixs[i].cpmc,dianqixs[i].price,dianqixs[i].yyxl,
      dianqixs[i].eyxl,dianqixs[i].syxl,dianqixs[i].jdzx,dianqixs[i].jdpx,dianqixs[i].jdze);
      printf("確實要刪除這條記錄嗎?(y/n)n");
      gets(ok);
      if(ok[0]=='y'||ok[0]=='Y') //確定要刪除
          {
              NOWNUM--;  //學生數減1
              for(j=i;j<NOWNUM;j++) //將後面的記錄前移
              dianqixs[j]=dianqixs[j+1];
              printf("n刪除成功!n");
           }
   }
    else
        printf("n沒有該店名n");
        printf("請按任意鍵繼續n");
        getchar();
}

按照季度總銷量進行排序

通過呼叫函數“sort()”實現按照季度總銷量對電器銷售情況進行排序。部分程式碼如下:

void sort()
{
    printf("開始排序nn");
 
    int i,j;
 
    struct dqxs t;
 
    for(i=0;i<NOWNUM-1;i++)
    {
        for(j=i+1;j<NOWNUM;j++)
        {
            if(dianqixs[i].jdzx<dianqixs[j].jdzx)
            {
                t=dianqixs[i];
                dianqixs[i]=dianqixs[j];
                dianqixs[j]=t;
            }
        }
    }
    printf("排序成功!nn");
}

重新整理分店銷售資訊

通過呼叫函數“read_data()”實現重新整理分店的銷售資訊。部分程式碼如下:

void read_data()
{
    FILE *fp;
    int i,sign;
    fp = fopen("data.data","rb");
 
    rewind(fp);
 
    if(fp == NULL)
    {
        printf("nntt開啟檔案失敗!n");
        exit(0);
    }
 
    for(i=0;i<N;i++)
    {
        sign = fread(&dianqixs[i],sizeof(struct dqxs),1,fp);
        if(sign <= 0)
            break;
    }
    printf("nntt讀取到%d個分店資訊!nn",i);
    Sleep(1000);
    system("cls");
    NOWNUM = i;
 
    fclose(fp);
 
    printf("nntt讀取成功!nn");
    Sleep(1000);
    system("cls");
}

將分店銷售資訊儲存到檔案

通過呼叫函數“save_data()”實現將分店資訊儲存到檔案。部分程式碼如下:

void save_data()
{
    FILE *fp;
 
    fp = fopen("data.data","wb");
 
    if(fp == NULL)
    {
        printf("開啟檔案失敗!n");
        exit(0);
    }
 
    fwrite(dianqixs,sizeof(struct dqxs),NOWNUM,fp);
 
    fclose(fp);
 
    printf("儲存成功!n");
}

總程式碼如下:

​#include <stdio.h>     
#include <string.h>    
#include <stdlib.h>    
#include <windows.h>   
#pragma pack(1)        
#define N 100          
struct dqxs
{
    char store[20];     //分店
    char  cpmc[30];    //產品名稱
    int price;    //產品單價
    int yyxl;     //1月銷量
    int eyxl;     //2月銷量
    int syxl;     //3月銷量
    int jdzx;     //季度總銷量
    int jdpx;     //季度平均銷量
    int jdze;     //季度總銷量額
}dianqixs[N];
 
 
int NOWNUM = 0;   
 
void printall()
{
   int i;  
   printf("%-9s%-15s%-15s%-18s%-15s%-15s%-15s%-18s%-18sn","店名","產品名","單價","一月銷量","二月銷量","三月銷量","季度總銷量","季度平均銷量","季度總銷售額");
   for (i=0;i<NOWNUM;i++)
       printf("%-9s%-15s%-15d%-18d%-15d%-15d%-15d%-18d%-18dn",dianqixs[i].store,dianqixs[i].cpmc,dianqixs[i].price,dianqixs[i].yyxl,
       dianqixs[i].eyxl,dianqixs[i].syxl,dianqixs[i].jdzx,dianqixs[i].jdpx,dianqixs[i].jdze);
}
//輸出所有店家的資訊
 
void adddianqixs()
{
    char temp[30];
    printf("請輸入分店:n");
    gets_s(dianqixs[NOWNUM].store,29);
    printf("請輸入產品名稱:n");
    gets_s(dianqixs[NOWNUM].cpmc,29);
    printf("請輸入產品單價:n");
    scanf_s("%d",&dianqixs[NOWNUM].price);
    printf("請輸入1月銷量:n");
    scanf("%d",&dianqixs[NOWNUM].yyxl);
    printf("請輸入2月銷量:n");
    scanf("%d",&dianqixs[NOWNUM].eyxl);
    printf("請輸入3月銷量:n");
    scanf("%d",&dianqixs[NOWNUM].syxl);
    printf("請輸入季度總銷量:n");
    scanf("%d",&dianqixs[NOWNUM].jdzx);
    printf("請輸入季度平均銷量:n");
    scanf("%d",&dianqixs[NOWNUM].jdpx); 
    printf("請輸入季度總銷售額:n");
    scanf("%d",&dianqixs[NOWNUM].jdze);
 
    NOWNUM++;    //店家數量加一
 
    printf("銷售資訊新增完畢,請按任意鍵繼續n");
    getchar();
}
 
void deldianqixs()   //刪除指定記錄
{ 
    char delno[40];  //存放要刪除分店銷售電器
    char ok[55];  //確定是否要真的刪除
    int i,j;
    printf("請輸入要刪除分店銷售電器:");
    gets(delno);//根據店名查詢記錄位置
    for(i=0;i < NOWNUM;i++)
        if (strcmp(delno,dianqixs[i].store)==0)
            break;
     if (i < NOWNUM)  //找到了該記錄
    { 
      //找到後先輸出原資訊,然後確認是否刪除
      printall();  //先顯示原資訊
      printf("nn%-9s%-15s%-15d%-18d%-15d%-15d%-15d%-18d%-18dn",dianqixs[i].store,dianqixs[i].cpmc,dianqixs[i].price,dianqixs[i].yyxl,
      dianqixs[i].eyxl,dianqixs[i].syxl,dianqixs[i].jdzx,dianqixs[i].jdpx,dianqixs[i].jdze);
      printf("確實要刪除這條記錄嗎?(y/n)n");
      gets(ok);
      if(ok[0]=='y'||ok[0]=='Y') //確定要刪除
          {
              NOWNUM--;  //減1··
              for(j=i;j<NOWNUM;j++) //將後面的記錄前移
              dianqixs[j]=dianqixs[j+1];
              printf("n刪除成功!n");
           }
   }
    else
        printf("n沒有該店名n");
        printf("請按任意鍵繼續n");
        getchar();
}
 
void resive()
{
    char shop[20];
    int i;
 
    printf(" 請輸入你要修改的分店 nn");
    scanf("%s",shop);
    for(i = 0 ;i < NOWNUM; i++)
    {
        if(strcmp(shop,dianqixs[i].store) == 0)
            break;
    }
    if(i<NOWNUM)
    {
        printf("成功找到這家店!nn");
        printf("請輸入要修改的資訊:nn");
        printf("1.店名nn");
        printf("2.商品名稱nn");
        printf("3.商品單價nn");
        printf("4.一月銷量nn");
        printf("5.二月銷量nn");
        printf("6.三月銷量nn");
        printf("7.季度總銷量nn");
        printf("8.季度平均銷量nn");
        printf("9.季度總銷售額nn");
        
        int order;
 
        scanf("%d",&order);
 
        switch(order)
        {
        case 1:
            scanf("%s",dianqixs[i].store);
            break;
        case 2:
            scanf("%s",dianqixs[i].cpmc);
            break;
        case 3:
            scanf("%d",&dianqixs[i].price);
            break;
        case 4:
            scanf("%d",&dianqixs[i].yyxl);
            break;
        case 5:
            scanf("%d",&dianqixs[i].eyxl);
            break;
        case 6:
            scanf("%d",&dianqixs[i].syxl);
            break;
        case 7:
            scanf("%d",&dianqixs[i].jdzx);
            break;
        case 8:
            scanf("%d",&dianqixs[i].jdpx);
            break;
        case 9:
            scanf("%d",&dianqixs[i].jdze);
            break;
        }
        printf("修改成功nn");
    }
}
 
int login()
{
     char name[]="a",pwd[]="a";//正確的使用者名稱和密碼
     char username[10],userpwd[10]; //輸入的使用者名稱和密碼
     int count; //輸入使用者名稱和密碼的次數
     for(count=1;count<=3;count++) //給予三次機會
 {
     printf("n");
     printf("********請輸入使用者名稱:");
     gets(username);
     printf("********請輸入密碼:");
     gets(userpwd);
//如果使用者名稱和密碼正確,則登入成功,返回 1
     if(strcmp(name,username)==0&&strcmp(pwd,userpwd)==0)
     return 1;
     else//如果輸入錯誤則顯示錯誤提示資訊
     if (count<3) //如果不是第 3 次,則輸出此錯誤資訊,
     printf("******分店名或密碼輸入錯誤,請重新輸入!!!*******n");
}
     printf("*******分店名和密碼錯誤已經超過 3 次,系統自動退出!!!******n");
     return 0; //退出迴圈時則說明已經超過 3 次,登入失敗
}
 
/***********************************
* 輸出主控選單選項 *
************************************/
 
 
void check_shop()
{
    char shop[20];
    int i;
 
    printf(" 請輸入你要查詢的分店 nn");
    scanf("%s",shop);
    for(i = 0 ;i < NOWNUM; i++)
    {
        if(strcmp(shop,dianqixs[i].store) == 0)
            break;
    }
 
    if(i < NOWNUM)
    {   getchar();
        printf("找到 %snn",dianqixs[i].store);
        printf("一月銷售額:%d nn",dianqixs[i].yyxl);
        printf("二月銷售額:%d nn",dianqixs[i].eyxl);
        printf("三月銷售額:%d nn",dianqixs[i].syxl);
    }
    else
    {
        printf("找不到這家分店!nn");
    }
}
 
void sort()
{
    printf("開始排序nn");
 
    int i,j;
 
    struct dqxs t;
 
    for(i=0;i<NOWNUM-1;i++)
    {
        for(j=i+1;j<NOWNUM;j++)
        {
            if(dianqixs[i].jdzx<dianqixs[j].jdzx)
            {
                t=dianqixs[i];
                dianqixs[i]=dianqixs[j];
                dianqixs[j]=t;
            }
        }
    }
    printf("排序成功!nn");
}
 
void save_data()
{
    FILE *fp;
 
    fp = fopen("data.data","wb");
 
    if(fp == NULL)
    {
        printf("開啟檔案失敗!n");
        exit(0);
    }
 
    fwrite(dianqixs,sizeof(struct dqxs),NOWNUM,fp);
 
    fclose(fp);
 
    printf("儲存成功!n");
}
 
void read_data()
{
    FILE *fp;//宣告,宣告fp是指標,用來指向FILE型別的物件。
    int i,sign;
    fp = fopen("data.data","rb");
 
    rewind(fp);
 
    if(fp == NULL)
    {
        printf("nntt開啟檔案失敗!n");
        exit(0);
    }
 
    for(i=0;i<N;i++)
    {
        sign = fread(&dianqixs[i],sizeof(struct dqxs),1,fp);
        if(sign <= 0)
            break;
    }
    printf("nntt讀取到%d個分店資訊!nn",i);
    Sleep(1000);
    system("cls");//執行命令」清屏「
    NOWNUM = i;
 
    fclose(fp);//關閉fp指向的檔案控制程式碼,防止控制程式碼洩露
 
    printf("nntt讀取成功!nn");
    Sleep(1000);
    system("cls");
}
 
void menushow()
{
    int userselection;
    char selectstr[10];
    printf("n");
    printf("t*****************************n");
    printf("t*          歡迎使用         *n");
    printf("t*      電器銷售系統         *n");
    printf("t*****************************n");
    printf("n");
    printf("t*     1:增加分店銷售資訊    *n");
    printf("t*     2:修改分店銷售資訊    *n");
    printf("t*     3:顯示分店銷售資訊    *n");
    printf("t*     4:查詢分店銷售資訊    *n");
    printf("t*     5:刪除分店銷售資訊    *n");
    printf("t*     6:按季度總銷量排序    *n");
    printf("t*     7:重新整理分店銷售資訊    *n");
    printf("t* 8:將分店銷售資訊儲存到檔案*n");
    printf("t*        9:退出系統         *n");
    printf("t*****************************nn");
    printf("請輸入您的選擇(1-9):");
    /*scanf("%d",&userselection);*/
    gets(selectstr);
    userselection=(int)atoi(selectstr);
 
    switch(userselection)
 {
     case 1:
         adddianqixs();
         printf("請輸入任意鍵退出...n");
         getchar();
         break;
     case 2: 
         resive();
         printf("請輸入任意鍵退出...n");
         getchar();
         
         break;
     case 3: 
         printall();
         printf("請輸入任意鍵退出...n");
         getchar();
         break;
     case 4: 
         check_shop();
         printf("請輸入任意鍵退出...n");
         getchar();
         break;
     case 5: 
         deldianqixs();
         printf("請輸入任意鍵退出...n");
         getchar();
         break;
     case 6: 
         sort();
         getchar();
         printf("請輸入任意鍵退出...n");
         break;
     case 7: 
         read_data();
         printf("請輸入任意鍵退出...n");
         getchar();
         break;
     case 8: 
         save_data();
         printf("請輸入任意鍵退出...n");
         getchar();
         break;
     case 9: 
         exit(0);
         break;
     default:
         printf("%c,請輸入 1-9 之間的數位n",userselection);
         printf("請輸入任意鍵退出...n");
         getchar();
 }
}
/***********************************
* 主函數,應用程式的入口 *
************************************/
 
 
void main()
{
    printf("nntt正在讀檔案...nn");
    Sleep(1000);
    system("cls");
    read_data();
    int i;
    if (login()==1) //如果登入成功
    while(1)
    {
        system("cls");
        menushow(); //死迴圈,使系統始終顯示主控選單選項
    }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com