c语言软件标题怎么改,C语言一大型程序,谁能帮忙改一下(原标题已被更改)...

C语言一大型程序,谁能帮忙改一下(原标题已被更改)

各位大哥!救命啊!C语言一大型程序,谁能帮忙改一下,明天就要交啦!是个杂志管理软件,要求能够1添加订户信息 2删除订户记录 3统计杂志发行数 4根据姓名和电话查找订户信息 5显示订户清单 6按男女性别排序 7退出,要求能够利用文件进行信息存储,大部分功能已经实现,各位帮帮忙啊。

代码如下:

#include "stdio.h"

#include "conio.h"

#define NULL 0

#define LEN sizeof(struct list)

typedef struct list

{

char name[10];

char sex;

char add[20];

int ph_num;

int price;

int year;

int month;

struct list *next;

}List, *linklist;

int num;

view(linklist HL)

{

linklist p;

p=HL;

p=p->next;

while(p!=NULL)

{

printf("Name:%s Sex:%c Add:%s Phone:%d Price:%d Time limit:%d.%d\n",p->name,p->sex,p->add,p->ph_num,p->price,p->year,p->month);

p=p->next;

}

}

/*--------------end of view--------------*/

linklist sort_sex(linklist HL)

{

linklist p,q,s;

s=HL;

q=HL;

p=q->next;

if(s->next->sex=='f')

{

p=p->next;

q=q->next;

}

while(p!=NULL)

{

if(p->sex=='f')

{

q->next=p->next;

p->next=s->next;

s->next=p;;

p=q->next;

}

else

{

p=p->next;

q=q->next;

}

}

view(HL);

return (HL);

}

/*----------------end of sort_sex---------------*/

linklist create()

{

linklist HL,p,q;

int num1;

clrscr();

printf("How many subscribers do you want to create?\n");

scanf("%d",&num);

num1=num;

printf("\nNow,please input the information of the subscriber:\n\n");

HL=(linklist)malloc(sizeof(List));

p=HL;

while(num1>0)

{

p->next=(linklist)malloc(sizeof(List));

p=p->next;

printf("name:");scanf(" %s/n",p->name);

printf("sex:");scanf(" %c",&p->sex);

printf("address:");scanf("%s",p->add);

printf("phonenum:");scanf("%d",&p->ph_num);printf("price:");scanf("%d",&p->price);printf("year:");scanf("%d",&p->year);printf("month:");scanf(" %d",&p->month);

num1--;

}

p->next=NULL;

HL=sort_sex(HL);

return HL;

}

/*----------------end of create-----------*/

rewrite(struct list *p3)

{

struct list *p;

FILE *fp;

fp=fopen("b_data.acc","wb");

p=p3;

do

{

fwrite(p,LEN,1,fp);

p=p->next;

}while(p!=NULL);

fclose(fp);

}

add()

{

int i;

int m;

char c;

struct list *p1;

FILE *fp;

p1=NULL;

fp=fopen("b_data.acc","ab+");

printf("Input imformation\n");

printf("name:");scanf("%s",p1->name);

printf("sex:");scanf(" %c",&p1->sex);

printf("address:");scanf(" %s",p1->add);

printf("phonenum:");scanf("%ld",&p1->ph_num);

printf("price:");scanf("%d",&p1->price);

printf("year:");scanf("%d",&p1->year);

printf("month:");scanf("%d",&p1->month);

p1->next=NULL;

fwrite(p1,LEN,1,fp);

fclose(fp);

printf("\t\t\tcontinne to book ? [y][n]\n\t\t\t");

lea: c=getchar();

switch(c)

{

case 'y':add();break;

case 'n':return;

default: goto lea;

}

clrscr();

}

/*--------------end of add------------*/

linklist delete(linklist HL)

