user-0 提问: 求解商品管理系统

回复:
user: user-0
content: 怎么删帖啊，我想删除这个贴

user: user-1
content: #include<stdio.h>  #include<string.h>  #include<stdlib.h>  #include<conio.h>   #define max 20   typedef struct student    //学生  {  char sno[max]; // 学号  char sname[max];  //姓名  char sex[max];   //性别  char age[max];  //年龄  char depart[max];  //系  char classs[max];  //班  char grade[max]; //年级   struct student* next;  } student;   student* head;    int LogOn()  //登录模块，已实现输入密码不回显，如果中途发现输错某几位，可退格键重输  {  char username[max],password[max];  printf("\n请输入用户名:");  scanf("%s",username);  printf("\n请输入密码(最多15位):");   //开始以不回显且支持退格方式获取输入密码  int i=0;  while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围  {  if(password[i-1]=='\b')//对退格键的处理  {  printf("%c%c%c",'\b','\0','\b');  i=i-2;  }  else  printf("*");  }  password[--i]='\0';   //已获取密码。验证用户身份  if(!strcmp(username,"root")&&!strcmp(password,"123456"))  {  printf("\n登录成功!");  return 1;  }  else    return 0;   }   void regist()  {  char ch;  student *s,*ptr;  //s用来建新结点，ptr用来暂存头结点   do  {       s=(student*)malloc(sizeof(student)); // 新建一个学生结点        printf("\n开始注册...");            //开始注册      printf("\n请输入该学生的学号:");      scanf("%s",s->sno);      printf("\n请输入该学生的姓名:");      scanf("%s",s->sname);      printf("\n请输入该学生的性别:");      scanf("%s",s->sex);         printf("\n请输入该学生的年龄:");      scanf("%s",s->age);      printf("\n请输入该学生的系:");      scanf("%s",s->depart);      printf("\n请输入该学生所在的班:");      scanf("%s",s->classs);      printf("\n请输入该学生所在的年级");      scanf("%s",s->grade);   ptr=head;  head=s;//将新结点插入队头  s->next=ptr;   fflush(stdin);  printf("\n请问是否继续注册?(Y/N)");  scanf("%c",&ch);  }while(ch=='Y'||ch=='y');   return;  }   void ElePrint(char str[])  //输出单个元素  {  if(str==NULL) exit(0);  printf("%s",str);  unsigned  int i; for( i=0;i<12-strlen(str);i++) printf(" ");//为了对齐输出，需插入一些空格  return;  }   int LinePrint(student *ptr) //输出一行  {  if(ptr==NULL)  //检查传进来的指针  return 0;   printf("\n");  ElePrint(ptr->sno);  ElePrint(ptr->sname);  ElePrint(ptr->age);  ElePrint(ptr->sex);  ElePrint(ptr->depart);  ElePrint(ptr->classs);  ElePrint(ptr->grade);   return 1;  }   void print()  //输出全部学生信息  {  student *ptr=head;  printf("\n学号        姓名        年龄        性别        系          班          年级        ");  while(ptr)  {  LinePrint(ptr);  ptr=ptr->next;  }  printf("\n");  return;  }  void search()//查询模块  {  int method;//查询方式  char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字  while(1)  {  printf("\n请选择查询方式");      printf("\n1.按学号查询");   printf("\n2.按姓名查询");      printf("\n3.按所在系查询");      printf("\n4.按所在班级查询");      printf("\n5.按所在年级查询");  printf("\n6.打印全部学生信息");      printf("\n7.返回主菜单\n");       scanf("%d",&method);       student *p=head,*temp;       switch(method)  {         case 1:      printf("\n请输入要查询的学号:");     scanf("%s",no);         while(p)     {     if(!strcmp(p->sno,no))     break;     else     {     temp=p;     p=p->next;     }     }     printf("\n学号        姓名        年龄        性别        系          班          年级        ");     LinePrint(p);     break;     case 2:     printf("\n请输入要查询的姓名:");     scanf("%s",name);     printf("\n学号        姓名        年龄        性别        系          班          年级        ");     while(p)     {     if(!strcmp(p->sname,name))     LinePrint(p);          p=p->next;     }     break;     case 3:     printf("\n请输入学生所在的系:");     scanf("%s",departm);     printf("\n学号        姓名        年龄        性别        系          班          年级        ");     while(p)     {     if(!strcmp(p->depart,departm))     LinePrint(p);     p=p->next;     }     break;     case 4:     printf("\n请输入学生所在的班:");     scanf("%s",clss);     printf("\n请输入学生所在的年级:");          scanf("%s",grades);          printf("\n学号        姓名        年龄        性别        系          班          年级        ");     while(p)     {     if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))     LinePrint(p);     p=p->next;     }     break;          case 5:     printf("\n请输入学生所在的年级:");     scanf("%s",grades);     printf("\n学号        姓名        年龄        性别        系          班          年级        ");     while(p)     {     if(!strcmp(p->grade,grades))     LinePrint(p);     p=p->next;     }     break;      case 6:     print();     break;          case 7:     return;     default:     printf("很抱歉，暂无此查询方式!");     break;  }  }   }   void modify()//修改学生信息  {  char num[max];  student *p=head;  printf("\n请输入要修改的学生的学号:");  scanf("%s",num);  while(p)  {  if(!strcmp(p->sno,num))  break;  else  p=p->next;  }  if(p==NULL)  {  printf("\n错误：没有此学生的信息!\n");  return;   }  LinePrint(p);   printf("\n请输入要修改的该学生的信息:");  printf("\n1.姓名");  printf("\n2.性别");  printf("\n3.年龄");  printf("\n4.所在的系");  printf("\n5.所在的班");  printf("\n6.所在的年级");   char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];  int select;  fflush(stdin);  scanf("%d",&select);  printf("\n请输入新的信息:");   switch(select)  {  case 1:  scanf("%s",name1);  strcpy(p->sname,name1);  break;  case 2:  scanf("%s",sex1);  strcpy(p->sex,sex1);  break;  case 3:  scanf("%s",age1);  strcpy(p->age,age1);  break;  case 4:  scanf("%s",depart1);  strcpy(p->depart,depart1);  break;  case 5:  scanf("%s",class1);  strcpy(p->classs,class1);  break;  case 6:  scanf("%s",grade1);  strcpy(p->grade,grade1);  break;  default:  printf("\nError!");  break;  }   LinePrint(p);  return;  }    void del()// 删除某学生的信息  {  student *p=head,*temp=head,*s;  char num1[max];  printf("\n请输入要删除的学生的学号:");  scanf("%s",num1);  while(p)//查找该学生所在的结点  {  if(!strcmp(p->sno,num1))  break;  else  {  temp=p;  p=p->next;  }   }//while  if(!p)   {  printf("\n不存在此学生的信息.");  return;  }  LinePrint(p);//输出该学生的信息  printf("\n请问真的要删除该学生的信息吗?(Y/N)");  char ch;  fflush(stdin);  scanf("%c",&ch);  if(ch=='Y'||ch=='y')  {  s=p->next;  temp->next=s;  free(p);  printf("\n已经删除该学生的信息.");  }  return;  }   void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现  {   student *ptr,*s=head,*p;  int count=0,count1;  while(s)//统计链表结点个数  {  count++;  s=s->next;  }  int i; for( i=1;i<count;i++)  {  ptr=head;  p=NULL;  count1=count-i; //用来控制每轮起泡排序的终点，即每次把学号最小的结点移到倒数第i个结点  while(ptr&&ptr->next&&(count1--))  {  if(strcmp(ptr->sno,ptr->next->sno)>0)  {  s=ptr->next;  ptr->next=s->next;  if(p==NULL) //ptr处于队头时  head=s;  else  p->next=s;  s->next=ptr;  p=s;  }  else  {  ptr=ptr->next;  if(p==NULL) //ptr处于队头时  p=head;  else  p=p->next;  }  }  }  return;  }      void quit()  {  char ch;  printf("\n真的要退出？(Y/N)");  fflush(stdin);  scanf("%c",&ch);  if(ch=='Y'||ch=='y')  exit(0);  return;  }    int main()  {  int option;   printf("\nCopyright@2005 KongXinCai All rights reserved.");  printf("\n欢迎使用学生信息管理系统!\n");   //登录模块  int icheck=0;  while(icheck<3)  {  if(LogOn()==0)  icheck++;  else  break;   }  if(icheck==3)  {  printf("\n连续登录三次不成功，退出!");  exit(0);  }   //系统界面   while(1)  {  printf("\n\n请选择需要的服务:");      printf("\n1.注册");      printf("\n2.查询");      printf("\n3.修改");      printf("\n4.删除");      printf("\n5.排序");    printf("\n7.求平均");     printf("\n6.退出\n");   scanf("%d",&option);   switch(option)  {  case 1:  regist();  break;  case 2:  search();  break;  case 3:  modify();  break;  case 4:  del();  break;  case 5:  sort();  break;  case 6:  quit();  break;  }   }    return 0;   }   差不多类型的，，你看看

