当前位置:文档之家› 汽车销售管理系统 C语言版

汽车销售管理系统 C语言版

西安郵電大學

C语言课程设计报告题目:汽车销售管理系统

院系名称:

专业名称:

班级:

学生姓名:

学号(8位):

指导教师:

设计起止时间:

一. 设计目的

1. 对c语言基本知识的巩固和综合运用。熟练使用基本数据类型,基本控制结构,数组,函数,指针等。

2. 强化上机动手能力,在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程化软件设计的基本方法。

3. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

4. 为后续各门计算机课程的学习打下坚实基础。

5.《汽车销售管理系统》的设计与实现,此次程序设计主要利用c语言的基础知识开发一个简单的汽车销售管理系统。汽车销售管理系统是一个企业不可缺少的一部分,它利用计算机对汽车销售进行统一管理,实现汽车销售管理工作的系统化、规范化和自动化,为企业提高工作效率。

二. 设计内容

主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,主要功能有:

1.能够实现对新车的入库工作。

2.能够修改汽车信息。

3.能按销售新车来管理汽车销售信息。

4.能够查询汽车信息。

5.能够删除汽车信息。

6.显示汽车库存信息。

7.能够实现对汽车品牌、汽车进价、姓名的排序。

8.能够实现退出系统。

三.概要设计

1.功能模块图;

2.各个模块详细的功能描述。

1.能够实现对新车的入库工作。创建汽车产品信息文件,根据提示输入若干汽车的信

息,并将这些信息保存至一个文件中。

2.能够修改汽车信息。提示用户输入要进行修改操作的产品名称和产品型号,如果在

产品信息文件中有该息存在,则将提示用户输入要修改的选项,并将结果保存至原产品信息文件,并提示用户选择是否继续进行修改操作。

3.能按销售新车来管理汽车销售信息。创建一个销售记录文件,每完成一次销售,就

按销售信息的要求输入各项数据,并将该次的销售信息添加到文件中,同时修改相应的汽车产品信息文件(主要是修改其库存数量)。

4.能够查询汽车信息。输入产品名称,在汽车产品信息文件中查找相应的汽车信息并

输出。

5.能够删除汽车信息。提示用户输入要进行删除操作的产品名称和产品型

号,如果在产品信息文件中有该信息存在,则将对应的汽车信息删除,否

则输出提示信息,并提示用户选择是否继续进行删除操作。

6.显示汽车库存信息。打开汽车信息文件,输出文件内汽车信息。

7.能够实现对汽车品牌、汽车进价、姓名的排序。按不同条件进行排序操作,输出满

足条件的笔记本电脑信息。

8.能够实现退出系统。

四.详细设计

1.各功能函数的流程图

2.重点设计及编码

struct carmarket

{

char carname[15];//品牌名

char model[10];//型号

float saleprice;//进价

float soldprice;//售价

int num;//数量

float gain;//盈利

}

car[1000];

void main()

{

char select=0;

char temp1[15],temp2[10];

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 s[8];

system("color 1b");

五.测试数据及运行结果

1.正常测试数据和运行结果

1: 入库管理

2: 修改管理

3: 销售管理

2.异常测试数据及运行结果1: 查询管理

2: 删除管理

六.调试情况,设计技巧及体会

1.改进方案

程序大体上还算成功,其中的几个模块都达到了我预期想要的效果,条理也较清晰,这是我比较满意的地方。但是也有不足之处,就是密码不能进行修改的操作,而只是简单的事永远是使用原始密码,这是有待完善的,而且有些地方用起来不大方便,不好操作,需要进一步完善。

2.体会

1) 对C语言的编程实践有所认识。

2) 在遇到程序调试不通过时,会通过缩小范围的分析来锁定问题所在。

3) 通过这次实验,熟悉了从自然语言转换成伪代码再转换为流程图的过程。各功能函数的流程图

4) 在程序中设定合适的全局变量,可以简化程序的编写难度。

5) 通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。随着实验的成功与报告的完成,有点微微的成就感使人难忘。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言的学习,我会加倍努力。

七.参考文献

《C语言程序设计》(王曙燕/主编科学出版社)

《C程序设计》(谭浩强/主编清华大学出版社)

《C语言程序设计习题解析与应用案例分析》(黄维通谢孟荣编著)

八.附录:源程序

#include

#include

#include

#include

struct carmarket

{

char carname[15];//品牌名

char model[10];//型号

float saleprice;//进价

float soldprice;//售价

int num;//数量

float gain;//盈利

}

