C语言销售管理系统(共15页).doc
精选优质文档-倾情为你奉上(一)、设计内容与设计要求1.设计内容:设计课题四:销售管理系统一、问题描述:通过本系统实现对N个销售员信息的录入、显示、添加、删除,以及对产品销售额的排序等操作的管理。二、功能描述:1、 本系统采用一个包含n个数据的结构体数组,每个数据的结构应当包括:姓名、身份、产品1销售额、产品2销售额、总产品销售额。2、 本系统显示这样的菜单: 销售管理系统1、销售员信息输入 2、销售员信息输出 3、删除销售员 4、添加销售员 5、销售额排序 6、统计产品销售额 7、保存销售额信息 0、退出系统3、 执行一个具体的功能之后,程序将重新显示菜单。4、 将系统信息保存在文件中。三、算法提示:1、 数据结构:结构体类型数组2、 数据库结构:下表构成该系统的基本数据库姓名身份产品1销售额产品1销售额总产品销售额charint intintint四、测试数据: 记录数20。2.设计要求:1).设计正确,方案合理。2).界面友好,使用方便。3).程序精炼,结构清晰。4).设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。5).上机演示。(二)、进度安排第一周 课题讲解,查阅资料总,体设计,详细设计周日:8:0012:00 14:0018:00 周一:8:0012:00 周三:14:0018:00 第二周编程,上机调试,修改程序,完善程序,答辩撰写课程设计报告周二:8:0012:00周五:14:0018:00附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码) 目 录 一、需求分析 1 二、概要设计1三、详细设计5四、调试分析以及设计体会6五、使用说明6六、附录7一、 需求分析1、程序的功能。程序要完成的功能有: (1)销售员信息录入 (2)销售员信息显示 (3)销售额信息保存 (4)产品总销售额由大到小排序 (5)统计产品销售额信息 (6)插入销售员及其信息 (7)删除销售员及其信息 (0)退出销售管理系统2、输入输出的要求。输入运用了scanf和gets函数;输出运用了printf函数。二、 概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。程序由主函数void main()、输入void input()、显示void show()、删除void del()、排序void sort()、添加void insert()、统计void statistic()、保存void save()、退出void exit()等九个模块组成。本系统涉及的知识点:分支,循环,函数,数组,结构体,文件等。各个函数模块的实现如下:(1)关于void main():采用switch分支控制语句,通过键盘输入值作为开关值,用以调用主菜单各大函数,从而实现主控职能。C语言的函数调用遵循先定义后引用的原则,在程序的最开始就定义了众多的全局变量,如int i。其调用关系如下:switch(i)case 0: printf("o 退出销售管理系统 on"); exit(0); break;case 1: printf("-销售员信息录入-n"); input(); break;case 2: printf("-销售员信息显示-n"); show(); break;case 3: printf("-销售额信息保存-n"); save();break;case 4: printf("-总销售额信息排序-n"); sort();break;case 5: printf("-统计产品销售额信息-n"); statistics_sailer();break;case 6: printf("-插入销售员及其信息-n"); insert();break;case 7: printf("-删除销售员及其信息-n"); del();break;default:printf("输入错误,请重新选择!"); break; (2) 录入函数void inprint ()的实现:由主菜单按1键进入。利用循环方式,将相关信息存入结构体数组,结构体组根据实际的纪录条数,建立销售员信息。按照要求,分步依次录入信息:销售员个数,销售员姓名,销售员工号,产品一销售额,产品二销售额,实现途径为:void input() int i;printf("请输入销售员个数n");scanf("%d",&n);for(i=0;i<n;i+)printf("输入销售员姓名:n");scanf("%s",selleri.name); printf("输入销售员工号:n"); scanf("%s",selleri.num); printf("请分别输入产品一和产品二的销售额:n");scanf("%d%d",&selleri.sailerl,&selleri.sailerm); system("cls"); (3) 显示函数void show()的实现:该功能是输出销售员中的所有信息:void show () struct seller *p;system("cls");printf("姓名 工号 产品一销售额 产品二销售额:n"); for(p=seller;p<seller+n;p+) printf("%-8s %2s %6d %12dn",p->name,p->num,p->sailerl,p->sailerm); printf("nn");(4)排序函数void sort()的实现:void sort()struct seller temp;int i,j;for(i=0;i<n;i+)selleri.sum=selleri.sailerl+selleri.sailerm;for(j=0;j<n-1;j+)for(i=0;i<n-1-j;i+)if(selleri.sum<selleri+1.sum)temp=selleri;selleri=selleri+1;selleri+1=temp; system("cls");printf("姓名 工号 产品一销售额 产品二销售额 产品总销售额:n");for(i=0;i<n;i+)printf("n%st%st%dt%8dt%8dn",selleri.name,selleri.num,selleri.sailerl,selleri.sailerm,selleri.sum); (5)统计函数void statistics_sailer ()的实现:运用的语句是:void statistics_sailer ()int i,sum1,sum2,sum;sum1=0;sum2=0;sum=0; for(i=0;i<n;i+)sum1+=selleri.sailerl;sum2+=selleri.sailerm;sum=sum1+sum2;system("cls"); printf("产品一的销售额:%dn",sum1); printf("产品二的销售额:%dn",sum2); printf("产品总的销售额:%dn",sum); (6)保存函数void save ()运用以下语句实现:void save ()FILE *fp;int i;fp=fopen("seller.txt","w");for(i=0;i<n;i+) fwrite(&selleri,sizeof(struct seller),1,fp); system("cls");printf("nn");printf("保存成功!n"); printf("nn"); (7)删除函数void del()的实现:输入要删除的销售员的姓名。运用的语句是:void del() char seller_name20;int i,j; printf("输入要删除销售员的姓名:"); fflush(stdin); scanf("%s",seller_name); for(i=0;i<n;i+) if(strcmp(seller_name,selleri.name)=0) for(j=i;j<n;j+) selleri=selleri+1; n=n-1; break; save();system("cls"); 2、此程序的数据库存储的数据为:销售员的姓名、工号(身份)、产品一的销售额、产品二的销售额、产品总的销售额。三、 详细设计1、 采用C语言定义相关的数据类型。struct seller char num10;char name20;int sailerl; int sailerm;int sum;seller200;2、 画出函数的调用关系图。开始 主函数(main) 销售员信息输入(input)删除销售员(del)销售员信息显示(show)添加销售员(insert)统计产品销售额statistic保存销售额信息(save)退出(exit)四、 调试分析以及设计体会1、 问题以及解决问题的方法。 在开始编程时我就遇到了问题,首先是心理问题,心里感到一个系统那么复杂要编出来真是太难了。然后在程序编写过程中我遇到了函数没有定义就运行的问题,一开始我还不知道,但通过向老师和同学询问终于改正了这个问题。后来又遇到运行时出现删除一个销售员的信息,显示时又出现它的问题,通过查询原来是因为删除后没有保存,在删除模块中调入save()后就解决了2、 课程设计过程经验教训、心得体会。开始时我感到要我编一个程序真是太难了,但经过看书、问老师和问同学将问题一个一个解决后我感觉收获很大,这不仅仅是编了一个程序,而是感觉到了战胜困难的一种快感,也增加了我学习C语言的信心。五、 使用说明。用户使用手册: 欢迎使用本人开发的销售管理系统。本系统具有以下功能菜单: (0)退出销售管理系统(1) 销售员信息录入 (2) 销售员信息显示 (3) 销售额信息保存 (4) 产品总销售额由大到小排序 (5) 统计产品销售额信息 (6)插入销售员及其信息 (7)删除销售员及其信息 进入此界面后请选择数字08进行操作。1. 录入功能:在主菜单按下1,按照提示输入录入要录入的销售员人数,销售员的姓名,工号,产品一的销售额,产品二的销售额以ENTER键结束输入,输入完后自动返回主菜单,再按键1,则继续录入信息。2. 显示功能:在主菜单界面按下键2再按下ENTER键就会显示全部销售员信息及出现主菜单。 3. 保存功能:在主菜单按下3,再按下ENTER键,会出现“保存成功”字样,并出现主菜单。4. 排序功能:在主菜单界面按下键4 再按下ENTER键,就会显示按产品总销售额排序后的全部销售员信息并出现主菜单。5. 统计功能:在主菜单按下5,再按下ENTER键,所有销售员产品一的销售额、产品二的销售额、产品总的销售额,并出现主菜单。6插入功能:在主菜单界面按下键6 再按下ENTER键,会显示“请输入销售员的姓名”等提示,根据提示输入销售员的姓名、工号、产品一的销售额、产品二的销售额,输入完成后会显示“是否继续输入(Y/N)”如果继续输入按Y不继续输入按N如果按N会显示主菜单。7. 删除功能:在主菜单界面按下键6 再按下ENTER键,会显示“请输入要删除的销售员的姓名”等提示,输入要删除的销售员的姓名后按下ENTER键,就删除了要删除的销售员的信息。8. 操作结束后请按3保存,再按0推出系统。六、附录1、参考书目: C程序设计(第三版)2、源程序清单#include <stdio.h>#include<conio.h> #include<time.h># include <string.h># include <stdlib.h>struct seller char num10;char name20;int sailerl; int sailerm;int sum;seller200;FILE *fp;int n;void main ()void insert();void del();void input();void show();void save();void sort();void statistics_sailer();int i;while (1)printf("-n");printf(" 销售管理系统 n");printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>n"); printf("! 0退出销售管理系统 !n");printf("! 1销售员信息录入 !n");printf("! 2销售员信息显示 !n");printf("! 3销售额信息保存 !n");printf("! 4产品总销售额由大到小排序 !n"); printf("! 5统计产品销售额信息 !n");printf("! 6插入销售员及其信息 !n");printf("! 7删除销售员及其信息 !n");printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<n");printf(" 请选择系统的功能项 n");printf("-n");scanf("%d",&i);switch(i)case 0: printf("o 退出销售管理系统 on"); exit(0);break;case 1: printf("-销售员信息录入-n"); input();break;case 2: printf("-销售员信息显示-n"); show();break;case 3: printf("-销售额信息保存-n"); save();break;case 4: printf("-总销售额信息排序-n"); sort();break;case 5: printf("-统计产品销售额信息-n"); statistics_sailer();break;case 6: printf("-插入销售员及其信息-n"); insert();break;case 7: printf("-删除销售员及其信息-n"); del();break;default:printf("输入错误,请重新选择!"); break; void input() int i;printf("请输入销售员个数n");scanf("%d",&n);for(i=0;i<n;i+)printf("输入销售员姓名:n");scanf("%s",selleri.name); printf("输入销售员工号:n"); scanf("%s",selleri.num); printf("请分别输入产品一和产品二的销售额:n");scanf("%d%d",&selleri.sailerl,&selleri.sailerm); system("cls"); void show () struct seller *p;system("cls");printf("姓名 工号 产品一销售额 产品二销售额:n"); for(p=seller;p<seller+n;p+) printf("%-8s %2s %6d %12dn",p->name,p->num,p->sailerl,p->sailerm); printf("nn"); void save ()FILE *fp;int i;fp=fopen("seller.txt","w");for(i=0;i<n;i+) fwrite(&selleri,sizeof(struct seller),1,fp); system("cls");printf("nn");printf("保存成功!n"); printf("nn"); void sort()struct seller temp;int i,j;for(i=0;i<n;i+)selleri.sum=selleri.sailerl+selleri.sailerm;for(j=0;j<n-1;j+)for(i=0;i<n-1-j;i+)if(selleri.sum<selleri+1.sum)temp=selleri;selleri=selleri+1;selleri+1=temp; system("cls");printf("姓名 工号 产品一销售额 产品二销售额 产品总销售额:n");for(i=0;i<n;i+)printf("n%st%st%dt%8dt%8dn",selleri.name,selleri.num,selleri.sailerl,selleri.sailerm,selleri.sum); void statistics_sailer ()int i,sum1,sum2,sum;sum1=0;sum2=0;sum=0; for(i=0;i<n;i+)sum1+=selleri.sailerl;sum2+=selleri.sailerm;sum=sum1+sum2;system("cls"); printf("产品一的销售额:%dn",sum1); printf("产品二的销售额:%dn",sum2); printf("产品总的销售额:%dn",sum); void insert()/插入数据函数 char ch; do printf("ntt输入新插入销售员信息n"); printf("n输入销售员姓名:"); fflush(stdin); gets(sellern.name); printf("n输入销售员工号:"); scanf("%s",sellern.num); fflush(stdin);printf("n输入产品一销售额:"); fflush(stdin); scanf("%d",&sellern.sailerl); printf("n输入产品二销售额:"); fflush(stdin); scanf("%d",&sellern.sailerm); printf("nn"); n=n+1; sort(); printf("是否继续输入?(Y/N)"); ch=getch(); system("cls"); while(ch!='n'); void del()/删除数据函数 char seller_name20;int i,j; printf("输入要删除销售员的姓名:"); fflush(stdin); scanf("%s",seller_name); for(i=0;i<n;i+) if(strcmp(seller_name,selleri.name)=0) for(j=i;j<n;j+) selleri=selleri+1; n=n-1; break; save();system("cls"); 计算机科学与技术系课程设计评分表课题名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:1此页附在课程设计报告最后一页;2综合成绩按优、良、中、及格和不及格五级评定。)专心-专注-专业