user: user-2
content: 修改了一些，可以运行了，但运行后的原有的子功能有问题，自己改吧 #include<stdio.h>  #include<string.h>  #include<stdlib.h>  #include<conio.h>  //#include<dos.h>  #define K 5  /*商品的结构体*/ struct commodity  {  char name[15];//商品的名字 int number; //商品的编号 int jiage;//商品的价格 int shuliang;//商品的数量 char shengchanchangjia[10];//商品的生产厂家 }sj[K];  struct commodity coom[][4]={{"苹果",001,5,5},{"菠萝",002,3,3}}; //定义一个数组 int num=2; //商品的种数数量 /*声明*/ void homepage(); //首页 int Verification(char Password[]); //增加密码的验证 int Mainmenu(); //主菜单 void input(); //商品信息的输入 void modify(); //商品信息的修改 void delet(); //商品信息的删除 void order(); //商品信息的排序 void search(); //商品信息的查询 void show(); //商品信息的显示 void Exit(); //商品信息的退出 void main()  {  int n; // int i;  char Password[10]={"123456789"}; //初始密码为123456789  homepage();//首页 n=Verification(Password); //验证密码 switch(n)  {  case 0 : printf("\n注意：如果你的密码连续错误三次，系统将会退出。\n");  break;  case 1 : Mainmenu(); //显示主菜单 break;  }  printf("系统退出！\n");  exit(0);  }    /*验证密码*/ int  Verification(char Password[])  {  int i=0;  int j=3;  int m;  char Password1[10];  printf("请你输入商品管理系统的密码"); for(m=0;m<9;m++)  {  Password1[m]=getch(); //输入密码但是密码不显示 putchar('*'); //密码用*来显示 } Password1[9]='\0'; //添加串结束标志 printf("\n"); //换行 for(i=0;j!=0;i++)  if(strcmp(Password1,Password)==0) //比较输入的密码是否正确，如果正确，则程序继续下去。 { printf("你输入的密码正确，你将进入商品管理系统\n");  system("pause"); //屏幕暂停 return 1;  }  else  //如果密码不正确，则程序运行此处 { --j;  if(j==0)  {  return 0;  }  printf("\n密码错误，你还有%d次机会,\n请你再次输入密码：",j);  for(m=0;m<9;m++)  {  Password1[m]=getch(); //输入的密码不会显示出来 putchar('*'); //输入的密码显示*  } Password1[9]='0'; //添加串结束标志 printf("\n");  }  return 0;  }     /*显示作者的基本信息*/ void homepage()  {  printf("\t 欢迎进入商品管理系统 \n");  printf("\t 专业：计算机科学与技术 \n");  printf("\t 班级：计算机科学与技术班\n");  printf("\t 姓名：在在在 \n");  printf("\t 学号：0000000 \n");  }      //定义主菜单栏，输入数字进行操作 int Mainmenu()  {    int num;  //选择的数字    system("cls");  //清除屏幕消息  printf("\n\n\n\n\n");  printf("\t\t--------欢迎将进入商品管理系统--------\n");  printf("\t\t\t 1:商品信息的输入?\n");  printf("\t\t\t 2:商品信息的修改?\n");  printf("\t\t\t 3:商品信息的删除?\n");  printf("\t\t\t 4:商品信息的排序?\n");  printf("\t\t\t 5:商品信息的查询?\n");  printf("\t\t\t 6:商品信息的显示?\n");  printf("\t\t\t 7:商品信息的退出?\n");  printf("\t\t\t请你输入1-7的任意数字：");   scanf("%d",&num);   switch(num)  //通过输入数字来操作事件  {    case 1 : input();  //输入   break;    case 2 : modify(); //修改 break;    case 3 : delet(); //删除   break;    case 4 : order(); //排序   break;    case 5 : search(); //查询   break;    case 6 : show(); //显示   break;  case 7 : Exit(); //退出   break;    default : Mainmenu();    break;   } //switch结束   return 0; }  //函数结束  //录入商品数据信息  void input()   {     char a; //录入一个字符     system("cls"); //清屏      printf("是否输入商品的信息?(yes/no)");    fflush(stdin); //刷新标准输入缓冲区，把输入缓冲区里的东西丢掉   scanf("%c", &a);    while(a=='y')    {    printf("请你输入商品的名字:"); //输入商品名字   scanf("%s",&sj[K].name);    printf("请你输入商品的编号"); //输入商品编号   scanf("%d",&sj[K].number);    printf("请你输入商品的价格"); //输入商品价格   scanf("%d",&sj[K].jiage);    printf("请你输入商品的数量"); //输入商品数量   scanf("%d",&sj[K].shuliang);    printf("请你输入商品的生产厂家"); //输入商品生产厂家   scanf("%s",&sj[K].shengchanchangjia);    num++; //增加商品的数量   printf("请问你是否继续?(yes/no)");    fflush(stdin); //刷新标准输入缓冲区，把输入缓冲区里的东西丢掉   scanf("%c",&a);     } //结束while的循环     Mainmenu();   } //结束该函数   //修改商品信息  void modify()   {    int k=0; //变量   int l=0; //变量   char a; //录入一个字符   system("cls"); //清除屏幕消息   printf("请你输入要修改的商品编号");    fflush(stdin);  //刷新标准输入缓冲区，把输入缓冲区里的东西丢掉   scanf("%d",&k);    while(k!=sj[l].number)    {    l++;    if(l>=num)    {    printf("这里没有你需要修改的商品信息。\n");    modify();    } //结束if的判断   } //结束while的循环   fflush(stdin); //刷新标准输入缓冲区，把输入缓冲区里的东西丢掉   printf("请你输入商品的名称");    scanf("%s",&sj[l].name);    printf("请你输入商品的价格");    scanf("%d",&sj[l].jiage);    printf("请你输入商品的数量");    scanf("%d",&sj[l].shuliang);    printf("请你输入商品的生产厂家");    scanf("%s",&sj[l].shengchanchangjia);    printf("你的修改已经完成，你是否继续(yes/no)");    fflush(stdin);    scanf("%c",&a);    if(a=='yes')     modify(); //继续修改    else     Mainmenu(); //到菜单  }  //修改函数结束  //商品的删除  void delet()   {    int z;    int x=0;    char a;    system("cls"); //清屏   printf("请你输入你要删除的商品编号");    fflush(stdin);    scanf("%d",&z);    while(z!=sj[x].number)    {    x++;    if(x>=num)    {    printf("这里没有你需要删除的商品信息");     modify();    } //结束if    } //结束while的循环   for(;x<num;x++)    {    sj[x].number=sj[x+1].number;    strcpy(sj[x].name,sj[x+1].name);    sj[x].jiage=sj[x+1].jiage;    sj[x].shuliang=sj[x+1].shuliang;    }    num--; //商品的总数数量减少一个   printf("已经删除商品的信息，你是否要继续(yes/no)");    fflush(stdin); //刷新标准输入缓冲区，把输入缓冲区里的东西丢掉   scanf("%c",&a);    if(a=='yes')    delet(); //继续删除   else    Mainmenu(); //返回到菜单   }     //排序   void order()    {    struct commodity temp;    int q;    int w;    char a;    system("cls"); //清屏   printf("通过商品的数量来进行排序\n");    printf("商品编号 商品名称 价格 数量 生产厂家\n");    for(q=0;q<num;q++)    for(w=q+1;w<num;w++)    if(sj[q].shuliang<sj[w].shuliang)    {    temp=sj[q];    sj[q]=sj[w];    sj[w]=temp;    }    for(q=0;q<num;q++)    {    printf("%d",&sj[q].number);    printf("%s",&sj[q].name);    printf("%d",&sj[q].jiage);    printf("%d",&sj[q].shuliang);    printf("%s",&sj[q].shengchanchangjia);    }    printf("输入0来退出排序系统\b");    scanf("%d",&a);    if(a==0) //循环停止，排序系统退出   {    system("cls"); //清除屏幕   Mainmenu();  //返回菜单   }    }     //查询    void search()     {      char name[15];      //char a;      int r=0;      system("cls"); //清除屏幕消息     printf("请你输入要查询的商品名称");      scanf("%s",name);      while(strcmp(name,sj[r].name)!=0)      {       r++;       if(r>=num)       {       printf("这里暂时没有你要查询发的商品信息");       search();       } //结束if的判断     } //结束while循环     printf("商品名称\t商品编号\t商品价格\t商品数量\t商品生产厂家\n");     printf("%s",&sj[r].name);     printf("%d",&sj[r].number);    printf("%d",&sj[r].jiage);    printf("%d",&sj[r].shuliang);    printf("%s",&sj[r].shengchanchangjia);    printf("查询结束");    //search();    }     //显示    void show()     {      int t;      //char a;      system("cls");      printf("商品名称\t商品编号\t商品价格\t商品数量\t商品生产厂家\n");    for(t=0;t<num;t++)    {    printf("%s",&sj[t].name);     printf("%d",&sj[t].number);    printf("%d",&sj[t].jiage);    printf("%d",&sj[t].shuliang);    printf("%s",&sj[t].shengchanchangjia);    }    printf("返回菜单");    fflush(stdin);    //show();     }      //退出   void Exit()    {     char a;     system("cls");     printf("你是否要退出系统(yes\n)");     fflush(stdin);     scanf("%c",&a);     if(a=='yes')     printf("感谢你使用商品管理系");     else     Mainmenu();    }

user: user-0
content: 有没有热的  。。。