| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 14688 人关注过本帖, 1 人收藏
标题:求高手 C编程图书管理系统
取消只看楼主 加入收藏
傲之冰枫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-1
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:2 
求高手 C编程图书管理系统
图书信息管理程序(3人)
具体要求实现如下功能:
1)定义与图书相关信息的数据结构,包含书号,书名,作者,出版社,出版时间,总页数,定价等信息。
2)添加数据功能:向已有图书信息表中添加新的图书信息的功能。
3)删除数据功能:在已有数据中删除某个图书的相关数据,保证其他数据的正常使用。4)查询数据功能:在已有数据中查找某些图书的相关数据,并给出相关的查找结果;查找可以根据图书的书名或者出版社进行,如果查找成功,给出具体信息,否则给出没有找到的提示。
5)修改数据功能:对已有的图书信息进行修改。
6)排序功能:根据要求按照书号或者出版时间进行排序。
7)添加功能选择菜单。

程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
#define PF printf
#define SF scanf
struct books
    {
        int booknum;        //书号
        char bookname[20];  //书名
        char authorname[20];//作者
        char cbs[20];       //出版社
        int  price;         //价格   
   
    };struct books book[N];
   
int luru(struct books * p_book,int i)//录入函数    p_book=book;i=n;
{   
    system("cls");//清屏
   
    while(1)
    {   char ch;
        PF("~~~~~~~~~~~~~~~开始输入信息~~~~~~~~~~~~~\n");
        PF("请输入书的编号:");
        SF("%d",&p_book->booknum);PF("\n");//book[i].booknum
        PF("请输入出版社:");
        SF("%s",p_book->cbs);PF("\n");//
        PF("请输入图书价格:");
        SF("%d",&p_book->price);PF("\n");
        PF("请输入书名:");
        SF("%s",p_book->bookname);PF("\n");
        getchar( );//屏蔽回车
        PF("请输作者名:");
        gets(p_book->authorname);
        ++i;
        PF("是否继续输入,请选择(y/n):");
        SF("%c",&ch);
            if(ch=='n')break;
            else p_book++;
   
        

        
    }
        return i;        
}



void paixu(struct books book[],int i)//按书号进行排序  
{   
    int n,a,temp;
    char t1[20],t2[20],t3[20];
    for(n=0;n<i-1;n++)//趟数
    for(a=0;a<i-1-n;a++)//每趟的次数
        if(book[a].booknum>book[a+1].booknum)//整型的比较
        {   
            {temp=book[a].booknum;book[a].booknum=book[a+1].booknum;book[a+1].booknum=temp;}//书号换位
            {strcpy(t1,book[a].bookname);strcpy(book[a].bookname,book[a+1].bookname);strcpy(book[a+1].bookname,t1);}//书名换位
            {strcpy(t2,book[a].cbs);strcpy(book[a].cbs,book[a+1].cbs);strcpy(book[a+1].cbs,t2);}//出版社换位
            {temp=book[a].price;book[a].price=book[a+1].price;book[a+1].price=temp;}//价格换位
            {strcpy(t3,book[a].authorname);strcpy(book[a].authorname,book[a+1].authorname);strcpy(book[a+1].authorname,t3);}//书作者换位
        }
        system("cls");
            PF("书号\t书名\t出版社\t价格\t作者\n");
        for(a=0;a<i;a++)
            PF("%d\t%s\t%s\t%d\t%s\n",book[a].booknum,book[a].bookname,book[a].cbs,book[a].price,book[a].authorname);

}

void cx1(struct books book[],int i)//书名查询
{
    int a;
    char name[20];
        system("cls");
        PF("|按书名查询|\n");
        SF("%s",&name);
        for(a=0;a<i;a++)
        if(strcmp(name,book[a].bookname)==0)
        {
        PF("书号\t书名\t出版社\t价格\t作者\n");
        PF("%d\t%d\t%d\t%.2f\t%s\n",book[a].booknum,book[a].bookname,book[a].cbs,book[a].price,book[a].authorname);
        }
        else PF("没有你要的查询结果\n");
}
void cx2(struct books book[],int i)//作者名查询
{
    int a;char g[20];
        system("cls");
        PF("|按作者名查询|\n");
            scanf("%s",&g);
        for(a=0;a<i;a++)
            if(strcmp(g,book[a].authorname)==0)
            {
                PF("书号\t书名\t出版社\t价格\t作者\n");
                PF("%d\t%d\t%d\t%.2f\t%s\n",book[a].booknum,book[a].bookname,book[a].cbs,book[a].price,book[a].authorname);
            }
        else PF("没有你要的查询结果\n");
}

