课程设计

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define PR printf
#define SC scanf

struct goods/定义结构体数组存放数据/
{
long int num;
char name[20];
char sort[20];
long int count;
long int price;
}goods[200],good[200];
int k,n,i;

void input(struct goods *p,struct goods *q); /添加商品/
void dele(struct goods *p,struct goods *q); /删除商品/
void correct(struct goods *p);/修改数据函数/
void search();/查询函数/
void namesearch(struct goods *L);/按名查询函数/
void numsearch(struct goods *L);/按号查询函数/
void reread(struct goods *L);/将文件内容读入结构体数组/
void rewrite(struct goods *L);/将结构体数组输出到文件中/
void all(struct goods *L);/输出所有商品信息/

int main ()
{
PR("\n******************************************************************\n*\t\t\t\t\t\t\t\t \n");
PR("\n \t\t\t\t\t\t\t\t \n * Welcome to go into \n");
PR("\n \t\t\t\t\t\t\t\t \n * the Goods Information Manageaent System \n");
PR("\n
***********************************************************");
PR("\n\n\tPlease press any key to continue:");
system(“cls”); /清屏/
lp: for(i=0;i<1;i++)
reread(goods);/将文件内容读入结构体数组中/
PR("\n\t\t\t商品信息管理系统\t\n\n");
PR(“1→输入商品信息\n\n”);
PR(“2→删除商品\n\n”);
PR(“3→修改商品信息\n\n”);
PR(“4→查询商品信息\n\n”);
PR(“5→统计输出所有商品信息\n\n”);
PR("\t\t---------------------------");/菜单选择界面/
PR("\n\n");
PR("\t请选择您所要的操作(或选择(0)退出)😊;
SC("%d",&k);
system(“cls”);
switch(k) /用switch语句实现功能选择/
{
case 1: input(goods,good);break;
case 2: dele(goods,good);break;
case 3: correct(goods);break;
case 4: search();break;
case 5: all(goods);break;
case 0: PR("\n\n\t / / / / / _ \ \ \ \ \ \n\n\t…………谢谢使用,欢迎再来,再见O(∩_∩)O…………");exit(0);/退出系统/
default: puts(“输入错误,请按任意健返回主菜单:\n”);break;
}
system(“cls”); /清屏/
goto lp; /返回主界面/
}

void input(struct goods *p,struct goods q) /功能:输入新商品/
{
PR("\n 请输入需要建立新库存的商品种类数量:");
SC("%d",&n);
system(“cls”);
PR("\n …………………………………………………………………………………………………\n");
for(i=0;i<n;i++) /用循环实现输入n个商品/
{
PR("\n\t
请输入商品的编号:");
SC("%ld",&((q+i)->num));
PR("\n\t请输入商品的名称:");
SC("%s",((q+i)->name));
PR("\n\t请输入商品的种类:");
SC("%s",((q+i)->sort));
PR("\n\t请输入商品的数量:");
SC("%d",&((q+i)->count));
PR("\n\t请输入商品的单价:");
SC("%d",&((q+i)->price));
PR("\n …………………………………………………………………………………………………\n");
}
FILE *fp;
fp=fopen(“goods.dat”,“ab+”);
if(fp==NULL){
printf(“文件打开错误!\n”);
exit(1);
}
fwrite(q,sizeof(struct goods),n,fp);
fclose(fp);
reread§;
PR("\tPlease press any key to continue:");
getch();
/返回主菜单/
}

void dele(struct goods *p,struct goods *q) /功能2:删除商品信息/
{ /goods good/
long int i,j;
int a;
printf("\n请输入需要删除的商品种类数量:");
scanf("%d",&n);
for(int k=0;k<n;k++) /用循环实现删除n个商品/
{
printf(“按名称删除商品信息输入1,按编号删除商品信息输入2: “);
scanf(”%d”,&a);
switch(a){
case 1:
char name1[20];
printf("请输入所要删除商品的名称: ");
getchar();
gets(name1);
for(i=0;i<200;i++){
if(!strcmp((p+i)->name,name1)){
break;
}
}
if(i200) {
printf(“输入名称错误\n”);
break;
}
else {
printf(“开始删除\n”);
for(j=0;j<200;j++){
if(j<i){
(q+j)->num=(p+j)->num;
strcpy(((q+j)->name),((p+j)->name));
strcpy(((q+j)->sort),((p+j)->sort));
(q+j)->count=(p+j)->count;
(q+j)->price=(p+j)->price;
}else if(j
i) {
continue;
}else if(j>i){
(q+j-1)->num=(p+j)->num;
strcpy(((q+j-1)->name),((p+j)->name));
strcpy(((q+j-1)->sort),((p+j)->sort));
(q+j-1)->count=(p+j)->count;
(q+j-1)->price=(p+j)->price;
}
}
}
rewrite(q);
reread§;
printf(“删除成功\n”);
break;
case 2:
long int y;
printf(“请输入所删除商品的编号: “);
scanf(”%ld”,&y);
for(i=0;i<200;i++){
if(((p+i)->num)y){
break;
}
}
if(i
200) {
printf(“输入编号错误\n”);
break;
}
else {
printf(“开始删除\n”);
for(j=0;j<200;j++){
if(j<i){
(q+j)->num=(p+j)->num;
strcpy(((q+j)->name),((p+j)->name));
strcpy(((q+j)->sort),((p+j)->sort));
(q+j)->count=(p+j)->count;
(q+j)->price=(p+j)->price;
}else if(j==i) {
continue;
}else if(j>i){
(q+j-1)->num=(p+j)->num;
strcpy(((q+j-1)->name),((p+j)->name));
strcpy(((q+j-1)->sort),((p+j)->sort));
(q+j-1)->count=(p+j)->count;
(q+j-1)->price=(p+j)->price;
}
}
}
rewrite(q);
reread§;
printf(“删除成功\n”);
break;
default:
printf(“输入错误\n”);
}
}
PR(“Please press any key to continue:”);
getch();
/返回主界面/
}

void correct(struct goods *p) /功能3:修改商品信息/
{
system(“cls”);
qd: long int y;
PR("\n\t请输入要修改的商品的编号:");
SC("%ld",&y);
PR("\n");
for(i=0;i<200;i++){
if(((p+i)->num)y){
break;
}
}
if(i
200) {
printf(“输入编号错误,请重新输入\n”);
goto qd;
}else{
printf("\n\t商品编号 商品名称 商品种类 商品库存 商品价格");
printf("\n\t%8ld%8s%8s%8ld%8ld\n",(p+i)->num,(p+i)->name,(p+i)->sort,(p+i)->count,(p+i)->price);
}
PR(“1→修改商品编号\n”);
PR(“2→修改商品名称\n”);
PR(“3→修改商品种类\n”);
PR(“4→修改商品库存\n”);
PR(“5→修改商品价格\n”);
PR("\t请选择您所要的操作:");
scanf("%d",&k);

switch(k) /用switch语句实现功能选择/
{
case 1:
PR(“输入修改后的商品编号:”);
scanf("%ld",&((p+i)->num)) ;
break;
case 2:
PR(“输入修改后的商品名称:”);
getchar();
gets((p+i)->name) ;
break;
case 3:
PR(“输入修改后的商品类别:”);
getchar();
gets((p+i)->sort) ;
break;
case 4:
PR(“输入修改后的商品库存:”);
scanf("%ld",&((p+i)->count)) ;
break;
case 5:
PR(“输入修改后的商品价格:”);
scanf("%ld",&((p+i)->price)) ;
break;
default: printf(“输入错误”);break;
}
rewrite§;
reread§;
printf("\n\t商品编号 商品名称 商品种类 商品库存 商品价格");
printf("\n\t%8ld%8s%8s%8ld%8ld\n",(p+i)->num,(p+i)->name,(p+i)->sort,(p+i)->count,(p+i)->price);
printf(“修改成功\n”);
PR(“Please press any key to continue:”); /返回功能选择界面/
getch();
/返回主菜单/
}

void search(){
void namesearch(struct goods *L);
void numsearch(struct goods *L);
printf(“按名称查找商品信息输入1,按编号查找商品输入2,结束查找输入3: “);
int a;
while(scanf(”%d”,&a)!=EOF){
if(a==3) break;
switch(a){
case 1:
namesearch(goods);
break;
case 2:
numsearch(goods);
break;
default:
printf(“输入错误\n”);
}
printf("\n按名称查找商品信息输入1,按编号查找商品输入2,结束查找输入3: ");
}

}

void namesearch(struct goods *L){//按名称查找商品信息
char name[20];
int i;
printf(“请输入所查询商品的名称:”);
getchar();
gets(name);
for(i=0;i<200;i++){
if(!strcmp((L+i)->name,name)){
break;
}
}
if(i200) printf(“输入名称错误\n”);
else {
printf("\n\t商品编号 商品名称 商品种类 商品库存 商品价格");
printf("\n\t%8ld %8s %8s %8ld %8ld\n",(L+i)->num,(L+i)->name,(L+i)->sort,(L+i)->count,(L+i)->price);
}
}
void numsearch(struct goods *L){//按编号查找商品信息
long long n;
int i;
printf(“请输入所查询商品的编号:”);
scanf("%ld",&n);
for(i=0;i<200;i++){
if((L+i)->num
n){
break;
}
}
if(i==200) printf(“输入编号错误\n”);
else {
printf("\n\t商品编号 商品名称 商品种类 商品库存 商品价格");
printf("\n\t%8ld%8s%8s%8ld%8ld\n",(L+i)->num,(L+i)->name,(L+i)->sort,(L+i)->count,(L+i)->price);
}
}
void reread(struct goods *p){

memset(p,0,200*sizeof(p));

FILE *fp; 
fp=fopen("goods.dat","rb");
if(fp==NULL){
	printf("文件打开错误!\n");
	exit(1);
}
fread(p,sizeof(struct goods),200,fp);
fclose(fp);

}
void rewrite(struct goods *p){
int l,len=0;
for(l=0;(p+l)->num!=0;l++){
len++;
};
FILE *fp;
fp=fopen(“goods.dat”,“wb”);
if(fp==NULL){
printf(“文件打开错误!\n”);
exit(1);
}
fwrite(p,sizeof(struct goods),len,fp);
fclose(fp);
}
void all(struct goods *L){
printf("\n\t商品编号 商品名称 商品种类 商品库存 商品价格");
for(int l=0;(L+l)->num!=0;l++){
printf("\n\t%8ld %8s %8s %8ld %8ld\n",(L+l)->num,(L+l)->name,(L+l)->sort,(L+l)->count,(L+l)->price);
}
PR(“Please press any key to continue:”);
getch();
/返回主界面/
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值