编译是显示一个错误Cannot open include file: 'stdafx.h': No such, file or directory,如何修改

qq_38698399 2017-05-08 04:00:46
#include<stdio.h>
#include<stdafx.h>
#include<string.h> //调用字符串函数头文件
#include<stdlib.h> //链表头文件
void showMenu()
{
printf("********************************************\n");
printf("*************欢迎使用自动贩卖机*************\n");
printf("*1.饮料类------------------------***********\n");
printf("*2.零食类------------------------***********\n");
printf("*3.香烟类------------------------***********\n");
printf("*4.商品管理----------------------***********\n");
printf("*5.退出--------------------------***********\n");
printf("********************************************\n");
printf("请输入商品种类(用户)或商品管理(管理员):\n");
}
void showManageMenu()
{
char usr[10];
char psd[10];
while(l) //判断用户名和密码
{
printf("请输入用户名:\n");
scanf("%s",usr);
printf("请输入密码:\n");
scanf("%s",psd);
if(strcmp,(usr,"admin")!=0 || strcmp,(psd,"1234")!=0)
{
printf("您输入的用户名或密码错误,请重新输入!");
}
else
{
break;
}
}
int select;
int u_id=0;int u_price = 0;
int d_id = 0;
GOODS newGoods;
while(l)
{
printf("*******************************************\n");
printf("***************商品后台管理系统************\n");
printf("*1.新增商品----------------------**********\n");
printf("*2.价格修改----------------------**********\n");
printf("*1.删除商品----------------------**********\n");
printf("*1.返回--------------------------**********\n");
printf("*******************************************\n");
printf("请选择功能:\n");
scanf("%d",&select);
switch(select)
{
case 1:
//新增商品
printf("请输入商品种类(1:饮料,2:零食,3:香烟):");
scanf("%d",&newGoods.type)
printf("请输入商品ID:");
scanf("%d",&newGoods.id);
printf("请输入商品名称:");
scanf("%s",newGoods.name);
printf("请输入商品介绍:");
scanf("%s",newGoods.introduce);
printf("请输入商品数量:");
scanf("%d",&newGoods.amount);
printf("请输入商品单价:");
scanf("%d",&newGoods.price);
//新增一个类型商品
addNewGoodsTolist(newGoods);
break;
case 2:
//价格修改
printf("请输入修改商品的ID:");
scanf("%d",&u_id);
printf("请输入商品的最新单价:");
scanf("%d",&u_price);
updateGoodsInfo(int u_id,int u_price);//修改商品价格
break;
case 3:
//删除商品
printf("请输入删除商品的ID:");
scanf("%d",&d_id);
deleteDataById(int d_id);
break;
case 4:
//返回上级菜单
break;
default:
break;
}
if(select=4)
{
break;
}
}
}

