• PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 4KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 382
    下载次数
  • 2005-11-26 14:18
    上传日期
图书馆管理系统,买书借还书处理,大作业,代码写的很不错
C仿真图书馆管理系统.rar
  • www.pudn.com.txt
    218B
  • C仿真图书馆管理系统.cpp
    14.2KB
内容介绍
/* 图书馆管理系统 */ /*定义结构体类型*/ struct student /*建立学生型结构体*/ { char stunum[7]; /*学号*/ int number; /*已借书数量*/ }; struct book /*建立书籍型结构体*/ { int bnum; /*索书号*/ char bname[21]; /*书名*/ int outnum; /*目前出借量*/ int time; /*出借次数*/ int innum; /*库存余量*/ }; struct riqi { int year; int month; int day; int yd; }; struct relation /*建立借还关系型结构体*/ { char stunum[7]; /*学号*/ int bnum; /*索书号*/ struct riqi date; /*借书日期*/ }; struct list { struct list *next; int bnum; char bname[21]; int num; int time; }; /*定义全局变量*/ int N,M,L,K=10; /*N、M、L,K分别为学生人数、书籍种数、借还关系数和每个同学最多能借的书籍数量*/ static int amount[2001][200][13]; static int times[2001][200][13]; char fname1[21],fname2[21],fname3[21]; /*分别为三个文件的文件名*/ #define length1 sizeof(struct student) /*三个类型的结构体各自长度*/ #define length2 sizeof(struct book) #define length3 sizeof(struct relation) #include"stdio.h" #include"string.h" #include"time.h" /*buildfile1的功能是建立学生人事文件*/ void buildfile1() { struct student stu; int j; FILE *fp; printf("请输入学生人事文件名(长度不超过20位):"); gets(fname1); fp=fopen(fname1,"wb"); printf("请输入学生数:"); scanf("%d",&N); getchar(); for(j=1; j<=N; j++) { printf("请输入第%d位学生学号(长度不超过6位):",j); gets(stu.stunum); printf("请输入第%d位学生已借书数量(数量不超过10):",j); scanf("%d",&stu.number); fwrite(&stu,length1,1,fp); printf("\n"); getchar(); } fclose(fp); return; } /*buildfile2的功能是建立书籍档案文件*/ void buildfile2() { struct book boo; int j,num,rest; FILE *fp; printf("请输入书籍档案文件名(长度不超过20位):"); gets(fname2); fp=fopen(fname2,"wb"); printf("请输入书籍种数:"); scanf("%d",&M); for(j=1; j<=M; j++) { printf("请输入第%d本书索书号(整型不超过2000):",j); scanf("%d",&boo.bnum); getchar(); printf("请输入第%d本书书名(长度不超过20位):",j); gets(boo.bname); printf("请输入第%d本书目前出借量:",j); scanf("%d",&num); boo.outnum=num; printf("请输入第%d本书目前库存量:",j); scanf("%d",&rest); boo.innum=rest; fwrite(&boo,length2,1,fp); printf("\n"); getchar(); } fclose(fp); return; } /*buildfile3的功能是建立借还关系文件*/ void buildfile3() { struct relation rela; int j,i,ye,mon,da,p,q,das[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; FILE *fp; printf("请输入借还关系文件名(长度不超过20位):"); gets(fname3); fp=fopen(fname3,"wb"); printf("请输入已有借还关系数:"); scanf("%d",&L); getchar(); for(j=1; j<=L; j++) { printf("请输入第%d个借还关系的学号(长度不超过6位):",j); gets(rela.stunum); printf("请输入第%d个借还关系的索书号(整型不超过2000):",j); scanf("%d",&rela.bnum); printf("请输入第%d个借还关系的借书日期\n",j); printf("年度: "); scanf("%d",&ye); p=(ye%4==0&&ye%100!=0)||(ye%400==0); if(p) das[2]=29; printf("月份: "); scanf("%d",&mon); printf("号: "); scanf("%d",&da); rela.date.year=ye; rela.date.month=mon; rela.date.day=da; rela.date.yd=0; q=rela.bnum; times[q][ye-1900][mon]++; for(i=1; i<mon; i++) rela.date.yd+=das[i]; rela.date.yd+=da; fwrite(&rela,length3,1,fp); printf("\n"); getchar(); } fclose(fp); return; } /*print1的功能是输出学生人事文件*/ void print1() { struct student stu; int j; FILE *fp; fp=fopen(fname1,"rb"); printf("学号 已借书数量\n"); for(j=0; j<N; j++) { fread(&stu,length1,1,fp); printf("%-10s%-10d%\n", stu.stunum,stu.number); } printf("\n"); fclose(fp); return; } /*print2的功能是输出书籍档案文件*/ void print2() { struct book boo; int j; FILE *fp; fp=fopen(fname2,"rb"); printf("索书号 书名 目前出借量 目前库存量 \n"); for(j=0; j<M; j++) { fread(&boo,length2,1,fp); printf("%-12d%-12s%-8d%10d%\n", boo.bnum,boo.bname,boo.outnum,boo.innum); } printf("\n"); fclose(fp); return; } /*print3的功能是输出借还关系文件*/ void print3() { struct relation rela; int j; FILE *fp; fp=fopen(fname3,"rb"); printf("学号 索书号 借书日期\n"); for(j=0; j<L; j++) { fread(&rela,length3,1,fp); printf("%-10s%-10d%6d年%6d月%6d日\n",rela.stunum,rela.bnum,rela.date.year,rela.date.month,rela.date.day); } printf("\n"); fclose(fp); return; } /*import的功能是统计每天各种类型书籍的进货量*/ #include"stdlib.h" #include"math.h" void day_import() { struct book boo[20]; int j,t; FILE *fp; struct riqi da; struct tm *star; time_t t1; t1=time(NULL); star=localtime(&t1); da.year=star->tm_year+1900; da.month=star->tm_mon+1; da.day=star->tm_mday; da.yd=star->tm_yday; fp=fopen(fname2,"r+");/*以读写方式打开二进制书籍档案文件*/ for(j=0; j<M; j++) { fread(&boo[j],length2,1,fp); /*依次读入每本书的信息*/ t=fabs(rand()); /*随机设置每本书的进货量*/ amount[boo[j].bnum][da.year-1900][da.month]+=t; boo[j].innum+=t; /*加入这本书的库存量*/ printf("进货日期%6d年%6d月%6d日\n",da.year,da.month,da.day); printf("%10d号书本日进货量为%6d本\n",boo[j].bnum,t); printf("%10d号书的库存量现为%6d本\n",boo[j].bnum,boo[j].innum); } fclose(fp); /*关闭文件*/ fp=fopen(fname2,"r+"); /*以读写方式打开二进制书籍档案文件*/ for(j=0; j<M; j++) fwrite(&boo[j],length2,1,fp); fclose(fp); /*关闭文件*/ printf("\n"); print2(); } /*borrow函数的功能是借阅图书(按日常习惯约定,每本书每人只能借一本)*/ void borrow() { FILE *fp1,*fp2,*fp3; struct student stu[80]; struct book boo[200]; struct relation rela; struct riqi dat; struct tm *star; time_t t1; char stunum[10]; int i,j,bnum,num=0; t1=time(NULL); star=localtime(&t1); dat.year=star->tm_year+1900; dat.month=star->tm_mon+1; dat.day=star->tm_mday; dat.yd=star->tm_yday; printf("借书日期%6d年%6d月%6d日\n",dat.year,dat.month,dat.day); getchar(); printf("请输入您的学号(长度不超过6位): "); gets(stunum); do { printf("请输入要借的本数(不大于5):"); scanf("%d",&num); if(num>5) printf("对不起,本图书馆每次最多只能借五本书,谢谢合作!\n"); } while(num<=0||num>5); for(i=0; i<num; i++) { getchar(); printf("请输入您要借的书的索书号(整型不超过2000):"); scanf("%d",&bnum); fp1=fopen(fname1,"r+"); for(j=0; j<N; j++) { fread(&stu[j],length1,1,fp1); if(strcmp(stu[j].stunum,stunum)==0) if(stu[j].number>K-5) { printf("对不起,您的剩余借阅量不足!\n"); return; } } fclose(fp1); fp2=fopen(fname2,"r+"); for(j=0; j<M; j++) { fread(&boo[j],length2,1,fp2); if(boo[j].bnum==bnum) if(boo[j].innum==0) { printf("对不起,您要借阅的书已全部借出!\n"); return; } else { times[boo[j].bnum][dat.year-1900][dat.month]++; boo[j].outnum++; boo[j].innum--; } } fclose(fp2); for(j=0; j<N; j++) if(strcmp(stu[j].stunum,stunum)==0) stu[j].number++; fp1=fopen(fname1,"r+"); for(j=0; j<N; j++) fwrite(&stu[j],length1,1,fp1); fclose(fp1); fp2=fopen(fname2,"r+"); for(j=0; j<M; j++) fwrite(&boo[j],length2,1,fp2); fclose(fp2); L++; strcpy(rela.stunum,stunum); rela.bnum=bnum; rela.date.year=dat.year; rela.date.month=dat.month; rela.date.day=dat.day; rela.date.yd=dat.yd; fp3=fopen(fname3,"ab");
评论
    相关推荐
    • 图书馆管理系统.zip
      一个简单的图书馆管理系统,能实现基本的借阅还书登记管理
    • 图书馆管理系统
      图书馆管理系统附加MYSQL数据库 (1)用户登录图书馆管理系统后,可看到图书借阅排行榜,通过排行榜可以看出借阅图书的名称、图书类型、借阅次数等相关信息。 (2)单击“系统设置”/“图书馆信息”命令,对图书馆...
    • 图书管理系统 图书馆
      本系统是简单的图书管理系统 简单的对读者、图书、借书还书进行管理 是我课程设计的一个题目 用VS2008开发 数据库SQL Server 2000 简单易用 对初学者有很好的学习帮助 代码是我精心修改的
    • 图书馆管理系统
      图书馆管理系统源码下载 图书馆管理系统源码 图书馆管理系统是一款专业的图书馆管理软件,其中包含读者信管理,图书管理,图书借还,系统查询,图书馆信息等模块
    • 图书馆图书管理系统
      题目11:图书馆图书管理系统 图书馆管理系统是对书籍的借阅及读者信息进行统一管理的系统. 具体包括读者的借书,还书,书籍的预定;图书管理员的书籍借出处理,书籍归还处理,预定信息处理;系统管理员的系统维护,包括增加...
    • 图书馆管理系统
      基于c#的图书馆管理系统 登录系统 :读者和管理登录 管理: 读者管理(读者增加管理,读者注销管理) 图书管理(图书增加管理,图书删除管理) 流通管理(图书借阅,图书归还,续借) 查询: 管理员查询:管理员可以...
    • 图书馆管理系统
      用户登录图书馆管理系统后,进入图书馆主界面,在此界面中,可看到图书借阅排行榜,通过排行榜可以看出借阅图书的名称、图书类型、借阅次数等相关信息。(2)单击“系统设置”/“图书馆信息”命令,对图书馆信息进行...
    • 图书馆管理系统 图书馆管理系统
      图书馆管理系统 用VB.NET语言编写的系统 图书馆管理系统 用VB.NET语言编写的系统 图书馆管理系统 用VB.NET语言编写的系统
    • 图书馆管理系统
      (1)用户登录图书馆管理系统后,可看到图书借阅排行榜,通过排行榜可以看出借阅图书的名称、图书类型、借阅次数等相关信息。 (2)单击“系统设置”/“图书馆信息”命令,对图书馆信息进行设置操作。 (3)单击...
    • 图书馆管理系统
      (1)用户登录图书馆管理系统后,可看到图书借阅排行榜,通过排行榜可以看出借阅图书的名称、图书类型、借阅次数等相关信息。 (2)单击“系统设置”/“图书馆信息”命令,对图书馆信息进行设置操作。 (3)单击...