c语言销售管理系统_第1页
c语言销售管理系统_第2页
c语言销售管理系统_第3页
c语言销售管理系统_第4页
c语言销售管理系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C吾言销售管理系统一课设满分作品带报表和折 线图显示#include #include #include #include #include #include #include #define NULL 0CONSOLE_SCREEN_BUFFER_INFO csbiInfo;extern WINBASEAPIHWNDWINAPI GetConsoleWindow();void input(); / 实现手动输入销售信息void menu(); / 程序菜单主界面显示void daoru(); / 函数声明void seek(); / 销售信息查询void save(); / 销售信息保存vo

2、id del(); / 销售信息删除void def(); / 销售信息初始化void history(people); / 实现销售历史查询void clear(); / 实现清屏void filepath(); / 判断是否为默认文件位置,及询问是否要求修改文件位置void baobiao(); / 打印报表void txt(zx); / 折线图void sxt(g1, g2, g3, g4, g5);/ 扇形图int ghj = 1;int file_choose = 0; / 文件导入初始状态 / 全局变量char filename30 = sell.txt ;/ 默认文件位置int

3、price5 = 2, 2, 2, 2, 2 ;/ 默认商品价格struct goodint num;/ 产品编号int f_name10; / 产品名称float price; / 产品价格商品属性int date; / 销售日期int sum;/ 销售数量 good5;/ 定义商品属性结构体,及五个商品struct sellerint num;/ 销售员编号char name8; / 销售员姓名char sex; / 销售员性别struct good good5; / 五种商品 sell4; / 定义销售员结构体,及四个销售员struct daystruct seller sell4; d

4、31;struct yearstruct day d31; m12;int main( int argc, char* argv )int x = 0;x = MessageBox( NULL, 欢迎使用销售管理系统 n 作者 :xxn 班级 :xxxx , 欢迎 , MB_YESN);O if (x = 6) menu();return 0; /* 函 数 名: daoru()* 描 述:从文件导入数据* 入口参数:无 ;* 出口参数:无 ; */ void daoru()FILE *fp;int i, day, month;if (fp = fopen(filename,r ) = NUL

5、L)printf( 文件不存在 ! );return ;for (month = 0; month12; month+)for (day = 0; day31; day+)/ 把文件读取到内存中for (i = 0; i4; i+)fscanf(fp, %6d%6d%6d%6d%6d,n&mmonth.dday.selli.good0.sum, &mmonth.dday.selli.good1.sum, &mmonth.dday.selli.good2.sum, &mmonth.dday.selli.good3.sum, &mmonth.dday.selli.good4.sum);fclose

6、(fp); /* 函 数 名: inpit()* 描 述:数据的手动输入* 入口参数:无 ;* 出口参数:无 ; */ void input()int i = 0, day = 0, x = 0, month = 0;filepath();daoru(); / 文件导入及判断printf( 请输入要查找的日期如 1 1即一月一日: );scanf( %d%d, &month, &day); month-;day-; / 保持实际时间与数组一致 printf( 请输入销售人员编号 :n1 :xx 2 :xx 3:xx 4:xx:); scanf( %d, &i);i-;printf( 请输入具体

7、要录入的商品种类 15对应商品1-5 : );/ 用于查找所需的具体数据scanf( %d, &x);x-;printf( 输入销售数量: );scanf( %d, &mmonth.dday.selli.goodx.sum);printf( 完成! ); save(); /* 函 数 名: seek()* 描述:查找* 入口参数:无 ;* 出口参数:无 ; */ void seek()char ch;int i = 0, j = 0, choose = 0, day = 0, t = 0, all = 0, month;filepath();daoru();printf( 请输入要查找的日期如

8、 1 1即一月一日: );scanf( %d%d, &month, &day);month-;day-; / 保持实际时间与数组一致printf( 请输入销售人员编号 :n1 :xx 2:xx 3:xx 4 : xx: ); scanf( %d, &i);i-;printf( 请选择1,当天具体商品销售情况2 ,当天该销售员销售情况 : );scanf( %d, &choose);switch (choose)case 1:printf( 请输入具体要查找的商品种类15对应 商品 1-5n );scanf( %d, &t);t-;printf( 该销售员这天销售本商品的数量为: %d, mmo

9、nth.dday.selli.goodt. sum);break ;case 2: printf( 产品代号 n );printf( 1.牛奶2.西瓜 3.苹果4.白菜5.萝卜销售之和n);for (j = 0; j5; j+)all += mmonth.dday.selli.goodj.sum;printf( %-8d%-8d%-8d%-8d%-8d%-10dn, mmonth.dday.selli.good0.sum, mmonth.dday.selli.good1.sum, mmonth.dday.selli.good2.sum, mmonth.dday.selli.good3.sum,

10、 mmonth.dday.selli.good4.sum, all);default : break ;/* 函 数 名: baobiao()* 描述:打印报表* 入口参数:无 ;* 出口参数:无 ; */ void baobiao()char choose = y ;int i, j, x = 0, a = 0, b = 0, mo = 0, th = 0, partsum = 0, month = 0, sj = 0;int day = 0, alldat = 0, partallsum5 = 0 ;int mx45 = 0 , mxsum = 0; / 用于存放明细filepath();

