求c语言编程图书管理

\u7528C\u8bed\u8a00\u7f16\u7a0b\u56fe\u4e66\u7ba1\u7406\u7a0b\u5e8f

\u4e3a\u4ec0\u4e48\u8981\u7528\u8fd9\u4e48\u53e4\u8001\u7684\u65b9\u5f0f\uff1f\u8fd9\u5f88\u9ebb\u70e6\u7684\u3002

\u53ef\u4ee5\u7528Asp.net\u6216\u7c7b\u4f3c\u7684\u4e1c\u897f\u3002

\u7528c\u8bed\u8a00\u5199\uff0c\u4f1a\u7d2f\u6b7b\u4f60\u7684\u3002

\u6709\u5f88\u591a\u4eba\u95ee\u8fc7\u4e86\uff0c
\u7ed9\u4f60\u4e00\u4e2a\u94fe\u63a5\uff0c\u53c2\u8003\u4e00\u4e0b\u5427\uff0c
\u8fd9\u79cd\u8bbe\u8ba1\u5efa\u8bae\u8fd8\u662f\u81ea\u5df1\u5199\uff0c
\u8fd9\u79cd\u7b80\u5355\u7684\u4e0d\u591a\u7ec3\u7ec3\uff0c\u8981\u662f\u5c06\u6765\u6709\u66f4\u590d\u6742\u4e00\u4e9b\u7684\uff0c\u5c31\u6293\u778e\u4e86\u3002

看看这个符合不:

/*图书管理系统*/
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define LEN sizeof(struct booklist)
#define LEN1 sizeof(struct readers)

typedef struct readers//借书信息结构体
{
char name[30];//借书人的姓名
struct readers *next2;
}reader;

typedef struct booklist //书本信息结构体
{
char num[20]; //书号
char name[30]; //书名
char concern[50];//出版社
char date[20];//出版日期
char author[20];//作者
int page;//页数
int price;//价格
int imformation;//图书剩余数量
reader *a;//借阅人

struct booklist *next;
}Book;

void creatlist();//新书入库
void print(Book *head);//显示所有书本2
void save(Book *head);//储存书本信息
void AddBook();//插入新增书本
void DelBook();//删除指定书本
Book *read();//显示所有书本1
void Bookconsult(); //查询书本
void guanli();//管理(借书或还书)
int Borrow();//借书
int Return();//还书
Book *sort(Book *head);//书本信息按书号排序
Book *head=NULL,*p1=NULL,*p2=NULL;
//主函数
int main(void)

