1、西安郵電大學C语言课程设计报告题目:汽车销售管理系统院系名称:专业名称:班级:学生姓名:学号(8位):指导教师:设计起止时间:一. 设计目的1。 对c语言基本知识的巩固和综合运用.熟练使用基本数据类型,基本控制结构,数组,函数,指针等.2。 强化上机动手能力,在理论和实践的基础上进一步巩固C语言程序设计课程学习的内容,掌握工程化软件设计的基本方法。3。 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力.4。 为后续各门计算机课程的学习打下坚实基础。5.汽车销售管理系统的设计与实现,此次程序设计主要利用c语言的基础知识开发一个简单的汽车销售管理系统。汽车销售管理系统是一个企业不
2、可缺少的一部分,它利用计算机对汽车销售进行统一管理,实现汽车销售管理工作的系统化、规范化和自动化,为企业提高工作效率.二. 设计内容主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,主要功能有:1。能够实现对新车的入库工作.2。能够修改汽车信息。3。能按销售新车来管理汽车销售信息。4。能够查询汽车信息. 5。能够删除汽车信息。6。显示汽车库存信息。 7.能够实现对汽车品牌、汽车进价、姓名的排序。 8.能够实现退出系统。三概要设计1功能模块图; 登 录 系 统 输入密码 欢迎界面 汽车销售管理系统 菜 单销售退出入库修改查找排序删除显示2各个模块详细的功能描述.1。能够实现对新车的入库
3、工作。创建汽车产品信息文件,根据提示输入若干汽车的信息,并将这些信息保存至一个文件中。2。能够修改汽车信息。提示用户输入要进行修改操作的产品名称和产品型号,如果在产品信息文件中有该息存在,则将提示用户输入要修改的选项,并将结果保存至原产品信息文件,并提示用户选择是否继续进行修改操作。3。能按销售新车来管理汽车销售信息。创建一个销售记录文件,每完成一次销售,就按销售信息的要求输入各项数据,并将该次的销售信息添加到文件中,同时修改相应的汽车产品信息文件(主要是修改其库存数量).4。能够查询汽车信息。输入产品名称,在汽车产品信息文件中查找相应的汽车信息并输出. 5.能够删除汽车信息。提示用户输入要进
4、行删除操作的产品名称和产品型 号,如果在产品信息文件中有该信息存在,则将对应的汽车信息删除,否 则输出提示信息,并提示用户选择是否继续进行删除操作。6。显示汽车库存信息。打开汽车信息文件,输出文件内汽车信息。 7.能够实现对汽车品牌、汽车进价、姓名的排序.按不同条件进行排序操作,输出满足条件的笔记本电脑信息。 8.能够实现退出系统。四详细设计1各功能函数的流程图 主函数 Switch case 语句 入库管理(case 1) 修改数据(case 2) 销售管理(case 3) 查询管理(case 4) 删除管理(case 5) 显示库存(case 6) 排序管理(case 7) 结束管理(ca
5、se 8) 入库管理 输入入库汽车信息 输入完毕 返回主菜单显示汽车的基本信息输入要修改汽车的品牌型号 修改管理 存在提示修改项 辆数售价 进价 是否继续 修 改 完 成 否 返回主菜单返回主菜单销售管理输入要销售汽车的品牌型号辆数是否继续输出利润显示现有库存查询模块输入要查询的汽车品牌型号 输出查询的汽车的信息继续查询按1,退出查询按2 返回主界面输入要删除的品牌型号是否继续显示删除后所有汽车的信息确认删除显示删除信息删除管理12返回主菜单 显示模块判断文件是否存在是否 导入文件 输出对应汽车信息 结束按品牌排序选择排序方式否返回主菜单是否继续排序管理按进价排序按利润排序 是2重点设计及编码
6、struct carmarketchar carname15;/品牌名char model10;/型号float saleprice;/进价float soldprice;/售价int num;/数量float gain;/盈利car1000;void main() char select=0;char temp115,temp210;struct carmarket carname_order;struct carmarket price_order;float sum;FILE fp;int m,n,i,j,k,temp3; int x=3; int flag=0; char s8; sy
7、stem(”color 1b);五测试数据及运行结果1正常测试数据和运行结果1:入库管理2:修改管理3:销售管理2异常测试数据及运行结果1: 查询管理2: 删除管理六调试情况,设计技巧及体会1改进方案程序大体上还算成功,其中的几个模块都达到了我预期想要的效果,条理也较清晰,这是我比较满意的地方。但是也有不足之处,就是密码不能进行修改的操作,而只是简单的事永远是使用原始密码,这是有待完善的,而且有些地方用起来不大方便,不好操作,需要进一步完善。2体会1) 对C语言的编程实践有所认识.2) 在遇到程序调试不通过时,会通过缩小范围的分析来锁定问题所在。3) 通过这次实验,熟悉了从自然语言转换成伪代码
8、再转换为流程图的过程。各功能函数的流程图4) 在程序中设定合适的全局变量,可以简化程序的编写难度。5) 通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。随着实验的成功与报告的完成,有点微微的成就感使人难忘。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言的学习,我会加倍努力。七参考文献C语言程序设计(王曙燕/主编科学出版社)C程序设计(谭浩强/主编清华大学出版社) C语言程序设计习题解析与应用案例分析(黄维通 谢孟荣 编著)八附录:源程序includestdio.hincludestring。hincludestruct carm
9、arketchar carname15;/品牌名char model10;/型号float saleprice;/进价float soldprice;/售价int num;/数量float gain;/盈利car1000;char password7=”000000”;/定义初始密码void main() char select=0;char temp115,temp210;struct carmarket carname_order;struct carmarket price_order;float sum;FILE *fp;int m,n,i,j,k,temp3; int x=3; in
10、t flag=0; char s8; system(”color 1b); doprintf(”请输入密码:n”); scanf(%s”,s); if(!strcmp(s,password)/*进行密码验证/ printf(”PASSnnn”); flag=1;break; else printf(密码错误,请重新输入:n); x-; while(x0); if(!flag) printf(”你已经输入三次错误密码!”); exit(0); back: /goto点0system(cls);/清屏 包含在stdlib。h头文件中,执行清屏操作/系统菜单 puts( ”); puts(” ”);
11、puts(” *); puts( $ );puts(” 欢迎使用汽车销售管理系统 ”);puts( $ $);puts(” $ 1.入库管理 ); puts(” ); puts(” $ 2。修改数据 ); puts(” ”);puts(” $ 3。销售管理 ); puts(” ”);puts(” 4。查询信息 ”); puts( $ ”); puts(” 5.删除管理 ”); puts( $ ”);puts(” $ 6。显示库存 ); puts(” );puts( $ 7。排序管理 ); puts(” $”);puts( $ 8。退出系统 ”); puts(” $ ”);puts( *”);p
12、rintf(”请选择(18):”);select=getch();/输入选择选项 getch包含在conio.h头文件中switch(select)case 1: /打开资料文件if((fp=fopen(C:car.txt,”r+))=NULL)printf(”n文件不存在!n按任意键新建一个.。n); /如果文件不存在,提示新建一个getch(); /吃掉任意键fp=fopen(”c:car.txt”,”w+”);/创建新文件fclose(fp); /建完关闭,以便用r+方式打开goto back;/返回点0for(m=0;!feof(fp);m+)/从文件读入数据fscanf(fp,%s
13、s %f f d fn ,carm.carname,carm.model,carm.saleprice,&carm.soldprice,carm。num,carm.gain);system(”cls);/清屏printf(录入新车请按1.nn”); scanf(”d”,&temp3); / 输入选项 if(temp3=1)system(”cls);printf(”要录入的汽车有几种:”);scanf(d,n);/输入要录入的汽车有几种for(i=0;in;i+)/依次录入库存system(cls”);printf(”请输入汽车信息n品牌名: );scanf(”s,carm+i。carname)
14、;printf(”n型号:”);scanf(s”,carm+i。model);printf(”n进价:”);scanf(%f,carm+i。saleprice);printf(n售价:”);scanf(”f”,carm+i。soldprice);printf(n辆数:);scanf(d,carm+i.num);for(i=0;in;i+)/将文数据件写入文件中fprintf(fp,”%7s %7s 7。2f 7.2f 7d 0.00n,carm+i。carname,carm+i.model,carm+i。saleprice,carm+i。soldprice,carm+i。num);/格式控制
15、0。00为盈利值fclose(fp);/关闭文件printf(您的操作已经完成!n);printf(品牌型号进价售价辆数n”);/在屏幕上输出录入的信息 for(i=0;in;i+)/左对齐输出printf(”%7s -7s %-7。2f -7。2f -7d n,carm+i.carname,carm+i.model,carm+i。saleprice,carm+i。soldprice,carm+i.num);printf(”请按任意键返回主菜单n”);getch(); goto back;/返回点0 case 2:/修改数据 fp=fopen(C:car。txt”,”r+);/打开文件 for
16、(m=0;!feof(fp);m+)/读入数据 fscanf(fp,s s %f f d %fn ,carm.carname,carm.model,carm。saleprice,carm。soldprice,carm。num,carm.gain); back2:/goto点1system(”cls”);/清屏 printf(品牌型号进价售价辆数n);for(k=0;km;k+)/输出原来汽车库存的信息printf(%7s 7s %-7。2f %7.2f -7d n,cark。carname,cark。model,cark.saleprice,cark。soldprice,cark.num);p
17、rintf(n请输入品牌名: );/输入要改变库存量的信息scanf(”s”,temp1);printf(”n请输入型号:”);scanf(%s”,temp2);for(k=0;km;k+)/数据进行比较是否存在if(strcmp(cark.carname,temp1)=0&strcmp(cark。model,temp2)=0)break;if(k=m)/如果不存在printf(您输入的汽车不存在.n”);printf(n请返回重新输入 按任意键。.”);getch();goto back2;/返回点1 printf(品牌型号进价售价辆数n”);printf(7s -7s 7.2f %7.2f
18、 7d n,cark。carname,cark。model,cark.saleprice,cark.soldprice,cark。num);/输出未改变之前的信息printf(”n请输入改变的进价:”);scanf(”f”,cark。saleprice);printf(n请输入改变的售价:”); scanf(f”,&cark。soldprice);printf(”n请输入改变的辆数:);scanf(%d,cark。num); remove(”c:car。txt); /删除原文件fp=fopen(”c:car。txt”,”w+”); /创建新文件for(i=0;im;i+)/在新文件中写入fpr
19、intf(fp,”7s %7s 7.2f 7。2f %7d 7.2fn”,cari。carname,cari。model,cari。saleprice,cari。soldprice,cari.num,cari。gain); fclose(fp);printf(修改成功nn); printf(品牌型号进价售价辆数n);printf(7s 7s %7。2f 7。2f -7d nn”,cark。carname,cark。model,cark。saleprice,cark。soldprice,cark.num);/输出改变之后的信息printf(”修改已完成。nn1(继续)nn2(退出)n”); sc
20、anf(”%d,temp3); if(temp3=1)goto back2; elsegoto back;case 3:/销售管理fp=fopen(C:car。txt,”r+”);/打开文件for(m=0;!feof(fp);m+)/读入数据fscanf(fp,”%s s f f %d fn” ,carm。carname,carm.model,carm。saleprice,carm。soldprice,carm.num,&carm。gain); back3:/goto点2system(”cls”);printf(品牌型号进价售价辆数盈利n”);sum=0;/算总盈利之用for(k=0;km;k
21、+) /在屏幕上输出库存信息printf(-7s %7s %7。2f 7.2f %-7d 7。2f n”,cark。carname,cark。model,cark。saleprice,cark。soldprice,cark.num,cark。gain);sum=sum+cark。gain;/计算总盈利printf(”n总盈利:。2fnn,sum);/输出总盈利printf(”请输入卖出汽车信息nn品牌名: ); /输入信息scanf(”s”,temp1);printf(”n型号:”);scanf(s”,temp2); for(k=0;km;k+)/对数据进行比较if(strcmp(cark.c
22、arname,temp1)=0strcmp(cark。model,temp2)=0)break;if(k=m)/如果不存在printf(您输入的汽车不存在。nn”);printf(请返回重新输入 按任意键。”);getch();goto back3;/返回点2 printf(”品牌型号辆数n);printf(”n%7s -7s %-7d n”,cark。carname,cark。model,cark.num);/输出要销售的汽车信息printf(n请输入卖出辆数:”);scanf(%d”,temp3);cark。num=cark。num-temp3;/计算件数cark。gain=cark。ga
23、in+(cark.soldpricecark。saleprice)*temp3;/计算盈利remove(c:car。txt); /删除原文件 fp=fopen(c:car。txt”,w+); /创建新文件for(i=0;im;i+)/在新文件中写入数据fprintf(fp,7s 7s %7。2f 7。2f 7d 7.2fn,cari。carname,cari。model,cari.saleprice,cari。soldprice,cari。num,cari。gain);fclose(fp); printf(”品牌型号辆数n”);printf(”7s 7s %-7d n,cark.carname
24、,cark。model,cark.num);/输出销售后的汽车信息printf(”您的操作已经完成!nn”);printf(”品牌型号进价售价辆数盈利n”);sum=0;for(k=0;km;k+) /在屏幕上输出库存信息printf(7s 7s -7.2f 7.2f 7d %7.2f n,cark.carname,cark。model,cark。saleprice,cark.soldprice,cark。num,cark。gain);sum=sum+cark。gain;/计算总盈利printf(n总盈利:。2fnn”,sum);/输出总盈利printf(”销售已完成。nn1(继续)nn2(退
25、出)n”); scanf(%d”,temp3); if(temp3=1)goto back3; elsegoto back; case 4:/查询if((fp=fopen(”C:car。txt”,”r+”))=NULL)/打开文件printf(”文件打不能打开!n”);/提示文件打不开getch();exit(1);for(m=0;!feof(fp);m+)/读入数据fscanf(fp,s s f f d %fn” ,carm.carname,carm。model,&carm。saleprice,carm。soldprice,&carm.num,carm.gain); back4: syste
26、m(cls”);printf(请输入要查询的汽车的信息nn”);/输入要查询的汽车的信息printf(”品牌:);scanf(s”,temp1);printf(”n型号:);scanf(s,temp2);for(k=0;km;k+)/数据进行比较if(strcmp(cark。carname,temp1)=0&strcmp(cark。model,temp2)=0)break;if(k=m)/如果不存在printf(”您输入的汽车信息不存在。n);printf(n请返回重新输入 按任意键.。);getch();goto back4; printf(”品牌型号进价售价辆数盈利n);printf(n7
27、s -7s %7。2f 7。2f %7.d -7.2f n”,cark.carname,cark。model,cark。saleprice,cark。soldprice,cark.num,cark。gain); printf(是否要继续查询?nn1(继续)nn2(退出):”);scanf(”%d,temp3);if(temp3=1)goto back4;elsegoto back;case 5:/删除管理if(fp=fopen(”C:car。txt”,”r+)=NULL)/提示文件打不开printf(”文件打不能打开!n);getch();exit(1);for(m=0;!feof(fp);m
28、+)/输入数据fscanf(fp,”%s %s f %f %d fn ,carm。carname,carm.model,carm。saleprice,&carm。soldprice,&carm。num,carm。gain); back5:/goto点5system(”cls”);printf(品牌型号进价售价辆数盈利n);sum=0;/在屏幕上输出库存for(k=0;km;k+)printf(”%-7s 7s -7。2f 7。2f -7。d -7。2f n”,cark。carname,cark。model,cark。saleprice,cark。soldprice,cark.num,cark。
29、gain);sum=sum+cark。gain;/计算总盈利printf(n总盈利:.2fnn,sum);printf(”请输入要删除的汽车的信息nn);/输入要删除的汽车的信息printf(”品牌:”);scanf(”s”,temp1);printf(”n型号:”);scanf(”s”,temp2);for(k=0;km;k+)/数据进行比较if(strcmp(cark。carname,temp1)=0&strcmp(cark.model,temp2)=0)break;if(k=m)/如果不存在printf(”您输入的汽车信息不存在.n);printf(n请返回重新输入 按任意键。);get
30、ch();goto back5; printf(品牌型号辆数n”);printf(”n%7s %7s 7d n”,cark.carname,cark.model,cark。num);printf(”n是否要删除?nn1(删除)nn2(不删除):”);scanf(”d”,&temp3);/选择是否要删除if(temp3=1)/如果要删除remove(”c:car。txt); /删除原文件fp=fopen(c:car.txt”,”w+”); /创建新文件printf(”n品牌型号进价售价辆数盈利n”);/删除完后在文件夹中写入和在屏幕显示剩下的汽车信息for(i=0;im;i+)if(i!=k)f
31、printf(fp,”%7s %7s %7。2f %7.2f 7d 7。2fn”,cari。carname,cari。model,cari。saleprice,cari.soldprice,cari。num,cari。gain);printf(%7s 7s 7。2f -7。2f %-7。d 7.2f n,cari。carname,cari。model,cari。saleprice,cari。soldprice,cari。num,cari。gain);printf(n删除已完成n);else/不删除printf(n删除未完成n”);fclose(fp);printf(n按任意键返回菜单.。”);
32、getch();goto back;/返回主菜单case 6:/显示库存if((fp=fopen(C:car.txt”,r+”)=NULL)/打开文件printf(文件打不能打开!n);/提示文件打不开getch();exit(1);for(m=0;!feof(fp);m+)/读入数据fscanf(fp,%s s %f f %d %fn” ,carm.carname,carm.model,&carm。saleprice,carm.soldprice,&carm.num,carm.gain);system(”cls”);printf(序号 品牌 型号 进价售价 辆数n”);/在屏幕上显示数据fo
33、r(k=0;km;k+)printf(”d 7s %7s %-7.2f 7。2f %-7d n”,k+1,cark。carname,cark。model,cark.saleprice,cark。soldprice,cark。num);fclose(fp);printf(请按任意键返回主菜单n”);getch();goto back; case 7:/排序 if(fp=fopen(”C:car。txt”,”r+”)=NULL)/打开文件printf(”文件打不能打开!n”);/提示文件打不开getch();exit(1);for(m=0;!feof(fp);m+)/读入数据fscanf(fp,”
34、%s s %f f %d fn” ,carm.carname,carm。model,carm.saleprice,&carm。soldprice,&carm.num,&carm。gain); back7:system(cls”);printf(”n请选择排序标准?nn1(按品牌排序)nn2(按进价排序)nn3(按利润排序)n);scanf(d,&temp3); if(temp3=1)/按品牌排序 for(i=0;im-1;i+) for(j=i+1;jm;j+) if(strcmp(cari.carname,carj。carname)0)carname_order=cari; cari=carj; carj=carname_order;printf(”按品牌排序输出:n”)