11、daoru(); / 读取数据及判断printf( 请选择1销售数量报表 2销售额报表: ); scanf( %d, &i);if (i = 1)for (i = 0; i0)for (month = mo + 1; month = (th - 1); month+)for (day = 0; day31; day+)for (i = 0; i4; i+)for (j = 0; j = 4; j+) mxij = mxij +mmonth.dday.selli.goodj.sum*pricej;/ 累加计算所有他的所有销售情况for (i = 0; i5; i+)for (j = 0, par

12、tsum = 0; j4; j+)partsum += mmonth.dday.sellj.goodi.sum*pricei; / 统计同种商品数目 , 一维数组当天 4个销售员 同种商品数目 partallsumi += partsum;/ 间隔整月前一段for (day = a; day31; day+)for (i = 0; i4; i+)for (j = 0; j = 4; j+) / mxij = mxij + mmo.dday.selli.goodj.sum*pricej;累加计算所有他的所有销售情况for (i = 0; i5; i+)for (j = 0, partsum =

13、0; j4; j+) partsum += mmo.dday.sellj.goodi.sum*pricei;partallsumi += partsum; / 统计同种商品数目 , 一维数组当天 4个销售员 同种商品数目/ 间隔整月后一段for (day = 0; day = b; day+)for (i = 0; i4; i+)for (j = 0; j = 4; j+) mxij = mxij + mth.dday.selli.goodj.sum*pricej;累加计算所有他的所有销售情况for (i = 0; i5; i+)for (j = 0, partsum = 0; j4; j+)

14、partsum += mth.dday.sellj.goodi.sum*pricei;partallsumi += partsum;/ 统计同种商品数目 , 一维数组当天 4个销售员商品数目else if (th - mo) = 0)for (day = a; day = b; day+)for (i = 0; i4; i+)for (j = 0; j = 4; j+) mxij = mxij + mmo.dday.selli.goodj.sum*pricej;累加计算所有他的所有销售情况for (i = 0; i5; i+)for (j = 0, partsum = 0; j4; j+) p

15、artsum += mmo.dday.sellj.goodi.sum*pricei;partallsumi += partsum;/ 统计同种商品数目 , 一维数组当天 4个销售员商品数目/ 输出报表for (i = 0; i4; i+)printf( %-6s , );/ 销售员姓名for (j = 0; j5; j+) /同种/同种printf( t%d , mxij);mxsum += mxij; / 二维数组记录销售员printf( t%dn , mxsum); mxsum = 0;/ 用于下次循环 的初始化/ 输出表格同类商品总计 printf( 同类商品 );f

16、or (i = 0; i5; i+)printf( t%d , partallsumi); / 统计同种商品数目 , 一维数组 alldat += partallsumi; / 合计所有的商品 printf( t 合计 :%d, alldat); / 所有商品合计x = MessageBox( NULL, 是否打印扇形形图 ?, 提示 , MB_YESN);Oif (x = 6)clear();printf(时间段:4月 %c0 -%d 月 cB, mo + 1, a + 1, th + 1,1 + b); printf( 销售扇形图 );sxt(partallsum0, partallsum

17、1, partallsum2, partallsum3, partallsum4); /*函 数 名: cel()* 描述:删除* 入口参数:无 ;* 出口参数:无 ;*/voic cel()int i = 0, cay = 0, x = 0, month;int choose; filepath(); caoru();printf( 请输入要查找日期如 1月1日 输入1 1:); scanf( %c%c, &month, &cay);month-;cay-; / 保持实际时间与数组一致 printf( 请输入销售人员编号 :n1 :xx 2 :xx 3:xx 4:xx:);scanf( %c

18、, &i);i-;printf( 请选择 1 .删除该销售员整天的销售信息2. 具体商品销售信息 : );scanf( %c, &choose);switch (choose)case 1:for (x = 0; x5; x+)mmonth.ccay.selli.goocx.sum = 0;break;case 2:printf( 请输入具体要删除的商品种类 15对应商品 1-5 : );scanf( %d, &x);x-; mmonth.dday.selli.goodx.sum = 0;break ;default :break ;printf( 已删除指定销售员信息 );save(); /