car[1000];

char password[7]="000000";//定义初始密码

void main()

{

char select=0;

char temp1[15],temp2[10];

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 s[8];

system("color 1b");

do

{

printf("请输入密码:\n");

scanf("%s",s);

if(!strcmp(s,password))/*进行密码验证*/

{ printf("PASS\n\n\n");

flag=1;break;

}

else

{ printf("密码错误,请重新输入:\n");

x--;

}

}

while(x>0);

if(!flag)

{

printf("你已经输入三次错误密码!");

exit(0);

}

back: //goto点0

system("cls");//清屏包含在stdlib.h头文件中,执行清屏操作

//系统菜单

puts(" ");

puts(" ");

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(" ********************************************");

printf("请选择(1-8):");

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;//返回点0

}

for(m=0;!feof(fp);m++)//从文件读入数据

fscanf(fp,"%s %s %f %f %d %f\n" ,car[m].carname,car[m].model,&car[m].saleprice,&car[m].soldprice,&car[m] .num,&car[m].gain);

system("cls");//清屏

printf("录入新车请按1.\n\n");

scanf("%d",&temp3); // 输入选项

if(temp3==1)

{

system("cls");

printf("要录入的汽车有几种:");

scanf("%d",&n);//输入要录入的汽车有几种

for(i=0;i

{

system("cls");

printf("请输入汽车信息\n品牌名: ");

scanf("%s",car[m+i].carname);

printf("\n型号:");

scanf("%s",car[m+i].model);

printf("\n进价:");

scanf("%f",&car[m+i].saleprice);

printf("\n售价:");

scanf("%f",&car[m+i].soldprice);

printf("\n辆数:");

scanf("%d",&car[m+i].num);

}

for(i=0;i

fprintf(fp,"%7s %7s %7.2f %7.2f %7d 0.00\n",car[m+i].carname,car[m+i].model,car[m+i].saleprice,car[m+i].soldprice,car[m+i].num);//格式控制 0.00为盈利值

fclose(fp);//关闭文件

printf("您的操作已经完成!\n");

printf("品牌型号进价售价辆数\n");//在屏幕上输出录入的信息

for(i=0;i

printf("%-7s %-7s %-7.2f %-7.2f %-7d \n",car[m+i].carname,car[m+i].model,car[m+i].saleprice,car[m+i].soldprice,car[m+i].num);

printf("请按任意键返回主菜单\n");

getch();

}

goto back;//返回点0

}

case '2'://修改数据

{

fp=fopen("C:\\car.txt","r+");//打开文件

for(m=0;!feof(fp);m++)//读入数据

fscanf(fp,"%s %s %f %f %d %f\n" ,car[m].carname,car[m].model,&car[m].saleprice,&car[m].soldprice,&car[m].num, &car[m].gain);

back2://goto点1

system("cls");//清屏

printf("品牌型号进价售价辆数\n");

for(k=0;k

printf("%-7s %-7s %-7.2f %-7.2f %-7d \n",car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].num);

printf("\n请输入品牌名: ");//输入要改变库存量的信息

scanf("%s",temp1);

printf("\n请输入型号:");

scanf("%s",temp2);

for(k=0;k

if(strcmp(car[k].carname,temp1)==0&&strcmp(car[k].model,temp2)==0)

break;

if(k==m)//如果不存在

{

printf("您输入的汽车不存在。\n");

printf("\n请返回重新输入按任意键...");

getch();

goto back2;//返回点1

}

printf("品牌型号进价售价辆数\n");

printf("%-7s %-7s %-7.2f %-7.2f %-7d \n",car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].num);//输出未改变之前的信息

printf("\n请输入改变的进价:");

scanf("%f",&car[k].saleprice);

printf("\n请输入改变的售价:");

scanf("%f",&car[k].soldprice);

printf("\n请输入改变的辆数:");

scanf("%d",&car[k].num);

remove("c:\\car.txt"); //删除原文件

fp=fopen("c:\\car.txt","w+"); //创建新文件

for(i=0;i

fprintf(fp,"%7s %7s %7.2f %7.2f %7d %7.2f\n",car[i].carname,car[i].model,car[i].saleprice,car[i].soldpri ce,car[i].num,car[i].gain);

fclose(fp);

printf("修改成功\n\n");

printf("品牌型号进价售价辆数\n");

printf("%-7s %-7s %-7.2f %-7.2f %-7d \n\n",car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].num);//输出改变之后的信息

printf("修改已完成。\n\n1(继续)\n\n2(退出)\n");

scanf("%d",&temp3);

if(temp3==1)

goto back2;

else

goto back;

}

case '3'://销售管理

{

fp=fopen("C:\\car.txt","r+");//打开文件

for(m=0;!feof(fp);m++)//读入数据

fscanf(fp,"%s %s %f %f %d %f\n" ,car[m].carname,car[m].model,&car[m].saleprice,&car[m].soldprice,&car[m] .num,&car[m].gain);

back3://goto点2

system("cls");

printf("品牌型号进价售价辆数盈利\n");

sum=0;//算总盈利之用

for(k=0;k

{ //在屏幕上输出库存信息

printf("%-7s %-7s %-7.2f %-7.2f %-7d %-7.2f \n",car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].num,car[k].gain);

sum=sum+car[k].gain;//计算总盈利

}

printf("\n总盈利:%.2f\n\n",sum);//输出总盈利

printf("请输入卖出汽车信息\n\n品牌名: "); //输入信息

scanf("%s",temp1);

printf("\n型号:");

scanf("%s",temp2);

for(k=0;k

if(strcmp(car[k].carname,temp1)==0&&strcmp(car[k].model,temp2)==0)

break;

if(k==m)//如果不存在

{

printf("您输入的汽车不存在。\n\n");

printf("请返回重新输入按任意键...");

getch();

goto back3;//返回点2

}

printf("品牌型号辆数\n");

printf("\n%-7s %-7s %-7d \n",car[k].carname,car[k].model,car[k].num);//输出要销售的汽车信息

printf("\n请输入卖出辆数:");

scanf("%d",&temp3);

car[k].num=car[k].num-temp3;//计算件数

car[k].gain=car[k].gain+(car[k].soldprice-car[k].saleprice)*temp3;//计算盈利

remove("c:\\car.txt"); //删除原文件

fp=fopen("c:\\car.txt","w+"); //创建新文件

for(i=0;i

fprintf(fp,"%7s %7s %7.2f %7.2f %7d %7.2f\n",car[i].carname,car[i].model,car[i].saleprice,car[i].soldpri ce,car[i].num,car[i].gain);

fclose(fp);

printf("品牌型号辆数\n");

printf("%-7s %-7s %-7d \n",car[k].carname,car[k].model,car[k].num);//输出销售后的汽车信息

printf("您的操作已经完成!\n\n");

printf("品牌型号进价售价辆数盈利\n");

sum=0;

for(k=0;k

{ //在屏幕上输出库存信息

printf("%-7s %-7s %-7.2f %-7.2f %-7d %-7.2f \n",car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].num,car[k].gain);

sum=sum+car[k].gain;//计算总盈利

}

printf("\n总盈利:%.2f\n\n",sum);//输出总盈利

printf("销售已完成。\n\n1(继续)\n\n2(退出)\n");

scanf("%d",&temp3);

if(temp3==1)

goto back3;

else

goto back;

}

case '4'://查询

{

i f((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 %f\n" ,car[m].carname,car[m].model,&car[m].saleprice,&car[m].soldprice,&car[m] .num,&car[m].gain);

back4:

system("cls");

printf("请输入要查询的汽车的信息\n\n");//输入要查询的汽车的信息

printf("品牌:");

scanf("%s",temp1);

printf("\n型号:");

scanf("%s",temp2);

for(k=0;k

if(strcmp(car[k].carname,temp1)==0&&strcmp(car[k].model,temp2)==0)

break;

if(k==m)//如果不存在

{

printf("您输入的汽车信息不存在。\n");

printf("\n请返回重新输入按任意键...");

getch();

goto back4;

}

printf("品牌型号进价售价辆数盈利\n");

printf("\n%-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].num,car[k].gain);

printf("是否要继续查询?\n\n1(继续)\n\n2(退出):");

scanf("%d",&temp3);

if(temp3==1)

goto back4;

else

goto back;

}

case '5'://删除管理

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 %f\n" ,car[m].carname,car[m].model,&car[m].saleprice,&car[m].soldprice,&car[m] .num,&car[m].gain);

back5://goto点5

system("cls");

printf("品牌型号进价售价辆数盈利\n");

sum=0;

//在屏幕上输出库存

for(k=0;k

{

printf("%-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].num,car[k].gain);

sum=sum+car[k].gain;//计算总盈利

}

printf("\n总盈利:%.2f\n\n",sum);

printf("请输入要删除的汽车的信息\n\n");//输入要删除的汽车的信息

printf("品牌:");

scanf("%s",temp1);

printf("\n型号:");

scanf("%s",temp2);

for(k=0;k

if(strcmp(car[k].carname,temp1)==0&&strcmp(car[k].model,temp2)==0)

break;

if(k==m)//如果不存在

{

printf("您输入的汽车信息不存在。\n");

printf("\n请返回重新输入按任意键...");

getch();

goto back5;

}

printf("品牌型号辆数\n");

printf("\n%-7s %-7s %-7d \n",car[k].carname,car[k].model,car[k].num);

printf("\n是否要删除?\n\n1(删除)\n\n2(不删除):");

scanf("%d",&temp3);//选择是否要删除

if(temp3==1)//如果要删除

{

remove("c:\\car.txt"); //删除原文件

fp=fopen("c:\\car.txt","w+"); //创建新文件

printf("\n品牌型号进价售价辆数盈利\n");//删除完后在文件夹中写入和在屏幕显示剩下的汽车信息

for(i=0;i

{

if(i!=k)

{

fprintf(fp,"%7s %7s %7.2f %7.2f %7d %7.2f\n",car[i].carname,car[i].model,car[i].saleprice,car[i].soldpri ce,car[i].num,car[i].gain);

printf("%-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",car[i].carname,car[i].model,car[i].saleprice,car[i].soldprice,car[i].num,car[i].gain);

}

}

printf("\n删除已完成\n");

}

else//不删除

printf("\n删除未完成\n");

fclose(fp);

printf("\n按任意键返回菜单...");

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 %f\n" ,car[m].carname,car[m].model,&car[m].saleprice,&car[m].soldprice,&car[m] .num,&car[m].gain);

system("cls");

printf("序号品牌型号进价售价辆数\n");//在屏幕上显示数据

for(k=0;k

{

printf("%d %-7s %-7s %-7.2f %-7.2f %-7d \n",k+1,car[k].carname,car[k].model,car[k].saleprice,car[k].soldprice,car[k].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,"%s %s %f %f %d %f\n" ,car[m].carname,car[m].model,&car[m].saleprice,&car[m].soldprice,&car[m] .num,&car[m].gain);

back7:

system("cls");

printf("\n请选择排序标准?\n\n1(按品牌排序)\n\n2(按进价排序)\n\n3(按利润排序)\n");

scanf("%d",&temp3);

if(temp3==1)//按品牌排序

{

for(i=0;i

for(j=i+1;j

if(strcmp(car[i].carname,car[j].carname)>0)

{

carname_order=car[i];

car[i]=car[j];

car[j]=carname_order;

}

printf("按品牌排序输出:\n");

printf("序号品牌型号进价售价辆数盈利\n");

for(i=0;i

{

printf("%d %-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",i+1,car[i].carname,car[i].model,car[i].saleprice,car[i].soldprice,car[i].num,car[i].gain);

}

printf("排序已完成。\n\n1(继续)\n\n2(退出)\n");

scanf("%d",&temp3);

if(temp3==1)

goto back7;

else

goto back;

}

else if(temp3==2)//按进价排序

{

for(i=0;i

for(j=i+1;j

if(car[i].saleprice>car[j].saleprice)

{

price_order=car[i];

car[i]=car[j];

car[j]=price_order;

}

printf("按进价排序输出:\n");

printf("序号品牌型号进价售价辆数盈利\n");

for(i=0;i

{

printf("%d %-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",i+1,car[i].carname,car[i].model,car[i].saleprice,car[i].soldprice,car[i].num,car[i].gain);

}

printf("排序已完成。\n\n1(继续)\n\n2(退出)\n");

scanf("%d",&temp3);

if(temp3==1)

goto back7;

else

goto back;

}

else if(temp3==3) //按利润排序

{

for(i=0;i

for(j=i+1;j

if(car[i].gain

{

price_order=car[i];

car[i]=car[j];

car[j]=price_order;

}

printf("按利润排序输出:\n");

printf("序号品牌型号进价售价辆数盈利\n");

for(i=0;i

{

printf("%d %-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",i+1,car[i].carname,car[i].model,car[i].saleprice,car[i].soldprice,car[i].num,car[i].gain);

}

printf("排序已完成。\n\n1(继续)\n\n2(退出)\n");

scanf("%d",&temp3);

if(temp3==1)

goto back7;

else

goto back;

}

break;

}

case '8'://退出系统

{

system("cls");

printf("谢谢你的使用!\n");

exit(0);

}

}

}

相关主题
文本预览
相关文档 最新文档