Anna_1314 2014-06-18 12:27 采纳率: 0%
浏览 2968

求一个用C#实现的基于XML的小型图书管理系统

XML作为数据库,用ASP和C#实现,可以的话发我邮箱924626204@qq.com;非常感谢!

  • 写回答

1条回答

  • haoyuebuzui 2014-06-18 15:51
    关注

    其实我不知道xml是什么,初学c。手上有个简单的图书管理代码,希望给你灵感。搞错了不要笑我啊。。。#include
    #include
    #include
    #include
    #include
    //402行
    //注意输入的范围,否则会陷入一写死循环,或者命令溢出。
    int k=0;
    //k作为全局变量的便于添加元素的计数器,及利于后面的结构分析
    //void BookAdd();/*添加图书*/
    //void BookFind();/*图书查询*/
    //void BookDel();/*图书删除*/
    //void BookModify(); /*修改图书信息*/
    //void BookSort();/*图书排序*/
    //void BookShow ();/*图书显示*/
    typedef struct
    {
    int month;
    int day;
    int year;
    }DATES;
    //定义日期
    typedef struct books
    {
    char bookname[50];
    char ISBN[50];
    char author[50];
    char publisher[50];
    float money;
    DATES day;
    int count;
    }BOOK_TYPE;
    //定义图书类型
    typedef struct info{
    BOOK_TYPE book;
    struct info *next;
    }LinkList;
    //定义单链表类型
    void input(BOOK_TYPE f)
    //输出函数
    {
    printf("书名:%2s 书号:%2s 作者:%2s 出版方:%2s\n",f.bookname,f.ISBN,f.author,f.publisher);
    printf("价格:%2.1f 数量:%2d\n",f.money,f.count);
    printf("日期:%2d-%2d-%2d\n",f.day.year,f.day.month,f.day.day);
    }

    void InitList(LinkList *&L)
    //初始化链表
    {
    L=(LinkList *)malloc(sizeof(LinkList));
    L->next=L;
    }//创建头结点

    void DestroyList(LinkList *&L)
    //销毁链表
    {
    LinkList *p=L,*q=p->next;
    while(q!=L)
    {free(p);
    p=q;
    q=p->next;
    }
    free(p);
    }

    int ListEmpty(LinkList *L)
    //判断链表是否为空
    {
    return(L->next==L);
    }
    int ListLength(LinkList *L)
    {
    LinkList *p=L;int i=0;
    while(p->next!=L)
    {i++;
    p=p->next;
    }
    return(i);
    }

    void DispList(LinkList *L)
    //显示链表
    {
    LinkList *p=L->next;
    while(p!=L)
    {
    BOOK_TYPE f=p->book;
    input(f);
    p=p->next;
    }
    printf("\n");
    }

    int GetElem(LinkList *L,int i,BOOK_TYPE &e)
    //获得链表指定位置元素
    {
    int j=0;
    LinkList *p;
    if(L->next!=L)
    {
    if(i==1)
    {
    e=L->next->book;
    return 1;
    }
    else
    {
    p=L->next;
    while(j {
    j++;
    p=p->next;
    }
    if(p==L)
    return 0;
    else
    {
    e=p->book;
    return 1;}
    }
    }
    else
    return 0;
    }

    int LocateElem(LinkList *L,BOOK_TYPE e)
    //判断元素位置
    {
    LinkList *p=L->next;
    int n=1;
    while(p!=L&&!(!strcmp(p->book.ISBN,e.ISBN)^!strcmp(p->book.bookname,e.bookname)^!3))
    //条件分析半合理//!3的引入是为了便利分析,达到逻辑判别式的构造要求。
    {p=p->next;
    n++;}
    if(p==L)
    return(0);
    else
    return(n);
    }

    int ListInsert(LinkList *&L,int i,BOOK_TYPE e)
    //插入元素
    {
    int j=0;
    LinkList *p=L,*s;
    if(p->next==L||i==1)
    {
    s=(LinkList *)malloc(sizeof(LinkList));
    s->book=e;
    s->next=p->next;
    p->next=s;
    return 1;
    }
    else
    {
    p=L->next;
    while(j {
    j++;
    p=p->next;}
    if(p==L)
    return 0;
    else
    {
    s=(LinkList *)malloc(sizeof(LinkList));
    s->book=e;
    s->next=p->next;
    p->next=s;
    return 1;
    }
    }
    }

    int ListDelete(LinkList *&L,int i,BOOK_TYPE &e)
    //删除指定位置元素
    {
    int j=0;
    LinkList *p=L,*q;
    if(p->next!=L)
    {if(i==1)
    {q=L->next;
    e=q->book;
    L->next=q->next;
    free(q);
    return 1;
    }
    if(i==0)
    printf("NO FIND");
    else
    {p=L->next;
    while(j {j++;
    p=p->next;}
    if(p==L)
    return 0;
    else
    {q=p->next;
    e=q->book;
    p->next=q->next;
    free(q);
    return 1;
    }
    }
    }
    else return 0;
    }

    void info(LinkList *p ,BOOK_TYPE *e)
    //输入函数
    {
    int i=0;
    LinkList *tp;
    printf("输入图书名称:");
    scanf("%6s",e->bookname);
    //printf("%d",!strcmp(p->book.bookname,e->bookname));
    //printf("%d",!strcmp(p->next->book.bookname,e->bookname));
    for(i=0,tp=p;i<=k;i++,tp=p->next)
    //进行图书判定
    if(!strcmp(tp->book.bookname,e->bookname))
    {
    printf("图书已经存在,请重新输入\n");
    printf("输入图书名称:");
    scanf("%6s",e->bookname);}
    printf("输入图书编号:");
    scanf("%6s",e->ISBN);
    for(i=0,tp=p;i<=k;i++,tp=p->next)
    //进行图书判定
    if(!strcmp(tp->book.ISBN,e->ISBN))
    {
    printf("图书已经存在,请重新输入\n");
    printf("输入图书编号:");
    scanf("%6s",e->ISBN);}
    printf("输入图书作者:");
    scanf("%6s",e->author);
    printf("输入图书出版社:");
    scanf("%6s",e->publisher);
    printf("输入图书价格:");
    scanf("%5f",&(e->money));
    printf("输入图书数目:");
    scanf("%3d",&(e->count));
    printf("输入年月日(年月日间空格)");
    scanf("%4d %2d %2d",&(e->day.year),&(e->day.month),&(e->day.day));
    while((e->day.monthday.month>12)||(31day.day||e->day.day printf("时间有误,请重复输入");
    printf("输入年月日(年月日间空格)");
    scanf("%4d %2d %2d",&(e->day.year),&(e->day.month),&(e->day.day));}
    }

    void line(LinkList *p,int n)
    { int i,j;BOOK_TYPE temp;
    LinkList *tp;
    for(i=0;i for(j=0,tp=p;jnext)
    { if(tp->book.money>tp->next->book.money)
    {temp=tp->next->book;
    tp->next->book=tp->book;
    tp->book=temp;
    }
    }
    }

    void BookAdd(LinkList *L,int i,BOOK_TYPE e)//添加图书
    {
    ListInsert(L,i,e);
    }

    void BookFind(LinkList *L,BOOK_TYPE e,BOOK_TYPE f){//查询图书
    int n;
    n=LocateElem(L,e);
    if(n==0)
    printf("no find\n");
    else
    {
    GetElem(L,n,f);
    input(f);
    }
    }

    void BookDel(LinkList *L,int i,BOOK_TYPE e)//删除图书
    {
    ListDelete(L,i,e);
    }

    void BookModify(LinkList *L,int i,BOOK_TYPE *e)
    {
    BOOK_TYPE k;
    ListDelete(L,i,k);
    info(L,e);
    ListInsert(L,i,*e);
    }

    void BookSort(LinkList *L)//图书排序
    {line(L,k+1);
    DispList(L);
    //LinkList *F;
    }

    void BookShow (LinkList *L)
    //显示全部图书
    {
    DispList(L);
    }

    void panding(LinkList *p,int n,BOOK_TYPE e)
    //函数是为了应对集合上关系一对多的情况
    {
    int i;
    LinkList *tp;
    for(i=0,tp=p;inext)
    {if(!strcmp(tp->book.publisher,e.publisher))
    input(tp->book);}
    }

    void main()
    {
    int j,s=0,p=1,c=2;
    //便于合理的表明特征
    BOOK_TYPE f;
    LinkList L;
    InitList(L);
    printf("我们假定的数学对应关系是图书与bookname,booknumber是一对一的,与publisher是一对多的.\n");
    printf(" 图书管理系统 \n");
    printf("1:添加图书 2:图书查询 \n");
    printf("3:图书删除 4:修改图书信息\n");
    printf("5:图书排序 6:图书显示\n");
    printf("7:退出\n");
    int sel,flag=1,i;
    while(flag==1)
    {
    printf("
    *******************************************************************************\n");
    printf("输入命令:");
    scanf("%2d",&sel);
    switch(sel)
    {
    case 1:printf("输入图书信息\n");
    BOOK_TYPE e;
    info(L,&e);
    k++;
    BookAdd(L,k,e);
    break;
    case 2://GetElem(L,-1,f);
    //input(f);
    printf("1:书名查询 2:书号查询 3:出版社查询\n");
    printf("请输入查询项目:");
    scanf("%d",&i);
    switch(i){
    case 1:BOOK_TYPE mark;printf("输入查询图书名字:");
    scanf("%6s",&mark.bookname);
    BookFind(L,mark,f);
    break;
    case 2:BOOK_TYPE marking;
    printf("输入查询图书书号:");
    scanf("%6s",&marking.ISBN);
    BookFind(L,marking,f);
    break;
    case 3:BOOK_TYPE marks;
    printf("输入查询图书出版社:");
    scanf("%6s",&marks.publisher);
    panding(L,k+2,marks);
    break;
    };break;
    case 3:BOOK_TYPE del,n;
    printf("输入删除图书名字:");
    scanf("%6s",del.bookname);
    j=LocateElem(L,del);
    GetElem(L,j,n);
    //printf("%d",j);
    //printf("%d",ListLength(L));
    //printf("%d",k);
    BookDel(L,j,n);
    k--;
    break;
    case 4:BOOK_TYPE mod,rep;
    printf("输入修改图书书号:");
    scanf("%6s",&mod.ISBN);
    j=LocateElem(L,mod);
    BookModify(L,j,&rep);
    break;
    case 5:BookSort(L);break;
    case 6:BookShow (L);break;
    case 7:flag=0;
    default :flag=0;
    }
    }
    DestroyList(L);
    }

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?