19、* 函 数 名: def()* 描 述:销售数据初始化* 入口参数:无 ;* 出口参数:无 ; */ void def()FILE *fp;int i, day, month;filepath();fp = fopen(filename,w);for (month = 0; month12; month+)for (day = 0; day31; day+)for (i = 0; i4; i+)/ 保存信息到文件fprintf(fp,%-6d%-6d%-6d%-6d%-6dn, mmonth.dday.selli.good0.sum = 0,mmonth.dday.selli.good1.su

20、m = 0, mmonth.dday.selli.good2.sum = 0, mmonth.dday.selli.good3.sum = 0, mmonth.dday.selli.good4.sum = 0);fprintf(fp, n ); / 日期间隔printf( 初始化操作完成! );fclose(fp); /* 函 数 名: filepath()* 描 述:判断及修改文件位置* 入口参数:无 ;* 出口参数:无 ; */ void filepath()char choose;int x;clear();if (file_choose = 0)x = MessageBoXNULL 现

21、在为默认文件n是否使用?,“提示, MB_YESNOif (x = 7)printf( 请输入文件绝对路径 : );fflush( stdin ); gets(filename);file_choose = 1; / 其他位置文件 标志elsex = MessageBox( NULL, 不在提醒? , 提示, MB_YESN);Oif (x = 6) file_choose = 2; / 其他位置文件 标志 printf( 设置成功 n );/* 函 数 名: save()* 描 述:保存数据* 入口参数:无 ;* 出口参数:无 ; */ void save(people)FILE *fp;i

22、nt day, i, month; fp = fopen(filename,w);for (month = 0; month12; month+)for (day = 0; day31; day+)for (i = 0; i4; i+)fprintf(fp, %-6d%-6d%-6d%-6d%-6dn, mmonth.dday.selli.good0.sum, mmonth.dday.selli.good1.sum, mmonth.dday.selli.good2.sum, mmonth.dday.selli.good3.sum, mmonth.dday.selli.good4.sum);fp

23、rintf(fp, n );/ 写入文件 fclose(fp); /* 函 数 名: clear()* 描 述:清屏* 入口参数:无 ;* 出口参数:无 ; */ void clear()int i; HWNDhwnd;HANDLEhOut;HDChdc, hdc1; HPENypn, p_pn, p1_pn, p2_pn, p3_pn, p4_pn, p5_pn;HPENhPen, hOldPen; HBRUSHhBrush, hOldBrush, hbr;COORDpos = 1, 4 ;hwnd = GetConsoleWindow();hdc = GetDC(hwnd);hOut =

