c语言商品订购系统设计.docx
《c语言商品订购系统设计.docx》由会员分享,可在线阅读,更多相关《c语言商品订购系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
c语言商品订购系统设计
课程设计说明书
学院、系:
专业:
学生姓名:
学号:
设计题目:
商品订购系统设计
起迄日期:
2017年4月24日-2017年5月12日
指导教师:
日期:
2017年5月12日
1设计目的
1)进一步巩固和复习C程序设计的基础知识;
2)培养自己结构化程序、模块化程序设计的方法和能力;
3)了解软件的编制过程及各环节的具体内容;
4)提高自己程序调试技巧、软件设计能力和代码规范化等素质;
5)提高自己分析问题、解决问题以及实际运用能力。
2任务概述
屏幕上出现选择界面,管理员和顾客进行权限选择进入。
1)顾客具备的功能:
让顾客或输入商品名称,或商品型号,或选择列表进而输入商品编号都可以,如查到所选商品,则列出商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量;然后给出选购流程:
所选商品编号-列出对应商品的信息-要求顾客输入邮寄地址信息-确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。
2)管理员具备的功能:
录入、修改、删除商品。
3)建立两个文件,分别存放商品信息与订购信息。
商品订购系统设计
3模块划分
商品订购系统设计有如下功能,功能模块图如图3.1所示
4主要函数说明及其N-S图
voidgoodsname();//通过商品名查询
图4.1通过商品名查询
图4.1通过商品名查询
图4.2通过商品编号查询
图4.2通过商品编号查询
图4.3输出所有商品信息
图4.4输入管理员密码
图4.5购买商品
5程序运行数据及其结果
主界面过程截图如图5.5所示
图5.1主界面
添加商品(过程)过程截图如图5.2所示
图5.2添加商品(过程)
添加商品(结果)过程截图如图5.3所示
图5.3添加商品(结果)
购买商品过程截图如图5.4所示
图5.4购买商品
删除商品过程截图如图5.5所示
图5.5删除商品
6课程设计心得
首先得感谢同学对我的帮助。
一开始编的时候bug很多,上网找了很多资料,去图书馆也查了不少的书,终于解决了他们。
以前写的代码结构混乱,变量命名,函数命名混乱,没有注释,写出来做程序有时候自己也看不懂。
在完完整整得做完一个程序后我对结构化程序的整体性有了一个明确的认识,必须注意程序前后的联系,要做到高内聚,低耦合,要具有清晰的思路,要提前画好完善的流程图程序要具有层次。
对整体性的把握至关重要,学习计算机语言最重要的就是上机操作,多实践,才能发现自己的不足。
在以后的学习中,我要做到举一反三,多思考,勤动脑,通过这次的实训,我总结出在以后学习中还必须多多上机编写程序,从实践中多积累经验,为以后进一步学习打下坚实基础。
附录:
程序源代码
#include
#include
#include
#include
/*商品信息*/
structgoods{
intcode;//编号
charname[20];//商品名
charcompany[20];//生产公司名
doubleprice;//价格
charmodel[20];//型号
intsave;//库存数量
intsell;//订购数量
}infor[100]={{1,"iPhone7","美国苹果公司",5388,"32GB",10,0},{2,"朗文字典","朗文出版社",318,"第五版",10,0},{3,"手表","劳力士",54588,"蚝式恒动型",10,0},{4,"桌子","宜家",88,"2017夏季家居",10,0},{5,"杯子","特百惠",5388,"470ml",10,0}};
/*订购信息*/
structorder{
intcode;//编号
charname[20];//商品名
charcompany[20];//生产公司名
doubleprice;//价格
charmodel[20];//型号
intnumber;//订购数量
charaddress[20];//地址
}buy[5];
intOrdernum;//订购数量
intj,r=5;//用于比较的全局变量
intLast;//订购后剩余的库存
charaddress[41];//订购地址
voidmenu_main();//主菜单画面
voiduse();//普通用户画面
voidkey();//输入密码
voidadmin();//管理员画面
voidbuyfile();//建立订购文件
voidgoodsname();//通过商品名查询
voidgoodscode();//通过编号查询
voidbuygoods();//购买商品
voidaddaddress();//添加地址
voidadd();//管理员添加商品
voiddel();//管理员删除商品
voidchange();//管理员修改商品
voidoutputall();//输出所有商品
voidwritebuyfile();//写入订购信息
//主函数
intmain(){
//建立商品信息文件
FILE*fp;
inti;
if((fp=fopen("C:
\\Users\\Circle\\Desktop\\最高机密.txt","wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;i<5;i++)
if(fwrite(&infor[i],sizeof(structgoods),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
buyfile();
menu_main();
}
//主菜单
voidmenu_main(){
intn;
printf("\n");
printf("\t\t\t\t***************************************************\n");
printf("\t\t\t\t------------------商品订购系统---------------------\n");
printf("\t\t\t\t*请选择*\n");
printf("\t\t\t\t*1.普通用户*\n");
printf("\t\t\t\t*2.管理员*\n");
printf("\t\t\t\t*3.退出系统*\n");
printf("\t\t\t\t*请输入你的选择:
*\n");
printf("\t\t\t\t***************************************************\n");
printf("\n");
printf("\t\t\t\t");
scanf("%d",&n);
system("cls");
switch(n){
case1:
use();break;//选择普通用户
case2:
key();break;//选择管理员
case3:
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf("感谢使用本系统!
");
exit(0);
}
}
//输入密码函数
voidkey(){
charch1[]="12345";
charch2[10];
printf("\t\t\t\t---------------------请输入-------------------------\n");
printf("\n");
printf("\t\t\t\t请输入密码:
");
scanf("%s",ch2);
if(strcmp(ch1,ch2)!
=0){
printf("密码错误!
");
system("cls");
menu_main();
}else{
admin();
}
}
//创建购买文件函数
voidbuyfile(){
FILE*fp;
inti;
if((fp=fopen("C:
\\Users\\Circle\\Desktop\\订购.txt","wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;i<5;i++)
if(fwrite(&buy[i],sizeof(structorder),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
//用户函数
voiduse(){
intn;
printf("\t\t\t\t****************************************************\n");
printf("\t\t\t\t---------------------用户系统-----------------------\n");
printf("\t\t\t\t请选择\n");
printf("\t\t\t\t====================================================\n");
printf("\t\t\t\t*1.输入商品名查询*\n");
printf("\t\t\t\t*2.输入编号查询*\n");
printf("\t\t\t\t*3.输出所有商品的信息*\n");
printf("\t\t\t\t*4.返回上级菜单*\n");
printf("\t\t\t\t****************************************************\n");
scanf("%d",&n);
system("cls");
switch(n){
case1:
goodsname();break;
case2:
goodscode();break;
case3:
outputall();break;
case4:
menu_main();break;
}
}
//管理员函数
voidadmin(){
intn;
printf("\t\t\t\t****************************************************\n");
printf("\t\t\t\t****************************************************\n");
printf("\t\t\t\t--------------------管理员系统----------------------\n");
printf("\t\t\t\t请选择\n");
printf("\t\t\t\t====================================================\n");
printf("\t\t\t\t1.添加信息\n");
printf("\t\t\t\t2.删除信息\n");
printf("\t\t\t\t3.修改信息\n");
printf("\t\t\t\t4.返回上级菜单\n");
scanf("%d",&n);
switch(n){
case1:
add();break;
case2:
del();break;
case3:
change();break;
case4:
system("cls");menu_main();break;
}
}
//输入商品名查询
voidgoodsname(){
inti,k=0;
//k是比较的结果i控制循环
charstr[24],c3;
FILE*fp;
fp=fopen("C:
\\Users\\Circle\\Desktop\\最高机密.txt","r");
printf("\n请输入你要查找的名称:
");
scanf("%s",&str);
printf("\n您所查找的%s\n",str);
for(i=0;i{
fread(&infor[i],sizeof(structgoods),1,fp);
k=strcmp(infor[i].name,str);
if(k==0)
{
printf("%4d%-10s%-12s%9.2f%-5s%5d%4d\n",infor[i].code,infor[i].name,infor[i].model,infor[i].price,infor[i].company,infor[i].save,infor[i].sell);
r=r+1;
}
}
fclose(fp);
if(r!
=0){
printf("请按任意键选购,取消或产品不存在按ESC:
\n");
charc3=getch();
if(c3==27){
printf("\n");
printf("\n");
system("cls");
use();
}
else
buygoods();
}
}
//输入编号查询
voidgoodscode(){
inti,r=0;
inta;//输入的编号
FILE*fp;
fp=fopen("C:
\\Users\\Circle\\Desktop\\最高机密.txt","r");
printf("请输入要查找的商品编号(请勿输入不存在的编号):
\n\n");
scanf("%d",&a);
printf("您查找的是%d\n\n",a);
for(i=0;i<5;i++){
fread(&infor[i],sizeof(structgoods),1,fp);
if(infor[i].code==a){
printf("这就是你订购的商品:
\n\n");
printf("%4d%-10s%-12s%9.2f%-5s%5d%4d\n",infor[i].code,infor[i].name,infor[i].model,infor[i].price,infor[i].company,infor[i].save,infor[i].sell);
r++;
}
}
fclose(fp);
if(r!
=0){
printf("请按任意键选购,取消按ESC:
\n");
charc3=getch();
if(c3==27){
printf("\n");
printf("\n");
system("cls");
use();
}
else
buygoods();
}
}
//输入编号订购
voidbuygoods(){
inti,r=0;
inta;
charch;
FILE*fp;
fp=fopen("最高机密.txt","rb");
outputall();
printf("\n请输入您想订购商品的编号(请勿输入不存在的编号):
\n\n");
scanf("%d",&a);
for(i=0;ifread(&infor[i],sizeof(structgoods),1,fp);
if(infor[i].code==a){
printf("这就是你新购买的商品:
\n\n");
printf("%4d%-15s%-12s%9.2f\t%-5s%5d%4d\n\n",infor[i].code,infor[i].name,infor[i].model,infor[i].price,infor[i].company,infor[i].save,infor[i].sell);
r=r+1;
Ordernum=i;
j=i;
break;
}
}
fclose(fp);
Last=infor[a].save-infor[a].sell;
if(Last!
=0){
printf("还剩%d件,请输入您的订购数量:
\n\n",Last);
scanf("%d",&buy[j].number);
if(buy[j].number>=0&&buy[j].number<=(infor[Ordernum].save-infor[Ordernum].sell)){
addaddress();
}
else{
printf("您填写的数量有误,请重新购买\n\n");
use();
}
}
}
//添加地址函数
voidaddaddress(){
charch;
printf("请输入邮寄地址:
\n\n");
scanf("%s",&address);
printf("您的地址是:
%s\n\n",address);
printf("确认请按任意键,重输请按ESC\n\n");
ch=getch();
printf("\n");
if(ch!
=27)
printf("您已成功订购!
谢谢使用!
\n\n");
voidwritebuyfile();
use();
}
voidadd(){
inti;
printf("请输入添加的产品信息:
\n");
printf("编号名字生产商价格型号库存数量订购数量\n");
scanf("%d%s%s%lf%s%d%d",&infor[r].code,infor[r].name,infor[r].company,&infor[r].price,infor[r].model,&infor[r].save,&infor[r].sell);
r++;
FILE*fp;
if((fp=fopen("C:
\\Users\\Circle\\Desktop\\最高机密.txt","wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;iif(fwrite(&infor[i],sizeof(structgoods),1,fp)!
=1)
printf("filewriteerror\n");
}
printf("商品添加成功!
\n");
fclose(fp);
admin();
}
voiddel(){
system("cls");
inti,j;
printf("请输入删除的商品名:
\n");
scanf("%d",&j);
for(i=0;iif(infor[i].code==j){
infor[i].code=0;
}
}
FILE*fp;
if((fp=fopen("C:
\\Users\\Circle\\Desktop\\最高机密.txt","wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;iif(infor[i].code!
=0){
if(fwrite(&infor[i],sizeof(structgoods),1,fp)!
=1)
printf("filewriteerror\n");
}
}
printf("商品删除成功!
");
fclose(fp);
admin();
}
voidchange(){
system("cls");
charch;
charcompany[20],model[100];
inti,j,code,price,save,sell;
printf("请输入要修改的产品编号:
\n");
scanf("%d",&j);
for(i=0;iif(infor[i].code==j){
printf("商品编号:
%d\n商品名称:
%s\n生产商:
%s\n商品单价:
%d\n商品型号:
%s\n库存数量:
%d\n已经订购数量:
%d\n",
infor[i].code,infor[i].name,infor[i].company,infor[i].price,infor[i].model,infor[i].save,infor[i].sell);
printf("请输入您想修改的商品的一条信息:
(1.生产商2.价格3.型号4.库存5.已经订购数量)\n");
getchar();
scanf("%c",&ch);
switch(ch){
case'1':
printf("请输入商品生产商:
");scanf("%s",&company);strcpy(infor[i].company,company);break;
case'2':
printf("请输入商品单价:
");scanf("%d",&price);infor[i].price=price;break;
case'3':
printf("请输入商品型号:
");getchar();scanf("%s",&model);strcpy(infor[i].model,model);break;
case'4':
printf("请输入商品库存:
");getchar();scanf("%d",&save);infor[i].save=save;break;
case'5':
printf("请输入商品已经订购数量:
");scanf("%d",&sell);infor[i].sell=sell;break;
}
}
}
FILE*fp;
if((fp=fopen("C:
\\Users\\Circle\\Desktop\\最高机密.txt","wb"))==NULL)
{
pr