首頁 > 軟體

C語言實現銷售管理系統課程設計

2022-03-18 13:01:14

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

一.C程式設計課程設計題目簡介

該設計要求學生以某公司銷售管理業務為背景,設計、開發一套“銷售管理系統”軟體。

通過該題目的設計過程,可以培養學生結構化程式設計的思想,加深對高階語言基本語言要素和控制結構的理解,針對c語言中的重點和難點內容進行訓練,獨立完成有一定工作量的程式設計任務,同時強調好的程式設計風格。得到軟體工程的綜合訓練,提高解決實際問題的能力。

二.C程式設計課程設計的任務

1、查閱文獻資料,一般在5篇以上;

2、以某公司銷售管理業務為背景,通過調研、分析現有的管理模式和已有的管理軟體,建立系統模型;

3、完成軟體結構設計和演演算法設計;

4、完成系統的軟體開發和測試工作;

5、撰寫設計說明書;

6、做好答辯工作。

三.C程式設計課程設計的主要內容、功能及技術指標

1、問題分析及解決方案框架確定:充分地分析和理解問題本身,弄清要求做什麼。在確定解決方案框架過程中,綜合考慮系統功能,考慮怎樣使系統結構清晰、合理、簡單和易於偵錯。最後確定每個過程和函數的簡單功能,以及過程(或函數)之間的呼叫關係,並畫出函數之間的呼叫關係圖。

2、詳細設計和編碼:定義相應的儲存結構,確定各個函數的演演算法,並畫出流程圖,在此基礎上進行程式碼設計,每個明確的功能模組程式一般不超過60行,否則要進一步劃分。

3、上機前程式靜態檢查:上機前程式靜態檢查可有效提高偵錯效率,減少上機偵錯程式時的無謂錯誤。靜態檢查主要有兩種途徑:用一組測試資料手工執行程式;通過閱讀或給別人講解自己的程式而深入全面地理解程式邏輯。把程式中的明顯錯誤事先排除。

4、程式偵錯與測試:採用自底向上,分模組進行,即先偵錯低層函數。能夠熟練掌握偵錯工具的各種功能,設計測試資料確定疑點,通過修改程式來證實它或繞過它。偵錯正確後,認真整理源程式及其註釋,形成格式和風格良好的源程式清單和結果。

5、完成課程設計報告

① 需求和規格說明:設計題目和問題描述:題目要解決的問題是什麼;

② 設計思路:主要演演算法思想,程式功能圖,函數之間的呼叫關係圖;

   設計表示:每個函數或過程的功能,列出每個過程或函數所呼叫的過程或函數,並畫出各函數的流程圖;

   詳細設計:主要演演算法的虛擬碼;

③ 偵錯報告:偵錯過程中遇到的主要問題,是如何解決的;對設計和編碼的回顧討論和分析;改進設想;經驗和體會等;

④ 程式實現註釋;

⑤ 附錄:源程式清單和結果。如果題目規定了測試資料,則結果要求包含這些測試資料和執行輸出,當然還可以含其他測試資料和執行輸出。

6、某公司有四個銷售員(編號:1-4),負責銷售五種產品(編號:1-5)。每個銷售員都將當天出售的每種產品各寫一張便條交上來。每張便條包含內容: 銷售員的代號 、產品的代號、這種產品的當天的銷售額 。每位銷售員每天可能上繳0-5張便條。假設,收集到了上個月的所有便條,編寫一個處理系統,讀取上個月的銷售情況,進行如下處理:

系統以選單方式工作,錄入資訊用檔案儲存;計算上個月每個人每種產品的銷售額; 按銷售額對銷售員進行排序,輸出排序結果(銷售員代號);統計每種產品的總銷售額,對這些產品按從高到底的順序,輸出排序結果(需輸出產品的代號和銷售額);輸出統計報表。
下面是原始碼:

#include "stdio.h" /*輸入輸出函數*/ 
#include "stdlib.h"/*通用應用程式函數*/
typedef struct/*定義結構體變數*/ 
{
    int gonghao; /*銷售員代號*/
    int a1; /*產品一代號*/
    int a2; /*產品二代號*/
    int a3; /*產品三代號*/
    int a4; /*產品四代號*/
    int a5; /*產品五代號*/
}DATA;
int menu_select(); /*宣告函數*/ 
int enter(); /*宣告函數*/ 
void salor(int n); /*宣告函數*/ 
int sum(DATA t[100],int n, int e); /*宣告函數*/ 
void list1(int n);/*宣告函數*/ 
void list2();/*宣告函數*/ 
main()/*主函數*/ 
{      int length;
    system("color 3b");
    
    for( ; ; )/*無限迴圈*/ 
    {switch(menu_select()) /*根據使用者的選擇判斷該呼叫哪個功能函數*/ 
    {
    case 1:length=enter();break; 
    case 2:salor(length);break; 
    case 3:list1(length);break;  
    case 4:list2();break; 
    case 0:exit(0);
    }
    } 
} 
int menu_select() /*選單函數*/ 
{  
    int n;
    printf("                                    選單                          nn"); 
    printf("    設計人:吳繼康、付鵬陽       班級:計算機一班n");
    printf("      1 輸入便條上的內容n"); 
    printf("      2 統計上個月每種產品每人銷售的數量n"); 
    printf("      3 按銷售額將銷售員排序n"); 
    printf("      4 銷售報表n");
    printf("      0 退出n"); 
    printf("---------------------------------end---------------------------nn"); 
    printf(" 請輸入(0-4) "); 
    scanf("%d",&n); 
    return n;
} 
 
 
int enter() /*清單輸入*/
{
    int i,num;
    FILE *fp;
    DATA t[100];
    printf("請輸入要寫的便條條數:n"); 
    scanf("%d",&num);
    printf("工號    電腦      電視      冰箱      風扇      手機"); 
    for(i=0;i<num;i++) 
    {
        printf("nn------------------------------------n");
        scanf("%dt  %dt  %dt  %dt  %dt  %d",&t[i].gonghao,&t[i].a1,&t[i].a2,&t[i].a3,&t[i].a4,&t[i].a5);
    }
    if((fp=fopen("wujikang.dat","ab+"))==NULL)
    { 
        printf("不能開啟檔案n");
        exit(1); 
    } 
    for(i=0;i<num;i++) 
    { 
        fprintf(fp,"%dt%dt%dt%dt%dt%dt",t[i].gonghao,t[i].a1,t[i].a2,t[i].a3,t[i].a4,t[i].a5); 
        fprintf(fp,"rn"); 
    } 
    
    fclose(fp); 
    printf("n-----------------------------------nnn"); 
    return i; 
}
void salor(int n) /*每位銷售員銷售額*/
{ 
    int i=0,s; 
    int b1=0,b2=0,b3=0,b4=0,b5=0;
    int k=0;
    DATA t[100];
    FILE *fp;
    if((fp=fopen("wujikang.dat","rb+"))==NULL)
    { 
        printf("不能開啟檔案n");
        exit(1); 
    } 
    rewind(fp);
    while(fscanf(fp,"%dt%dt%dt%dt%dt%d",&(t[k].gonghao),&(t[k].a1),&(t[k].a2), &(t[k].a3),&(t[k].a4),&(t[k].a5))>0) 
    k++;
    fclose(fp);
    printf("請輸入要查詢售貨員的代號(1-4):"); 
    scanf("%d",&s);                    
    for(i=0;i<k;i++)
        if(t[i].gonghao==s) 
        {b1+=t[i].a1; 
        b2+=t[i].a2; 
        b3+=t[i].a3; 
        b4+=t[i].a4; 
        b5+=t[i].a5;}; 
        printf("工號 電腦 電視 冰箱 風扇 手機n"); 
        printf("%dt  %dt   %dt   %dt       %dt   %dt",s,b1,b2,b3,b4,b5); 
 
 
} 
void list1 (int n) /*顯示清單*/
{
    int i,j,s; 
    int m[10],c[10];
    int k=0;
    DATA t[100];
    FILE *fp;
    if((fp=fopen("wujikang.dat","rb+"))==NULL)
    { 
        printf("不能開啟檔案n");
        exit(1); 
    } 
    rewind(fp);
    while(fscanf(fp,"%dt%dt%dt%dt%dt%d",&(t[k].gonghao),&(t[k].a1),&(t[k].a2), &(t[k].a3),&(t[k].a4),&(t[k].a5))>0) /*從fp指向的檔案上讀入便條資訊*/ 
    k++;
    fclose(fp);
    for(i=0;i<4;i++) /*將所輸入的條數存入結構體陣列中*/ 
        m[i]=i+1; 
    for(i=0;i<4;i++) 
        c[i]=sum(t,k,m[i]); 
    for(i=0;i<4;i++)
        for(j=i+1;j<4;j++) 
            if(c[i]<c[j]) 
            {
                s=m[i]; 
                m[i]=m[j]; 
                m[j]=s; 
                s=c[i]; 
                c[i]=c[j]; 
                c[j]=s;
            } 
            printf("按銷售額從高到低將銷售員代號排序n"); 
            for(i=0;i<4;i++)
                printf("%dn",m[i]);
} 
void list2() /*每種產品的銷售額*/
{
    int i=0,j,sum0=0,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0; 
    int c[4],b1[4]={0},b2[4]={0},b3[4]={0},b4[4]={0},b5[4]={0};
    int k=0;
    DATA t[100];
    FILE *fp;
    if((fp=fopen("wujikang.dat","rb+"))==NULL)
    { 
        printf("不能開啟檔案n");
        exit(1); 
    } 
    
    rewind(fp);//qingchucuowu,zhiyutoubu
    while(fscanf(fp,"%dt%dt%dt%dt%dt%d",&(t[k].gonghao),&(t[k].a1),&(t[k].a2), &(t[k].a3),&(t[k].a4),&(t[k].a5))>0) 
    k++;
    for(i=0;i<4;i++) 
        c[i]=sum(t,k,i+1);/*求每個人的總銷售額*/ 
    for(i=0;i<4;i++) 
        sum0+=c[i]; /*所有產品的銷售額*/ 
    for(i=0;i<k;i++) /*求每個人每種產品的總銷售額*/ 
        for(j=0;j<4;j++) 
        { 
            if(j+1==t[i].gonghao) 
            {b1[j]+=t[i].a1; 
            b2[j]+=t[i].a2; 
            b3[j]+=t[i].a3; 
            b4[j]+=t[i].a4; 
            b5[j]+=t[i].a5; 
            }
        } 
        for(i=0;i<4;i++)/*每種產品的總銷售額*/ 
        {sum1+=b1[i]; 
        sum2+=b2[i]; 
        sum3+=b3[i]; 
        sum4+=b4[i]; 
        sum5+=b5[i]; 
        } 
        printf("-------------------------銷售報表----------------------nnn"); 
        printf(" products numn"); 
        printf(" 銷售員t1t2t3t4t5t總和nn"); 
        for(i=0;i<4;i++) 
            printf(" %dt%dt%dt%dt%dt%dt%dtn",i+1,b1[i],b2[i],b3[i],b4[i],b5[i],c[i]); 
        printf("psum  %dt%dt%dt%dt%dt%dt",sum1,sum2,sum3,sum4,sum5,sum0); 
} 
 int sum(DATA t[100],int n, int e) 
{
    
    int i=0,sum=0; 
    for(i=0;i<=n;i++)
        if(e==t[i].gonghao) 
        {sum+=t[i].a1; 
        sum+=t[i].a2; 
        sum+=t[i].a3; 
        sum+=t[i].a4; 
        sum+=t[i].a5; 
        } 
        return sum;
}  

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


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