标题:运行程序的时候 停止工作。感觉函数都没办法调用,求解答
只看楼主
学渣渣渣
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-4-12
 问题点数:0 回复次数:0 
运行程序的时候 停止工作。感觉函数都没办法调用,求解答
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include<malloc.h>
#define N sizeof(person)
#define NULL 0

struct person
{
char num[10];
long num1;
char name[20];
char sex[10];
char com[20];
char tel[20];
int area;
int totalfee;
struct person*next;
}*head,*p;



main ()
{void Face();
int n;
printf("请输入相应的序号:");
scanf("%d",&n);
getch();
while (n!=0)
{
switch (n)
{
case 1:void input_data();break;/*从文件中读取业主信息,创建链表*/
case 2:void save_infor();break;/*业主信息数据的存储*/
case 3:void read_infor();break;/*业主信息数据的读取*/
case 4:void print_infor();break;/*输出数据*/
case 5:void find_owner();break;
case 6:int modify_infor();break;
case 7:int delete_owner();break;
case 8:void add_owner();break;
case 9:void sort_num();break;
case 10:void payment();break;
case 11:void save_infor();system("cls");return;
default:;
}

}

}





void Face()
{
system ("cls");
printf("\n\n\n\t----------欢迎进入小区业主管理系统---------\n");
printf("\t\t          1.业主信息的录入     2.将数据存储到文件里  \n");
printf("\t\t          3.从文件中读数据     4.业主信息的输入  \n");
printf("\t\t          5.业主信息的查找     6.业主信息的修改  \n");
printf("\t\t          7.业主信息的删除     8.业主信息的添加  \n");
printf("\t\t          9.业主信息的排序    10.业主缴费  \n");
printf("\t\t         11.退出   \n");
printf("请输入相应的序号:");




}



void input_data()  /*首次登录系统,数据是手动输入得到的*/
{int pingfang=10;
struct person*p1,*p2;
char flag='y';
head=p2=(struct person*)malloc(N);/*head p2都指向头节点*/
while(flag=='y')
{
p1=(struct person*)malloc(N);/*P1指向新申请的节点*/
printf("请输入:单元号 户号 姓名 性别 工作单位 电话号码 房屋面积\n");
scanf("%s%1d%s%s%s%s%d",p1->num,&p1->num1,p1->name,p1->sex,p1->com,p1->tel,&p1->area);
p1->totalfee=p1->area*pingfang;
p2->next=p1; /*将新节点连接到表尾*/
p2=p1; /*p2指向新的表尾*/
getch();
printf("继续输入请按y:");
flag=getch();
}
p2->next=NULL;/*表尾节点next域置空*/
void Face();
}


