2 anna 1314 Anna_1314 于 2014.06.18 20:27 提问

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

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

1个回答

haoyuebuzui
haoyuebuzui   2014.06.18 23: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);
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!