您的位置:首页 > 编程语言 > C语言/C++

C语言一个简单的商店管理系统

2008-06-09 20:35 741 查看
/*数据结构:*/
struct shangpin
{
char name[100];
char bianhao;
float jinjia;
float shoujia;
int kuchun;
struct shangpin *next;
}
/*主模块:*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define LEN sizeof(struct shangpin)
main()
{
struct shangpin * ins(struct shangpin *);
struct shangpin * del(struct shangpin *);
void quer(struct shangpin *);
void disp(struct shangpin *);
void savef(struct shangpin *);
void quit(struct shangpin *);
void menu(void);
struct shangpin* init(struct shangpin*);
struct shangpin *head=NULL;
int cho;head=init(head);

while(1)
{
menu();
do
{
printf("please input selection:");
scanf("%d",&cho);

}while(cho<1||cho>6);
switch(cho)
{
case 1:head=ins(head);break;
case 2:head=del(head);break;
case 3:quer(head);break;
case 4:disp(head);break;
case 5:savef(head);break;
case 6:quit(head);
}
}
}

/*初始化模块*/
struct shangpin* init(struct shangpin* head)
{
FILE *fp; /*文件指针*/
struct shangpin *prev,*cur;
if((fp=fopen("aaa.txt","r"))==NULL) /*打开失败*/
{
printf("can't open file aaa.txt\n");
getch();
return 0;

}
if(feof(fp))
return(NULL);
cur=(struct shangpin *)malloc(LEN);
fscanf(fp,"%s%c%f%f%d",cur->name,&cur->bianhao,&cur->jinjia,&cur->shoujia,&cur->kuchun);
head=cur;
prev=cur;
while(!feof(fp))
{
cur=(struct shangpin *)malloc(LEN);
fscanf(fp,"%s%c%f%f%d",cur->name,&cur->bianhao,&cur->jinjia,&cur->shoujia,&cur->kuchun);
prev->next=cur;
prev=cur;
}
prev->next=NULL;
return(head);
}
/*菜单模块*/
void menu(void)
{
void pristr(void);
clrscr(); /*清屏*/
pristr();
pristr();
printf(" shangpin C manage system \n\n\n");
printf(" 1: insert a shangpin\n");
printf(" 2: delete a shangpin\n");
printf(" 3: find a shangpin\n");
printf(" 4: display all shangpin\n");
printf(" 5: save record\n");
printf(" 6: exit system\n");

pristr();
pristr();
printf("\n\n\n");
}
void pristr(void)
{
printf("-*-*-*-*-*-*=*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
}

/*录入模块*/
struct shangpin * ins(struct shangpin *head)
{
struct shangpin *newn,*t1;
newn=(struct shangpin *)malloc(LEN);
printf("please input the shangpin's information \n");
scanf("%s%c%f%f%d",newn->name,&newn->bianhao,&newn->jinjia,&newn->shoujia,&newn->kuchun);
if(head==NULL)
{
head=newn;
newn->next=NULL;
}
else
{
t1=head;
while(t1->next!=NULL)
t1=t1->next;
t1->next=newn;
newn->next=NULL;
}
return(head);
}
/*删除模块*/
struct shangpin * del(struct shangpin *head)
{
struct shangpin *prev,*cur;
char name[100];
int flag=0;
printf("\nplease input the name:");
scanf("%s",name);
if(head==NULL)
printf("empry chat\n");
else if(strcmp(head->name,name)==0)
{
cur=head;
head=head->next;
free(cur);
flag=1;
}
else
{
cur=head->next;
prev=head;
while(cur!=NULL)
if(strcmp(cur->name,name)==0)
{
prev->next=cur->next;
free(cur);
flag=1;
break;

}
else
{
prev=cur;
cur=cur->next;
}
}
if(flag==1)
printf("\nthe node is deleted\n");
else
printf("\n the node is not existed\n");
getch();
return(head);
}

/*查询模块*/
void quer(struct shangpin *head)
{
struct shangpin *t=head;
char name[100];
int flag=0;
printf("\nplease input the name:");
scanf("%s",name);
while(t!=NULL)
if(strcmp(t->name,name)==0)
{
flag=1;
break;

}
else
t=t->next;
if(flag==1)
{
printf("the node is found\n");
printf("name:%s,bianhao:%c,jinjia:%f,shoujia:%f,kuchun:%d\n",t->name,t->bianhao,t->jinjia,t->shoujia,t->kuchun);
}
else
printf(" the node is no found\n");
getch();
}

/*显示模块*/
void disp(struct shangpin *head)
{
struct shangpin *t1;
if(head==NULL)
{
printf("empty chart\n");
getch();
return;
}
else
{
for(t1=head;t1!=NULL;t1=t1->next)
printf("%s,%c,%f,%f,%d",t1->name,t1->bianhao,t1->jinjia,t1->shoujia,t1->kuchun);
getch();

}
}

/*存盘模块*/
void savef(struct shangpin *head)
{
char s[100];
FILE *fp;
struct shangpin *node=head;
printf("please input file name:\n");
scanf("%s",s);
if((fp=fopen(s,"w"))==NULL)
{
printf("can't open file\n");
getch();
return;
}
while(node!=NULL)
{
fprintf(fp,"%s,%c,%f,%f,%d",node->name,node->bianhao,node->jinjia,node->shoujia,node->kuchun);
node=node->next;
}
fclose(fp);
}

/*退出模块*/
void quit(struct shangpin *head)
{
char c;
printf("save the result,y or n?\n");
scanf(" %c",&c);
if(c=='y')
savef(head);
printf("now exit the manage system\n");
getch();
exit(0);
}

注:这个程序还有一个错误,可是我不知道怎么弄了,很久没有写C语言程序了,有一年多了,很多都不记得了,还请高手指导一两……

附件:http://down.51cto.com/data/2350076
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言 系统 管理