{
FILE *fp;
char mima;
char password[20];
system("color 5f");
if((fp=fopen("mima.txt","r+"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}
fscanf(fp,"%s ",&mima);
printf("\n===============================图书管理系统=====================================\n");
do
{
printf("\n 进入系统之前要先输入密码:");
scanf("%s",password);
while(strcmp(password,&mima)!=0){
printf(" 密码错误!请重新输入:");
scanf("%s",password);
}
}while(strcmp(password,&mima)!=0);

if(strcmp(password,&mima)==0)
printf(" 欢迎进入图书管理系统!\n\n");

int choice,k=1;
while(k==1)
{
printf(" 请选择你需要的操作\n\n");
printf(" 1.新书入库\n");
printf(" 2.插入新增书本\n");
printf(" 3.删除指定书本\n");
printf(" 4.显示所有书本\n");
printf(" 5.查询书本\n");
printf(" 6.管理(借书或还书)\n");
printf(" 0.退出系统 \n");
printf("请输入你需要的操作(0-6):");
scanf("%d",&choice);
switch(choice)
{
case 1: creatlist();break;
case 2: AddBook();break;
case 3: DelBook();break;
case 4: head=read();system("CLS");print(head);break;
case 5: system("CLS");Bookconsult();break;
case 6: guanli();break;
default: k=0;break;
}
}
printf(" 谢谢使用本系统!再见!\n\n");
return 0;
}

//新书入库
void creatlist()
{
int i,n;
printf("请输入入库新书的数目:");
scanf("%d",&n);
p2=head=(Book *)malloc(LEN); //创建带有头结点的链表
p2->a=(reader *)malloc(LEN1);
p2->a->next2=NULL;
p2->next=NULL;
if(n>0){
printf("请输入书的信息:\n\n");
printf("请输入第1本:\n");
for(i=1;i<=n;i++)
{
p1=(Book *) malloc(LEN);
printf("书号: "); scanf("%s",p1->num);
printf("书名: "); scanf("%s",p1->name);
printf("出版社: "); scanf("%s",p1->concern);
printf("出版日期: "); scanf("%s",p1->date);
printf("作者: "); scanf("%s",p1->author);
printf("书本页数: "); scanf("%d",&p1->page);
printf("书本价格(元): "); scanf("%d",&p1->price);
p1->a=(reader *)malloc(LEN1);
p1->a->next2=NULL;
p1->imformation=1;
p1->next=NULL;
p2->next=p1;
p2=p1;
if(i<n) printf("\n请输入第%d本:\n",i+1);
}
head=sort(head);
save(head);
print(head);
}
}
//插入新增书本
void AddBook()
{
FILE *fp,*fp2;
Book *addbook=NULL;
reader *p0=NULL;
fp=fopen("书本信息.txt","a+"); //追加方式打开文件
fp2=fopen("借阅信息.txt","a+");
addbook=(Book *)malloc(LEN);
printf("输入书本信息:\n");
printf("书号: "); scanf("%s",addbook->num);
printf("书名: "); scanf("%s",addbook->name);
printf("出版社: "); scanf("%s",addbook->concern);
printf("出版日期: "); scanf("%s",addbook->date);
printf("作者: "); scanf("%s",addbook->author);
printf("书本页数: "); scanf("%d",&addbook->page);
printf("书本价格(元): "); scanf("%d",&addbook->price);
p0=(reader *)malloc(LEN1);
p0->next2=NULL;
addbook->a=p0;
addbook->imformation=1;
addbook->next=NULL;
fwrite(addbook,LEN,1,fp); /*块写*/
fwrite(p0,LEN1,1,fp2);
fclose(fp);
fclose(fp2);
}
//删除指定书本
void DelBook()
{
Book *head=NULL,*p=NULL,*q=NULL;
char bookname[30];
head=read();
printf("输入要删除的书名: ");
scanf("%s",bookname);
p=head;
while(p!=NULL)/*按名字查找要删除的图书*/
{
if(strcmp(p->name,bookname)==0)
{
if(p==head)
{
head=head->next;
break;
}
else
{
q->next=p->next;
break;
}
}
q=p;
p=p->next;
}
save(head);
}

//显示所有书本2
void print(Book *head)
{
Book *p=NULL;
reader *p0=NULL;
p=head->next;
system("CLS");
printf("*******************************************************************************\n");
while(p!=NULL)
{
printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) : %d\n剩余数量 : %d\n",p->num,p->name,p->concern,p->date,p->author,p->page,p->price,p->imformation);
printf("借阅图书的人:");
if(p->a->next2==NULL) printf("------------暂无借阅人!");
else
{
for(p0=p->a->next2;p0!=NULL;p0=p0->next2)
{
printf("%s ",p0->name);
}
}
p=p->next; /* p后移一个结点 */
printf("\n");
printf("\n");
}
}
//书本按书号排序
Book *sort(Book *head)
{
Book *p1=NULL,*p2=NULL,*p3=NULL,*min=NULL,*min2=NULL,*head2=head->next;
p1=head2;
while(p1->next!=NULL)
{
min=p2=p1; /*把首结点作为最小值*/
while(p2->next!=NULL)
{
if(strcmp(min->num,p2->next->num)>0) /*首结点与下一结点比较*/
{
min2=p2;
min=p2->next;
}
p2=p2->next;
}
if(min!=p1)
{
min2->next=min->next; /*删除最小结点*/
min->next=p1; /*插入最小结点*/
if(p1==head2) head2=min;
else p3->next=min; /*p3为min前的结点指针*/
p3=min;
}
else
{
p3=p1;
p1=p1->next;
}
}
head->next=head2;
return(head);
}
//储存书本信息
void save(Book *head)
{
FILE *fp,*fp2;
Book *p=NULL;
reader *q=NULL;
fp=fopen("书本信息.txt","wb");
fp2=fopen("借阅信息.txt","wb");
p=head;
while(p!=NULL)
{
fwrite(p,LEN,1,fp); /*逐个结点写文件*/
for(q=p->a;q!=NULL;q=q->next2)
{fwrite(q,LEN1,1,fp2);}
p=p->next;
}
fclose(fp);
fclose(fp2);
}
//显示所有书本1
Book *read()
{
FILE *fp,*fp2;
Book *p=NULL,*p1=NULL,*head=NULL;
reader *p0=NULL,*p2=NULL;
if((fp=fopen("书本信息.txt","rb"))==NULL) printf("不能打开文件或文件不存在!\n");
if((fp2=fopen("借阅信息.txt","rb"))==NULL) printf("不能打开文件或文件不存在!\n");
head=(Book *)malloc(LEN);
fread(head,LEN,1,fp);
p1=head;
p0=(reader *)malloc(LEN1);
fread(p0,LEN1,1,fp2);
p0->next2=NULL;
head->a=p0;
head->next=NULL;
p=(Book *)malloc(LEN);
while(fread(p,LEN,1,fp)) /*逐个结点读取*/
{
p1->next=p;
p1=p1->next;
p0=(reader *)malloc(LEN1);
p1->a=p0;
while(fread(p0,LEN1,1,fp2))
{
if(p0->next2==NULL)
{
p2=p0;
p0=(reader *)malloc(LEN1);
break;
}

p2=p0;
p0=(reader *)malloc(LEN1);
p2->next2=p0;
}
free(p0);
p2->next2=NULL;
p=(Book *)malloc(LEN);
}
p1->next=NULL;
free(p);
fclose(fp);
fclose(fp2);
head=sort(head);
if(head!=NULL) return(head);
else
{
printf("文件为空!\n");
return 0;
}
}

//查询书本
void Bookconsult()
{
int n,m=1,sign=0;
Book *p=NULL,*p1=NULL,*p0=NULL,*head=NULL;
reader *p2=NULL;
char a[30],b[20],c[20];
head=read();
while(m==1)
{
printf(" 请选择你查询书本的方式: 1.按书名 2.按书的编号 3.按书的作者 4.退出查询\n");
printf("输入=");
scanf("%d",&n);
switch(n)
{
case 1: printf("请输入书名:");
scanf("%s",a);
p0=head;
while(p0!=NULL)
{
if(strcmp(a,p0->name)==0)
{ system("CLS");
printf("*******************************************************************************\n");
printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) : %d\n剩余数量 : %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation);
printf("借阅图书的人:");
if(p0->a->next2==NULL) printf("------------暂无借阅人!\n");
else
{
for(p2=p0->a;(p2=p2->next2)!=NULL;)
{printf("%s ",p2->name);}
}
printf("\n");
sign=1;
p0=p0->next;
}
else p0=p0->next;
}
if(sign==0) printf("没有这本书的信息.\n");
break;
case 2: printf("请输入书的编号:");
scanf("%s",b);
p0=head;
while(p0!=NULL)
{
if(strcmp(b,p0->num)==0)
{
printf("*******************************************************************************\n");
printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) : %d\n剩余数量 : %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation);
printf("借阅图书的人:");
if(p0->a->next2==NULL)
printf("------------暂无借阅人!\n");
else
{
for(p2=p0->a;(p2=p2->next2)!=NULL;)
{printf("%s ",p2->name);}
}
printf("\n");
break;
}
else p0=p0->next;
}
if(p0==NULL) printf("没有这本书的信息.\n");
break;
case 3: printf("请输入书的作者:");
scanf("%s",c);
p0=head;
while(p0!=NULL)
{
if(strcmp(c,p0->author)==0)
{
printf("*******************************************************************************\n");
printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) %d\n剩余数量 : %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation);
printf("借阅图书的人:");
if(p0->a->next2==NULL) printf("------------暂无借阅人!\n");
else
{
for(p2=p0->a;(p2=p2->next2)!=NULL;)
{printf("%s ",p2->name);}
}
printf("\n");
sign=1;
p0=p0->next;
}
else p0=p0->next;
}
if(sign==0) printf("没有这本书的信息.\n");
break;
default: m=0;break;
}
}
}
void guanli()
{
int s;
printf("1:借书\n2:还书\n");
printf("请选择:");
scanf("%d",&s);
switch(s){
case 1: Borrow();break;
case 2: Return();break;

}
}