void chaxun(struct books shu[],int i)//查询
{   
    int x;
    system("cls");
    PF("~~~~~~~~~~~~~~~~图书信息查询~~~~~~~~~~~~~~~\n");
    PF("********请选择查询方式********\n");
    PF("|1.按书名查询|\n");
    PF("|2.按作者名查询|\n");
    PF("请输入你选择___");
    SF("%d",&x);
    switch(x)
    {
    case 1:cx1(book,i);break;//调用cx1函数完成按书名查询
    case 2:cx2(book,i);break;//调用cx2函数完成按作者查询

    default :PF("输入有误,请重新输入!\n");break;
    }

   
}
/*int fl(struct books shu[],int i)//按书号删除
{   
    int y,h,m;int j;
    fanhui:PF("请你输入想要删除图书的书号\n");
    scanf("%d",&y);//接收书号
        if(y>=i)
        {
            PF("您要删除的图书信息不存在\n");return 0;
        }
        else
        {
            y=y-1;
            
        PF("书号\t书名\t出版社\t价格\t作者\n");
        PF("%d\t%d\t%d\t%.2f\t%s\n",shu[y-1].booknum,shu[y-1].bookname,shu[y-1].cbs,shu[y-1].price,shu[y-1].authorname);
        PF("你确定要删除以上信息吗?\n");
        PF("|1.是,确认删除\n");
        PF("|2.否,返回上一层\n");
        PF("|3.返回主菜单\n");
        SF("%d",&h);
        switch(h)
        {
        case 1:
               
            for(m=0;m<i;m++)
               {
                    if(y==shu[m].booknum&&y<i-1)
                    {

                        shu[m].booknum=shu[m+1].booknum;
                        for(j=m;j<i-1;j++)
                        {
                            shu[j].booknum=shu[j+1].booknum;
                            shu[j].bookname=shu[j+1].bookname;
                            shu[j].cbs=shu[j+1].cbs;
                            strcpy(shu[j].price,shu[j+1].price);
                            strcpy(shu[j].authorname,shu[j+1].authorname);
                        }
                        i--;
                    }
                    if(y==shu[m].booknum&&m==i-1)
                        i--;
               }
            PF("i=%d",i);break;
            
        case 2: system("cls");
            goto fanhui;break;// 返回
        case 3:system("cls");break;
        default :PF("输入有误,请重新输入!\n");break;
            
        }
        }
        return i;
}*/
int sm(struct books shu[],int i)//按书名删除
{
    char book[20];int a,h,m;
    fanhui:printf("请你输入想要删除图书的名称\n");
    SF("%s",book);//接收书名
    for(a=0;a<i;a++)
        if(strcmp(book,shu[a].bookname)==0)
        {
            PF("书号\t书名\t出版社\t价格\t作者\n");
            PF("%d\t%d\t%d\t%.2f\t%s\n",shu[a].booknum,shu[a].bookname,shu[a].cbs,shu[a].price,shu[a].authorname);
            PF("你确定要删除以上信息吗?\n");
            PF("|1.是,确认删除\n");
            PF("|2.否,返回上一层\n");
            PF("|3.返回主菜单\n");
            SF("%d",&h);
            SF("%d",&h);
            switch(h)
            {
            case 1:for(m=0;m<i;m++)
                    {
                    if(a==m&&a<i-1)
                    {
                        m=m+1;
                    }
                    if(a==m&&m==i-1)
                        i--;
                   }
            return --i;break;
        case 2:system("cls");
            goto fanhui;break;//返回
        case 3:system("cls");break;
        default :PF("输入有误,请重新输入!\n");break;
               
            }
        }
        if(strcmp(book,shu[a].bookname)!=0) printf("您要删除的图书信息不存在\n");
        return i;
}
int del(struct books shu[],int i)//删除信息
{
    int h;
    system("cls");
    PF("~~~~~~~~~~~~~~~~图书信息删除~~~~~~~~~~~~~~~\n");
    PF("|1.图书的书号|\n");
    PF("|2.图书的书名|\n");
    SF("%d",&h);
    switch(h)
    {
    //case 1:    system("cls");i=fl(shu,i);break;//按书号删除
    case 2:    system("cls");i=sm(shu,i);break;//按书名删除
    default :PF("输入有误,请重新输入!\n");break;
    }
    return i;
}
int charu(struct books shu[],int i)//插入信息
{
    system("cls");
        PF("~~~~~~~~~~~~~~~开始插入信息~~~~~~~~~~~~~\n");
        PF("请输书号\n");
        SF("%d",&shu[i].booknum);
        PF("请输入书名\n");
        SF("%d",&shu[i].bookname);
        PF("请输入价格\n");
        SF("%f",&shu[i].price);
        PF("请输入出版社\n");
        SF("%s",&shu[i].cbs);
        getchar( );//屏蔽回车
        PF("请输作者名\n");
        gets(shu[i].authorname);
        i++;
        system("cls");
        PF("插入信息成功\n");
        return i;        

}
void main()
{
    int choice,n=0;
    for( ; ; )
    {   
        system("cls");
        {
        PF("\t\t*****************图书信息管理系统*****************\n");
        PF("\t\t*\t\t|1.图书信息录入                  *\n");
        PF("\t\t*\t\t|2.图书信息浏览                  *\n");
        PF("\t\t*\t\t|3.图书信息查询                  *\n");
        PF("\t\t*\t\t|4.图书信息的删除                *\n");
        PF("\t\t*\t\t|5.图书信息的插入                *\n");
        PF("\t\t*\t\t|6.退出系统                      *\n");
        PF("\t\t*****************图书信息管理系统*****************\n\n\n");
        PF("\t\t请输入以上序号进行选择:\n");
        SF("%d",&choice);
        }
    switch(choice)
    {
    case 1:n=luru(book,n);//录入  book[0]
        system("pause");break;
    case 2:paixu(book,n);//liulan(book,n);//浏览
        system("pause");break;
    case 3:chaxun(book,n);//查询
        system("pause");break;
    case 4:n=del(book,n);
        system("pause");break;
    case 5:n=charu(book,n);
        system("pause");break;
    case 6:exit(0);
        system("pause");
    default :PF("输入有误,请重新输入!\n");
        system("pause");break;
    }
}
}
搜索更多相关主题的帖子: 出版社 时间 
2011-04-01 13:56
傲之冰枫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-1
收藏
得分:0 
帮我看看 怎搞 知道写链表的写个 链表的程序 给我吧。。谢谢 不会的 帮我看下这个程序要怎么改 谢谢
2011-04-01 13:57
傲之冰枫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-1
收藏
得分:0 
高手啊
2011-04-01 14:15
快速回复:求高手 C编程图书管理系统
数据加载中...
 
   



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

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