void showBuyGoodsInfo()
{
int id = 0;
int amount = 0;
int flag = 0;
while(1)
{
printf("请输入购买商品的编号(1:退出):");
scanf("%d",&id);
if (id == -1)
{
break;
}
printf("请输入商品的数量:");
scanf("%d",&amount);
flag = buyGoods(id,amount);
if (flag == 0)
{
break;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int select;

head = initList();

while (1)
{
showMenu();

scanf("%d",&select);
switch(select)
{
case 1:
case 2:
case 3:
searchGoods(select);
showBuyGoodsInfo();
break;
case 4://管理员管理商品页面
showManageMenu();
break;
case 5:
destoryList();
exit(0);
break;
default:
break;
}
}
return 0;
}








typedef struct _goods
{
int type; //商品种类
int id; //商品唯一标示
char name[30]; //商品名称
char introduce[100]; //商品介绍
int amount; //商品数量
int price; //商品价格
struct _goods* next;
}GOODS;

extern GOODS* headL;
//新建链表-初始化商品
GOODS* initList();
//新增商品
void addNewGoodsTolist(GOODS newGoods);
//根据id删除商品
void deleteDataById(int d_id);
//根据编号id来修改商品的价格
void updateGoodsInfo(int u_id,int u_price);
//根据种类查询商品并显示
int searchGoods(int searchType);
//根据商品编号和数量购买商品
int buyGoods(int b_id,int b_amount)
//释放
int destoryList()







GOODS* head = NULL;

//新建链表-初始化商品
GOODS* initList()
{
GOODS* myHead = (GOODS*)malloc(sizeof(GOODS));
if(myHead == NULL)
{
return NULL;
}
else
{
memset(myHead,'\0',sizeof(GOODS));
myHead->next = NULL;
return myHead;
}
}

void showhead()
{
printf("------------------------------------------------------------------------\n");
printf("|类型|ID |商品名称 |商品介绍 |商品数量|商品单价|\n");
printf("------------------------------------------------------------------------\n");
}

//新增商品
void addNewGoodsTolist(GOODS newGoods)
{
GOODS* tmpGoods;
GOODS* currentGoods = head;

tmpGoods = (GOODS*)malloc(sizeof(GOODS));
if(tmpGoods == NULL)
{
printf("内存开辟失败!\n");
}
else
{
memcpy(tmpGoods,&newGoods,sizeof(GOODS));
tmpGoods->next = NULL;
while(currentGoods->next !=NULL)
{
currentGoods = currentGoods->next;
}
currentGoods->next = tmpGoods;
printf("恭喜,新增成功!\n");

headShow();
printf("|%-4d|%-3d|%-12s|%-30s|%-8d|%-8d|\n",tmpGoods->type,tmpGoods->id,tmpGoods->name,tmpGoods->introduce,tmpGoods->amount,tmpGoods->price);
}
}


//根据id删除商品
void deleteDataById(int id)
{
GOODS* tmpGoods = head->next;
GOODS* preGoods = NULL;
int isExist = -1; //不存在

while(tmpGoods!=NULL)
{
if(tmpGoods->id ==id)
{
if(tmpGoods == head->next)
{
head->next == tmpGoods->next;
free(tmpGoods);
tmpGoods = NULL;
}
else{
preGoods->next = tmpGoods->next;
free(tmpGoods);
tmpGoods = NULL;
}
printf("恭喜,删除成功!\n");
isExist = 0; //数据存在
break;
}
preGoods = tmpGoods;
tmpGoods = tmpGoods->next;
}
if (isExist = -1)
{
printf("抱歉,该商品不存在!");
}
}


//根据编号id来修改商品的价格
void updateGoodsInfo(int u_id,int u_price)
{
GOODS* tmpGoods = head->next;
int isExist = -1;

while (tmpGoods! =NULL)
{
if (tmpGoods->id == u_id)
{
tmpGoods->price = u_price;
printf("恭喜,修改成功!\n");
isExist = 0;
headShow();
printf("|%-4d|%-3d|%-12s|%-30s|%-8d|%-8d|\n",tmpGoods->type,tmpGoods->id,tmpGoods->name,tmpGoods->introduce,tmpGoods->amount,tmpGoods->price);
}
tmpGoods= tmpGoods->next;
}
if (isExist = -1)
{
printf("抱歉,该商品不存在!\n")
}
}


//根据种类查询商品并显示
int searchGoods(int searchType)
{
GOODS* tmpGoods = head->next;
int isExist = -1;
if (searchType == 1||searchType == 2||searchType == 3)
{
headShow();
while (tmpGoods!=NULL)
{
if (tmpGoods->type == searchType)
{
printf("|%-4d|%-3d|%-12s|%-30s|%-8d|%-8d|\n",tmpGoods->type,tmpGoods->id,tmpGoods->name,tmpGoods->introduce,tmpGoods->amount,tmpGoods->price);
isExist = 0;
}
tmpGoods = tmpGoods->next;
}
}
else
{
printf("输入的商品有误,请重新输入!");
return -2;
}
if (isExist == -1)
{
printf("抱歉,商品为空!\n")
return -1;
}
return 0;
}


//根据商品编号和数量购买商品
int buyGoods(int b_id,int b_amount)
{
GOODS* tmpGoods = head->next;
int isExist = -1;
while (temGoods!=NULL)
{
if (tmpGoods->id == b_id)
{
if (tmpGoods->amount == b_amount)
{
tmpGoods->amount -= b_amount;
isExist = 0;
}
else
{
printf("抱歉,商品数量不足!\n");
return -2;
}
}
tmpGoods=tmpGoods->next;
}
if (isExist == -1)
{
printf("抱歉,该商品不存在!\n")
return -1;
}
printf("恭喜,购买成功!\n")
return 0;
}


//释放
int destoryList()
{
GOODS* tmpGoods = NULL;

if (head == NULL)
{
return 0;
}
else
{
while(head!=NULL)
{
tmpGoods = NULL;
head = head->next;
free(tmpGoods);
tmpGoods = NULL;
}
}
}
...全文
832 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2017-05-09
  • 打赏
  • 举报
回复
最前面加上:#include "stdafx.h"
幻夢之葉 2017-05-08
  • 打赏
  • 举报
回复
你的代码是复制过来的? 这个头文件是VS创建项目的时候选择了预编译头文件选项自动增加的 如果你程序不是在VS下或者是没有选择预编译头文件选项,那就把这句代码删除即可
starytx 2017-05-08
  • 打赏
  • 举报
回复
试试这样,并且放在第一个包含的位置 #include "stdafx.h"
编译头文件今天在改一个很大的程序,慢慢看,慢慢改。突然发现一个.c文件,里面什么也没有,就几个头文件,我一看,我靠,这不是把简单的问题搞复杂了吗,随手删掉那个c文件。结果不能编译了,我靠:fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\':No such file or directory怎么rebuild all都不行。上网查了一下,才搞懂了:----------------总结------如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么1。把这些头文件全部写到一个头文件里面去,比如写到preh.h2。写一个preh.c,里面只一句话:#include "preh.h"3。对于preh.c,在project setting里面设置creat precompiled headers,对于其他.c文件,设置use precompiled header file//哈哈我试了一下,效果很明显,不用precompiled header,编译一次我可以去上个厕所,用precompiled header,编译的时候,我可以站起来伸个懒腰,活动活动就差不多啦---------转载的文章----------预编译头的概念:所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的C/C++代码--------甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。注意生成预编译头文件是很耗时间的。同时你得注意预编译头文件通常很大,通常有6-7M大。注意及时清理那些没有用的预编译头文件。也许你会问:现在的编译器都有Time stamp的功能,编译器在编译整个工程的时候,它只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过的文件。那么为什么还要预编译头文件呢?答案在这里,我们知道编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东西(.eg Macro, Preprocesser )都要重新处理一遍。VC的预编译头文件保存的正是这部分信息。以避免每次都要重新处理这些头文件。预编译头的作用:根据上文介绍,预编译头文件的作用当然就是提高便宜速度了,有了它你没有必要每次都编译那些不需要经常改变的代码。编译性能当然就提高了。预编译头的使用:要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个编译头文件(.pch文件)想必大家都知道 StdAfx.h这个文件。很多人都认为这是VC提供的一个“系统级别”的,编译器带的一个头文件。其实不是的,这个文件可以是任何名字的。我们来考察一个典型的由AppWizard生成的MFC Dialog Based 程序的预编译头文件。(因为AppWizard会为我们指定好如何使用预编译头文件,默认的是StdAfx.h,这是VC起的名字)。我们会发现这个头文件里包含了以下的头文件:#include // MFC core and standard components#include // MFC extensions#include // MFC Automation classes#include // MFC support for Internet Explorer 4Common Controls#include

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