{

linklist p,q;

int Year,Month;

clrscr();

p=HL;

q=p;

p=q->next;

printf("Please input the limit time:");

scanf("%d%d",&Year,&Month);

while(p!=NULL)

{

if(p->year

{

q->next=p->next;

p=q->next;

num--;

}

else

{

p=p->next;

q=q->next;

}

}

p=HL->next;

q=HL;

while(p!=NULL)

{

if(p->year==Year && p->month

{

q->next=p->next;

p=q->next;

num--;

}

else

{

p=p->next;

q=q->next;

}

}

view(HL);

return HL;

}

/*-------------end of delete-----------*/

linklist count(linklist HL)

{

linklist p;

int number;

number=0;

p=HL;

p=p->next;

while(p!=NULL)

{

number++;

p=p->next;

}

num=number;

printf("We have %d subscribers in limit time.",number);

return HL;

}

/*-------------end of count------------*/

linklist search(linklist HL)

{

linklist p;

int p_num;

int cmp,flag,find;

char nm[10];

flag=0; find=0;

p=HL;

p=p->next;

clrscr();

printf("Please in put the subscriber's name and phone number:");

scanf(" %s",nm);

scanf("%d",&p_num);

while(p!=NULL && flag!=1)

{

cmp=strcmp(nm,p->name);

if(cmp==0 && p->ph_num==p_num)

{

printf("\n\nName:%s Sex:%c Add:%s Phone:%d Price:%d Limit time:%d.%d\n",p->name,p->sex,p->add,p->ph_num,p->price,p->year,p->month);

flag=1;

}

else

{

find++;

p=p->next;

}

}

if(find==num)

{

printf("Sorry, we can not find it");

}

return HL;

}

/*-------------end of search--------*/

linklist sort(linklist head,linklist hl)

{

linklist HL,p,q;

p=head;

q=p;

p=q->next;

while(p!=NULL)

{

p=p->next;

q=q->next;

}

q->next=hl->next;

HL=head;

view(HL);

return HL;

}

/*-------------end of sort------------*/

linklist sort_1(linklist Hl,int nn)

{

int n,flag,num1,num2,cpa;

linklist p,q,s,l,ll;

p=Hl; s=p;

p=p->next;

q=p;

p=q->next;

flag=0; num1=nn-1;

for(n=0;n

{

cpa=q->ph_num;

num2=nn-n-1;

while(p!=NULL)

{

if(cpa>p->ph_num)

{

ll=q;

l=p;

cpa=p->ph_num;

p=p->next;

q=q->next;

flag=0;

}

else

{

p=p->next;

q=q->next;

flag++;

}

}

if(flag!=num2)

{

ll->next=l->next;

l->next=s->next;

s->next=l;

q=l->next;

s=l;

p=q->next;

flag=0;

}

else

{

s=s->next;

q=s->next;

p=q->next;

flag=0;

}

}

/* view(HL); */

return Hl;

}

/*--------------end of sort--------------*/

main()

{

linklist HL,head,p,q,hl;

int num_fe,num_ma;

int cho,flag;

flag=0;

while(flag==0)

{

clrscr();

printf("============================================\n\n");

printf(" 1. Create 2. Add \n\n");

printf(" 3. Delete 4. Count \n\n");

printf(" 5. Search 6. Display \n\n");

printf(" 7. Sort 8. Exit \n\n");

printf("============================================\n\n");

scanf("%d",&cho);

switch(cho)

{

case 1: HL=create(); getch(); break;

case 2: HL=add(HL); getch(); break;

case 3: HL=delete(HL); getch(); break;

case 4: HL=count(HL); getch(); break;

case 5: HL=search(HL); getch(); break;

case 6: view(HL); getch(); break;

case 7: num_fe=0;num_ma=0;

p=HL;

head=HL;

q=p;

p=q->next;

hl=(linklist)malloc(sizeof(List));

while(p->sex!='m')

{

num_fe++;

p=p->next;

q=q->next;

}

q->next=NULL;

hl->next=p;

num_ma=num-num_fe;

head=sort_1(head,num_fe);

hl=sort_1(hl,num_ma);

HL=sort(head,hl); getch(); break;

case 8: exit();

default: printf("ERROR,choose again!"); getch();

}

}

}

/*--------------------end of main------------------*/

[此贴子已经被ChenMo于2004-06-29 13:34:09编辑过]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值