24、GetStdHandle( STD_OUTPUT_HAN)D; LE hbr = CreateSolidBrush( RGB(0, 0, 0);SelectObject(hdc, hbr); Rectangle(hdc, 0, 65, 670, 470);SetConsoleCursorPosition(hOut, pos);for (i = 0; i19; i+) printf( n ); SetConsoleCursorPosition(hOut, pos); Rectangle(hdc, 0, 65, 670, 470); ReleaseDC(hwnd, hdc); /* 函 数 名:

25、history()* 描述:历史销售查询* 入口参数: people;* 出口参数:无 ; */ void history(people)int i, j, x = 0, a = 0, b = 0, mo = 0, th = 0, partsum = 0, month = 0;int day = 0, sumall = 0, more = 1;int mx6 = 0 ; / 用于存放明细char choose; filepath(); daoru(); clear();printf( 输入两个月份及日期:例如 7 15 12 6 (前者早上到后者晚上): ); scanf( %d%d%d%,d

26、& mo, &a, &th, &b);a-;b-; / 保持实际时间与数组一致 mo-;th-;printf(销售员:s 时间段:%d月 %日-%d月 %0)/ 间隔整月前一段for (day = a; day= 16)x = MessageBox(NULL, 是否显示更多 ?, 提示, MB_YESN)O; if (x = 6)clear();printf(日期 t1.牛奶t2.西瓜t3.苹果t4.白菜t5.萝卜t销售之和n );more = 0;else goto end;printf( %c月 %c0“,mo + 1, day + 1);for (j = 0; j = 4; j+)sum

27、all += mmo.ccay.sellpeople.goocj.sum;printf( t%c , mmo.ccay.sellpeople.goocj.sum);mxj += mmo.ccay.sellpeople.goocj.sum;printf( t%cn , sumall);more+;mx5 += sumall;sumall = 0;/ 计算间隔整月for (month = mo + 1; month = (th - 1); month+)for (cay = 0; cay= 16)x = MessageBox(NULL, 是否显示更多 ?, 提示, MB_YESN);Oif (x

28、= 6)clear();和 n “);printf(日期 t1.牛奶t2.西瓜t3.苹果t4.白菜t5.萝卜t销售之more = 0;else goto enc;pri ntf( n%d 月 %cB , month + 1, day + 1);for (j = 0; j = 4; j+)sumall += mmonth.dday.sellpeople.goodj.sum;printf( t%d , mmonth.dday.sellpeople.goodj.sum);mxj += mmonth.dday.sellpeople.goodj.sum;printf( t%d , sumall);mor

29、e+;mx5 += sumall;sumall = 0;/ 间隔整月后一段 for (day = 0; day = 16)x = MessageBox( NULL, 是否显示更多 ?, 提示, MB_YESN)O;if (x = 6) clear();printf(日期 t1.牛奶t2.西瓜t3.苹果t4.白菜t5.萝卜t销售之和 n );more = 0;else goto end;pri ntf( n%d 月 日, th + 1, day + 1);for (j = 0; j = 4; j+)sumall += mth.dday.sellpeople.goodj.sum;printf( t

30、%d , mth.dday.sellpeople.goodj.sum);mxj += mth.dday.sellpeople.goodj.sum;printf( t%d , sumall);more+;mx5 += sumall;sumall = 0;/ 一个月内时间段else if (th - mo) = 0)for (day = a; day = 18)x = MessageBox(NULL, 是否显示更多 ?, 提示, MB_YESN)O;if (x = 6)clear();printf(日期 t1.牛奶t2.西瓜t3.苹果t4.白菜t5.萝卜t销售之和 n );more = 0;els

31、e goto end;printf( %c月 %c0“,mo + 1, day + 1);for (j = 0; j = 4; j+)sumall += mmo.dday.sellpeople.goodj.sum;printf( t%d , mmo.dday.sellpeople.goodj.sum);mxj += mmo.dday.sellpeople.goodj.sum;printf( t%dn , sumall);more+;end:mx5 += sumall; sumall = 0;printf(n 合计 :);for (j = 0; j = 4; j+)printf( t%d , m

32、xj);printf( t 总计:dn完成! , mx5);x = MessageBox( NULL, 是否打印条形图 ?, 提示 , MB_YESN);Oif (x = 6)clear();printf(销售员:s 时间段:%d月 %日-%d月 %日n , , mo + 1, a + 1, th + 1, 1 + b);printf( nnnn历史销售统计条形图 );for (j = 0; j = 4; j+)txt(mxj);x = MessageBox(NULL, 是否打印扇形形图 ?, 提示, MB_YESN);Oif (x = 6)clear();pri

33、ntf(销售员:%s 时间段:%d月 %cB-%d月 %日, , mo + 1, a + 1, th + 1, 1 + b);printf( t 销售扇形图 );sxt(mx0, mx1, mx2, mx3, mx4);/* 函 数 名: txt(zx)* 描 述:绘制折线图* 入口参数: zx;* 出口参数:无 ;*/void txt(zx)static int i = 1;float sum;HWNDhwn d ; / 窗口句柄HANDLEhOut;HDChdc, hdc1;HPENypn, p_pn, p1_pn, p2_pn, p3_pn, p4_pn,

34、p5_pn;HPENhPen, hOldPen; / 画笔HBRUSHhBrush, hOldBrush; / 画刷hwnd = GetConsoleWindow();hdc = GetDC(hwnd);hOut = GetStdHandle( STD_OUTPUT_HAN)D; L/E/ 得到标准的输出设备句柄 (显示器等 ) ypn = CreatePen( PS_SOLID, 5, RGB(0, 200, 255);p_pn = CreatePen( PS_DASHDOTD,O1,T RGB(255, 0, 0);p1_pn = CreatePen( PS_SOLID, 15,p2_pn

35、 = CreatePen( PS_SOLID, 15,RGB(255, 0, 0);RGB(0, 255, 0);p3_pn = CreatePen( PS_SOLID, 15,RGB(0, 0, 255);p4_pn = CreatePen( PS_SOLID, 15,RGB(255, 255, 0);p5_pn = CreatePen( PS_SOLID, 15,RGB(255, 0, 255);if (i = 1)hPen = CreatePen( PS_SOLID, 1, RGB(255, 0, 0); / 画笔hOldPen = ( HPEN)SelectObject(hdc, hP

36、en);hBrush = CreateHatchBrush( HS_CROS, SRGB(0, 100, 0);/ 方格刷hOldBrush = ( HBRUS)HSelectObject(hdc, hBrush);RoundRect(hdc, 20, 170, 530, 350, 5, 5);/ 画矩形if (i = 1)SelectObject(hdc, p1_pn);else if (i = 2)SelectObject(hdc, p2_pn);else if (i = 3)SelectObject(hdc, p3_pn);else if (i = 4)SelectObject(hdc,

37、 p4_pn); else SelectObject(hdc, p5_pn);MoveToEx(hdc, i * 100, 344, NULL);LineTo(hdc, i * 100, 350 - zx * 30);SelectObject(hdc, p_pn);LineTo(hdc, 20, 350 - zx * 30);/ 设颜色/ 输出文本/ 输出文本/ 输出文本 / 输出文本/ 输出文本i+;SetTextColor(hdc, TextOut (hdc, 1, 320,TextOut (hdc, 2, 290, TextOut (hdc, 2, 260, TextOut (hdc,

38、2, 230, TextOut (hdc, 2, 200,RGB(255, 0, 0);TEXT( 1 ), 1);TEXT( 2 ), 1);TEXT( 3 ), 1);TEXT( 4 ), 1);TEXT( 5 ), 1);TextOut (hdc, 85, 360,TextOut (hdc, 185, 360,TextOut (hdc, 285, 360,TextOut (hdc, 385, 360,TextOut (hdc, 485, 360,TEXT( 牛奶), 4); / 输出文本TEXT( 西瓜 ), 4); / 输出文本TEXT( 苹果 ), 4); / 输出文本TEXT( 白

39、菜 ), 4); / 输出文本TEXT( 萝卜 ), 4); / 输出文本SelectObject(hdc, ypn);MoveToEx(hdc, 20, 170, NULL);LineTo(hdc, 20, 350);LineTo(hdc, 530, 350); ReleaseDC(hwnd, hdc);ReleaseDC(hwnd, hdc1); /* 函 数 名: sxt(zx)* 描 述:绘制扇形图* 入口参数: g1,g2,g3,g4,g5;/ 五种商品数量* 出口参数:无 ;*/void sxt(g1, g2, g3, g4, g5)int sellsum = 0; / 定义弧度统

40、计总数量int time = 0, x = 0, y = 0, radian = 0;/int ex, ey, radius; / 定义圆心半径int i, a, b, c, d, cx = 3;int smx1 = 450, smx2 = 500, smx3 = 510, smy = 175;/ 图解说明位置COORDpos = 0, 5 ;HWNDhwnd; HANDLEhOut;HDChdc;HPENgpn, rpn, bpn, blue, yellow;hwnd = GetConsoleWindow();hdc = GetDC(hwnd);hOut = GetStdHandle( ST

41、D_OUTPUT_HAN)D; L/E/ 得到标准的输出设备句柄 (显示器等 )RGB(255, 0, 0);RGB(0, 0, 255);RGB(255, 255, 255);RGB(0, 255, 0);rpn = CreatePen( PS_SOLID, cx,blue = CreatePen( PS_SOLID, cx, bpn = CreatePen( PS_SOLID, cx, gpn = CreatePen( PS_SOLID, cx,yellow = CreatePen( PS_SOLID, cx, RGB(255, 255, 0);sellsum = g1 + g2 + g3

42、 + g4 + g5;a= g1 * 360 / sellsum;b= (g1 + g2) * 360 / sellsum;c = (g1 + g2 + g3) * 360 / sellsum;d= (g1 + g2 + g3 + g4) * 360 / sellsum; radius = 140; / 半径ex = 240;ey = 240;time = 1;SelectObject(hdc, gpn); while (radian = a)y = radius*sin(radian / 180.0*3.14); x = radius*cos(radian / 180.0*3.14); Mo

43、veToEx(hdc, ex, ey, NULL);LineTo(hdc, ex + x, ey + y); radian+;Sleep(time);SelectObject(hdc, blue);while (radian = b)y = radius*sin(radian / 180.0*3.14);x = radius*cos(radian / 180.0*3.14);MoveToEx(hdc, ex, ey + 1,NULL);LineTo(hdc, ex + x, ey + y); radian+;Sleep(time);SelectObject(hdc, rpn); while (radian = c) y = radius*sin(radian / 180.0*3.14); x = radius*cos(radian / 180.0*3.14); MoveToEx(hdc, ex, ey, NULL); LineTo(hdc, ex + x,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论