//借书
int Borrow()
{
char a[30],b[30],c;
Book *p0=NULL,*head=NULL;
reader *p2=NULL,*p3=NULL;
head=read();
printf("请输入要借的书的书号:");
scanf("%s",a);
p0=head->next;
while(p0!=NULL)
{
if((strcmp(a,p0->num))==0)
{
if(p0->imformation>0)
{
printf("图书在馆,可以借出,是否确定借出?'y'or'n'\n");
c=getchar();
scanf("%c",&c);
if(c=='y')
{
printf("请输入你的名字:");
scanf("%s",b);
p3=(reader *)malloc(LEN1);
strcpy(p3->name,b);
if(p0->a->next2==NULL)
{
p0->a->next2=p3;
p3->next2=NULL;
}
else
{
for(p2=p0->a;p2->next2!=NULL;p2=p2->next2);
p2->next2=p3;
p3->next2=NULL;
}
--p0->imformation;
save(head);
printf("操作完成,可以带走图书。\n");
return 1;
break;
}
else
{
return 0;
break;
}
}
else printf("很抱歉,该图书不在图书馆.\n");return 0;break;
}
else p0=p0->next;
}
if(p0==NULL)
{
printf("很抱歉,没有这本书。\n");
return 0;
}
else return 2;
}

//还书
int Return()
{
Book *p0=NULL,*head=NULL;
reader *p2=NULL,*p3=NULL;
char c[20],b[30];
head=read();
printf("请输入要还的书的书号:");
scanf("%s",&c);
p0=head->next;
while(p0!=NULL)
{
if((strcmp(c,p0->num))==0)
{
printf("请输入你的名字:");
scanf("%s",&b);
if(p0->a->next2==NULL) {printf("你没有借这本书!\n");break;}
else
{
p3=p0->a;
p2=p3->next2;
while(p2!=NULL)
{
if(strcmp(p2->name,b)==0)
{
if(p2->next2==NULL) {p3->next2=NULL;free(p2);break;}
else
{
p3->next2=p2->next2;
free(p2);
break;
}
}
else
{
p3=p2;
p2=p2->next2;
}
}
if(p2==NULL) printf("你没有借这本书!\n");
}
++p0->imformation;
save(head);
printf("书已归馆,操作完成。\n");
return 1;
break;
}
else p0=p0->next;
}
if(p0==NULL)
{
printf("没有这本书。\n");
return 0;
}
else return 2;
}

我写过这个,我们的作业也是这个,但是和你的优点不一样,我的功能是:增减图书,更改图书资料,查找图书,登陆账号与密码的更改,统计图书,查询,,反正功能比你的多点,但是没有借书还书的功能,如果你要的话可以给你改。但是你那个悬赏分少的可怜, 除非有现成的,不然根本没人理你

  • 姹傚浘涔棣绠$悊绯荤粺绋嬪簭(c璇█)
    绛旓細C绋嬪簭椤圭洰-鍥句功绠$悊绯荤粺鏀惰棌#include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.h"/*鍥句功鐩稿叧淇℃伅*/struct bookinf //瀹氫箟鍥句功鐩稿叧淇℃伅缁撴瀯浣搟 int num; char bname[20]; char wname[10]; char clanum[14]; char pubcom[10]; char pubtime[10]; float price;};structmanage //...
  • 鐢C璇█缂栧啓涓涓鍥句功淇℃伅绠$悊绯荤粺
    绛旓細鎹簡涓涓紝浣犵湅鐪嬶細include include include include//杈撳叆/杈撳嚭鏂囦欢娴佺被 usingnamespacestd;constintMaxr=100;//鏈澶氱殑璇昏 constintMaxb=100;//鏈澶氱殑鍥句功 constintMaxbor=5;//姣忎綅璇昏呮渶澶氬熶簲鏈功 //璇昏呯被,瀹炵幇瀵硅鑰呯殑淇℃伅鐨勬弿杩 classReader { private:inttag;//鍒犻櫎鏍囪1:宸插垹0:鏈垹 ...
  • 缂栧埗绋嬪簭,瀹炵幇涓涓鍥句功淇℃伅绠$悊绯荤粺,鍔熻兘鍖呮嫭褰曞叆銆佹煡璇㈢瓑銆(c璇█)
    绛旓細甯屾湜鑳藉甯姪浣 include "stdio.h"include<graphics.h> include "conio.h"include<stdlib.h> include<string.h> void main(){void adm1(),adm2(),build(),huan(),borrow(),dele();adm1();} void adm1(){ FILE *fp,*p ;char adp[20],password[20];int i,n=0;textbackground(2);...
  • 鐢C璇█缂栧啓涓涓畝鍗曠殑鍥句功绠$悊灏忕▼搴
    绛旓細婧愪唬鐮佸涓嬶細include<iostream> include<iomanip> include<string> include<fstream> include<stdio.h> using namespace std;const int maxb=10000; //鏈澶氱殑鍥句功 class book//鍥句功绫 { int tag; //鍒犻櫎鏍囪1:宸插垹0:鏈垹 int number; //isbn涔﹀彿 char name[20]; ...
  • 鐢C璇█ 缂栫▼ 鍥句功棣绠$悊绋嬪簭
    绛旓細鐢C璇█ 缂栫▼ 鍥句功棣绠$悊绋嬪簭 瑕佹眰濡備笅:1.鏂颁功鍏ュ簱:鍥句功淇℃伅鍖呮嫭涔﹀悕,涔﹀彿,搴撳瓨閲,鐜板瓨閲(搴撳瓨閲忓噺鍘诲熻蛋鐨勫浘涔)鍏4椤.棣栧厛杈撳叆3鏈功鐨勪俊鎭,骞跺皢鍏跺瓨鏁扮粍book涓.褰撴湁鏂颁功鍏ュ簱鏃,鍏堝垽鏂暟缁勪腑鏄惁鏈夋涔... 瑕佹眰濡備笅:1.鏂颁功鍏ュ簱:鍥句功淇℃伅鍖呮嫭涔﹀悕,涔﹀彿,搴撳瓨閲,鐜板瓨閲(搴撳瓨閲忓噺鍘诲熻蛋鐨勫浘涔)鍏4椤.棣栧厛...
  • C璇█鍥句功淇℃伅绠$悊绯荤粺,鍏蜂綋鎿嶄綔鍖呮嫭鍥句功淇℃伅鐨勫綍鍏ャ佹坊鍔犮佹樉绀恒佹煡鎵...
    绛旓細cout<<"鍥句功棣嗕腑鏌ユ棤姝や功!"<<endl;else cout<<"鍥句功棣嗕腑姝や功淇℃伅濡備笅:"<<endl;cout<<result->first<<":"<<result->second<<endl;} void Library::delete_book_num(string A){ map<string,string>::iterator result =find(book_num.begin(), book_num.end(), A);if(result==book_...
  • 涓涓畝鍗曠殑鍥句功绠$悊绯荤粺,C璇█
    绛旓細printf("===澶у淇℃伅绠$悊绯荤粺===\n");printf("---\n");printf("1:鍔炲叕瀹ょ鐞 5:璐㈠姟绠$悊\n");printf("2:鏁欏姟绠$悊 6:鍥句功绠$悊\n");printf("3:绉戠爺绠$悊 7:璁惧绠$悊\n");printf("4:浜轰簨绠$悊 8:鍚庡嫟绠$悊\n");printf(" 0:閫鍑虹郴缁焅n");printf("---\n");printf(...
  • c璇█鍥句功绠$悊绯荤粺
    绛旓細1.鍥句功淇℃伅鐨勯噰闆2.鏂板浘涔︾殑鎻掑叆3.鍥句功淇℃伅鐨勬煡璇4.鍥句功鐨勫垹闄5.鍥句功鐨勬樉绀6.鍥句功鐨勫熼槄7.鍥句功鐨勫綊杩8.閫鍑绠$悊绯荤粺鏈夎繖浜涘姛鑳借阿璋㈠悇浣嶅ぇ鑳戒簡鏄▼搴忓晩... 1.鍥句功淇℃伅鐨勯噰闆2.鏂板浘涔︾殑鎻掑叆3.鍥句功淇℃伅鐨勬煡璇4.鍥句功鐨勫垹闄5.鍥句功鐨勬樉绀6.鍥句功鐨勫熼槄7.鍥句功鐨勫綊杩8.閫鍑虹鐞嗙郴缁熸湁杩欎簺鍔熻兘 璋㈣阿鍚勪綅澶ц兘浜嗘槸绋嬪簭鍟...
  • 鍥句功棣鍥句功绠$悊绯荤粺(c璇█)
    绛旓細2009-06-14 鐢–璇█鍐欎釜鍥句功棣嗙郴缁 24 2010-01-18 c璇█鍥句功绠$悊绯荤粺绋嬪簭璁捐 47 2010-06-21 鎬庢牱鐢–璇█鍒朵綔鍥句功棣嗙鐞嗙郴缁 177 2015-05-18 鐢╟璇█鍐欏浘涔﹂绠$悊绯荤粺 1 2016-07-13 鎬ユ眰C璇█鍥句功绠$悊绯荤粺浠g爜 2012-01-05 姹傚ソ蹇冮珮鎵嬫寚瀵煎浣曠敤c璇█璁捐涓涓畝鍗曠殑鍥句功棣嗗浘涔︾鐞嗙郴缁 1 鏇村绫...
  • 姹傜函c璇█缂栧啓鐨 鍥句功淇℃伅绠$悊绯荤粺 a~
    绛旓細//鍥句功绠$悊鍛榹private:intnumber;intage;charname[20];public:controlloer();controlloer(intc,inta,charb[20]);intgetnumber();intgetage();char*getname();voidreworkage(inti);voidreworkname(chara[20]);};controlloer::controlloer(){number=0;charb[20]="noone";age=0;strcpy(name,b);}...
  • 扩展阅读:少儿编程学c++值得吗 ... 少儿编程十大品牌 ... 少儿编程一共有几级 ... 少儿编程收费价目表 ... 少儿编程哪个含金量高 ... 少儿学编程的弊端 ... 免费自学编程培训班 ... 少儿编程课程免费自学 ... 少儿编程有必要让孩子学吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网