void save_infor()
{struct person*h=head,*owner;
FILE*fp;
char filename[40];/*定义所要存储的文件名*/
printf("\n请输入要保存的文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"wt"))==NULL)/*判断打开文件是否成功*/
{printf("写文件错误,按任意键退出\n"); exit(1);}
for (owner=h->next;owner!=NULL;owner=owner->next)
fprintf(fp,"%s %1d %s %s %s %s %d %d\n",owner->num,owner->num1,owner->name,owner->sex,owner->tel,owner->area,owner->totalfee);/*格式化字符串写函数*/
printf("\n文件成功保存,按任意键返回\n");
getch();/*从键盘上输入一个字符但是不会显示在屏幕上*/
fclose(fp);/*文件上所指指针FP关闭*/
}


void read_infor()
{
struct person*r,*owner;
FILE*fp;
char filename[40];
printf("请输入要打开的文件名:");
scanf("%s",filename); /*输入要打开的文件名*/
if((fp=fopen(filename,"rt"))==NULL) printf("读文件出错,按任意键退出!\n");exit(1);/*打开错误则退出*/
head=(struct person*)malloc(sizeof(struct person));/*开辟读写的空间*/
head->next=NULL;/*头指针置空*/
r=head;/*指向头节点*/
while(!feof(fp))/*判断指针文件的出错的函数*/
{
owner=(struct person*)malloc(sizeof(struct person));
fscanf(fp,"%s%1d%s%s%s%s%d%d",owner->num,&owner->num1,owner->name,owner->sex,owner->tel,&owner->area,&owner->totalfee);/*格式化字符读函数*/
r->next=owner;
r=owner;
}
r->next=NULL;/*尾指针置空*/
fclose(fp);
void print_infor();
printf("文件中信息已经正确输出,按任意键返回\n");
getch();

}


void print_infor() /*输出函数*/
{
struct person*p=head;
p=p->next;
while(p!=NULL)
{
printf("\n单元号:%s  户号:%1d 姓名:%s 性别:%s 工作单位:%s 电话号码:%s 房屋面积:%d应缴物业费%d\n",p->num,p->num1,p->name,p->sex,p->com,p->tel,p->area,p->totalfee);
       p=p->next;
}
}

struct person*find_name(char name[10])
{
struct person*p=head;
   while(p->next!=NULL)
   {p=p->next;
   if(strcmp(p->name,name)==0)return p;
}
   return NULL;
}
void  find_owner()
{
 struct person*p=head;
 char name[10];
 printf("请输入要查找的名字:");
 scanf("%s",name);
 p=find_name(name);
if(p!=0)printf("恭喜找到!单元号:%s  户号:%1d 姓名:%s 性别:%s 工作单位:%s 电话号码:%s 房屋面积:%d\n",p->num,p->num1,p->name,p->sex,p->com,p->tel,p->area);     
}



modify_infor()
{
  int choice;
  char name[10];
  struct person*p=head;
  printf("请输入要修改的名字:");
  scanf("%s",name);
  while(p->next!=NULL)
  {
      p=p->next;
      if(strcmp(p->name,name)==0)
      {
          while (choice!=0)
          {
      printf("请输入要修改的选项:1单位号 2房户号 3工作单位 4电话号码 0退出\n");
      printf("请选择(0--4):");
      switch (choice)
      {
      case 1:printf("请输入新的单位号:");scanf("%s",p->num);
      case 2:printf("请输入新的房户号:");scanf("%1d",p->num1);
      case 3:printf("请输入新的工作单位:");scanf("%s",p->com);
      case 4:printf("请输入新的电话号码:");scanf("%s",p->tel);
      case 0:return 0;
      }
          }
}
  }


}



void add_owner()
{int pingfang=10;
struct person*p2=head,*p1;
char flag='y';
while (p2->next!=NULL)
    p2=p2->next;
while(flag=='y')
{
   p1=(struct person*)malloc(N);
   printf("请输入:单元号 户号 姓名 性别 工作单位 电话号码 房屋面积\n");
scanf("%s%1d%s%s%s%s%d",p1->num,&p1->num1,p1->name,p1->sex,p1->com,p1->tel,&p1->area);
p1->totalfee=p1->area*pingfang;
p2->next=p1;                     /*将新结点连接到表尾*/
p2=p1;                           /*p2指向新的表尾*/
getch( );
printf("继续输入请按键y:");
flag=getch( );
     }
 
}

int delete_owner( )
{
   char name[10];
   struct person*p0=head,*p;
   p=p0->next;
   if(p==NULL) return 0;                   /*(只要头结点为空表,则不能删除*/
   printf("请输入要删除的业主姓名:\n");
   scanf("%s",name);
   while(p!=NULL)
   {
      if(strcmp(p->name,name)==0)         /*找到要删除的节点*/
      {
        p0->next=p->next;
        free(p);return 1;/*后续结点链接到前驱结点之后*/
      }
      p0=p;                             /*移向指针继续查找*/
      p=p->next;
      }
   return 0; printf("抱歉删除失败,请重新选择\n");                            /*未找到则返回0*/
}


void payment()
{
   struct person*p=head;
   int money;
   char name[10];
   printf("\n请输入要查找的姓名:");
   scanf("%s",name);
   p=find_name(name);
   if(p==NULL){ printf("没有找到该用户");return;}
   else
   
      printf("您应缴的物业费是:%d",p->totalfee);
      printf("\n请输入您要缴纳的费用额:");
      scanf("%f",&money);
      p->totalfee=p->totalfee-money;
      printf("目前还剩没缴纳的费用为%d",p->totalfee);
   
   }


求解 程序没有error 但是运行不了。求解答求解答
搜索更多相关主题的帖子: 运行程序 include person 信息 
2015-04-12 18:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-443907-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.076176 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved