求大家帮助我补完一个C语言小程序

这是一个图书管理系统,希望能有人帮我给这个程序添加一个按编号(程序里叫sort_num)排序的功能,谢谢大家了,而且明天这个程序就要交,很急,我把我所有的分用来悬赏,今晚就在线等了,呵呵~
附程序开头,如果还需要更多的信息我会补充的
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
struct library
{
int num;
char book_name[30];
char writer[30];
char sort_num[30];
char pub_company[30];
char pub_time[30];
char prise[30];
};
typedef struct library LIB;
LIB lib[N];
FILE *fp;
int all=0;
int menu(void);
void input(void);
void output(void);
void save(void);
void del(void);
void search(void);
void modify(void);
/*void sort(void);*/
main()
{
for(;;)
{
switch(menu())
{
case 1:input();break;
case 2:output();break;
case 3:save();break;
case 4:search();break;
case 5:modify();break;
case 6:del();break;
/* case 7:sort();break; */
case 0:exit(1);break;
}
}
}
int menu(void)
{
char m[3];
int n;
printf("**********MENU**********\n\n");
printf("\t\t1:input\n");
printf("\t\t2:output\n");
printf("\t\t3:save\n");
printf("\t\t4:search\n");
printf("\t\t5:modify\n");
printf("\t\t6:del\n");
printf("\t\t7:sort\n");
printf("\t\t0:exit\n");
printf("************************\n");
printf("\t\tplease choose a operation(0-6):\n");
scanf("%s",m);
n=atoi(m);
return(n);
}
算了,我不要排序的功能了,唉,不会调试呢~

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct BOOK
{
int id,usr[10],total,store,days[10];
char name[31],author[21];
}books[100];
/*上面是结构体的定义,用于存放书籍及借书的信息。*/

void page_title(char *menu_item)
{
clrscr();
printf(">>> 图 书 管 理 系 统 <<<\n\n- %s -\n\n",menu_item);
}
/*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/

void return_confirm(void)
{
printf("\n按任意键返回……\n");
getch();
}
/*上面是返回前请求确认的函数,以便在返回前观察结果*/

int search_book(void)
{
int n,i;
printf("请输入图书序号:");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("书名:%s\n",books[n].name);
printf("作者:%s\n",books[n].author);
printf("存数:%d of ",books[n].store);
printf("%d\n",books[n].total);
return n;
}
}
printf("\n输入错误或无效图书序号.\n");
return -1;
}
/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返
回数组下标,如果找不到相应记录则提示错误并返回-1。*/

void book_out(void)
{
int n,s,l,d;
page_title("借阅图书");
if((n=search_book())!=-1&&books[n].store>0)
{
printf("请输入借书证序号:");
scanf("%d",&s);
printf("请输入可借天数:");
scanf("%d",&d);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!=-1&&books[n].store==0) printf("此书已经全部借出.\n");
return_confirm();
}
/*上面是借书的函数,首先调用找书函数*/

void book_in(void)
{
int n,s,l;
page_title("归还图书");
if((n=search_book())!=-1&&books[n].store<books[n].total)
{
printf("借阅者图书证列表:\n");
for(l=0;l<10;l++)
if (books[n].usr[l]!=0)
printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]);
printf("请输入借书证序号:");
scanf("%d",&s);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!=-1&&books[n].store==books[n].total)
printf("全部入藏.\n");
return_confirm();
}

void book_add(void)
{
int n;
page_title("注册新书");
for(n=0;n<100;n++)
if(books[n].id==0) break;
printf("序号:");
scanf("%d",&books[n].id);
printf("书名:");
scanf("%s",&books[n].name);
printf("作者:");
scanf("%s",&books[n].author);
printf("数量:");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
void book_del(void)
{
int n;
page_title("注销旧书");
if((n=search_book())!=-1) books[n].id=0;
printf("该书已注销.\n");
return_confirm();
}

void main(void)
{
menu: page_title("操作选单");
printf("请用数字键选择操作\n\n");
printf("1 借阅图书\n2 归还图书\n\n");
printf("3 注册新书\n4 注销旧书\n\n");
printf("\n0 退出\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
{
int n;
page_title("广?症慕");
if((n=search_book())!=-1) books[n].id=0;
printf("乎慕厮广?.\n");
return_confirm();
}

void main(void)
{
menu: page_title("荷恬佥汽");
printf("萩喘方忖囚佥夲荷恬\n\n");
printf("1 処堋夕慕\n2 拷珊夕慕\n\n");
printf("3 广过仟慕\n4 广?症慕\n\n");
printf("\n0 曜竃\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-07-31
void sort(LIB lib[],LIB *pt,int n);
{
int i,j;
LIB *tmp,*pt[n];
for (i=0;i<n;i++)
pt[i]=&lib[i];
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
if (pt[i]->num>pt[i]->num)
{
tmp=pt[i];
pt[i]=pt[j];
pt[j]=tmp;
}
调用的时候,先在主文件里创建一个指向结构的指针(LIB *pt),然后
sort(lib,pt,N);
注意,排序输出的话应该用指针pt输出
第2个回答  2007-07-31
由于你给出的程序不全,只能凭猜测写程序,没有调试:
void sort()
{
int i,j;
struct library tmp;
for (i=0;i<N;i++){
for (j=N-1;j>i;j--){
if (lib[i].num>lib[j].num){
tmp=lib[i];
lib[i]=lib[j];
lib[j]=tmp;
}
}
}
}
----------------------
我没有说要重新编一个呀,我写的这段程序就是让你直接作为程序的sort()函数的,没看明白?本回答被提问者采纳

求c语言大佬帮助!帮我写个小程序,谢谢
int n);\/\/随机生成元素取值范围在0到99的数组void Short(int *p,int n);\/\/用选择法对数组中的元素从小到大排序void Print(int *p,int n);\/\/在屏幕上输出数组各元素的值(逗号分隔)#define N (10)int main(){ int a[N],b

用c语言编写一个小程序
include <stdio.h>void main() {int n,m = 0;scanf("%d",&n);while(n){printf("%d ",n%10);m = m*10 + n%10;n = n\/10;}printf("\\n%d\\n",m);}

求C语言的小程序
include <stdio.h>const int k=10;int find(int *a){ int max=a[0]; for(int i=0;i<k;i++) { printf("%d ",a[i]); if(a[i]>max) max=a[i]; } return max;}int sort(int *a){ int temp; for(int i=0;i<k;i++) { for(in...

怎么用c语言编写一个小程序?
1、首先打开DEV C++软件,点击“新建源代码”,在编辑页面输入以下代码。2、因为题目要求我们先输入一个整数,所以在定义变量时,就应该将其定义为整数型,注意,在输入,输出函数中,整数型对应的是“%d”。3、接下来就要对输入的整数进行判断,在C语言中,if是判断语句,所以用它来对整数进行判断。if...

我弄了一个C语言的小程序 ,三个数比较大小,我编的程序 执行不了,请...
1、某些字符不能输入。若只有某一个键字符不能输入,则可能是该按键失效或焊点虚焊。检查时,按照上面叙述的方法打开键盘,用万用表电阻档测量接点的通断状态。若键按下时始终不导通,则说明按键簧片疲劳或接触不良,需要修理或更换;若键按下时接点通断正常,说明可能是因虚焊、脱焊或金屑孔氧化所致...

请帮我编写一个C语言小程序,谢谢
include<stdio.h> main(){ int i;for(i=1;i<=20;i++)printf("%3d",i);printf("\\n");for(i=20;i>=1;i--)printf("%3d",i);printf("\\n");}

C语言高手来一下帮我编个小程序
首先,我可以用字符串来做。我现在先把代码贴上:include <stdio.h> int main(){ char *str , *ch , *c[] = {"个位为:" , "十位为:" , "百位为:" , "千位为:" , "万位为:"};scanf("%s",str);int i = 0 ;\/\/要求1.求出它是几位数 printf("此数为%d位数\\n",(size...

谁能用C语言帮我写几个小程序 急求
1、include<stdio.h> int main(){ int max(int x,int y,int z);int a,b,c,d;scanf("%d%d%d",&a,&b,&c); \/\/scanf%d间不能有逗号,后面是输入的地址因此得加& d=max(a,b,c); \/\/输入的是abc,不是x,y,z\/\/x,y,z是形参a,b,c是实参 printf("max=%d",d);\/\/不是print是...

用C语言编写一个输出图形的小程序。
void main(){ int i,j;for(i=0;i<4;i++){ for(j=1;j<4-i;j++)printf(" ");for(j=4-i;j<=4+i;j++)printf("*");printf("\\n");} for(i=4;i<7;i++){ for(j=0;j<i-3;j++)printf(" ");for(j=i-3;j<=9-i;j++)printf("*");printf("\\n");} getch(...

快帮帮我吧,C语言小程序结果
将宏定义代入:d=c+max(a,b)=c+a>b?a:b 优先级:"+"大于">"大于 "?:"所以式子相当于d=(c+a)>b?a:b c+a=9大于b,取a的值赋给d,所以结果是5。如果要输出你要的结果:那宏定义应该为:#define max(a,b) (a>b?a:b)...

相似回答