SQLServer课程设计图书馆管理系统.docx

上传人:b****8 文档编号:10053594 上传时间:2023-02-08 格式:DOCX 页数:44 大小:668.52KB
下载 相关 举报
SQLServer课程设计图书馆管理系统.docx_第1页
第1页 / 共44页
SQLServer课程设计图书馆管理系统.docx_第2页
第2页 / 共44页
SQLServer课程设计图书馆管理系统.docx_第3页
第3页 / 共44页
SQLServer课程设计图书馆管理系统.docx_第4页
第4页 / 共44页
SQLServer课程设计图书馆管理系统.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

SQLServer课程设计图书馆管理系统.docx

《SQLServer课程设计图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《SQLServer课程设计图书馆管理系统.docx(44页珍藏版)》请在冰豆网上搜索。

SQLServer课程设计图书馆管理系统.docx

SQLServer课程设计图书馆管理系统

一、题目描述

本数据库的名字叫做图书馆管理系统数据库,主要是用来存储和修改图书馆中包括图书、图书类型、借阅者重要资料。

二、需求分析

随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。

另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。

提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。

三、数据库中各表结构的清单

3.1数据库中各表主要有:

3.1.1图书表:

数据名称

图书编号

图书类别编号

图书名称

作者

价格

数量

3.1.2图书类别表:

数据名称

图书类别编号

类别描述

图书数量

3.1.3借阅表:

数据名称

借书证号

身份证号

姓名

性别

3.1.4借阅卡表:

数据名称

借书证号

卡号

借阅卡等级

借阅数

初始登记时间

3.2数据间的联系:

1.图书表<--图书类型表

2.借阅者表<-->借阅者身份表

3.图书表---借阅者表

3.3数据操作:

添加、删减元组、修改相应属性的数据。

3.4字段定义

表名

主键

字段名

字段类型

字段大小

字段格式

查阅类型

1.

出版社

出版社ID

出版社ID

文本

50

文本框

名称

文本

50

文本框

2.

借阅者

借阅号

借阅号

数字

长整型

文本框

姓名

文本

8

文本框

通信地址

文本

50

文本框

电话

数字

长整型

文本框

3.

图书

图书编号

图书编号

文本

50

文本框

分类号

文本

50

组合框

书名

文本

50

文本框

出版社ID

文本

50

文本框

作者

文本

8

文本框

单价

货币

货币

数量

数字

长整型

文本框

4.

图书分类

分类号

分类号

文本

50

文本框

分类名称

文本

50

文本框

5.

借书记录

借阅号

借阅号

数字

长整型

组合框

图书编号

图书编号

文本

50

组合框

借阅日期

日期/时间

短日期

应还日期

日期/时间

短日期

已还

文本

50

文本框

6.

还书记录

借阅号

借阅号

数字

长整型

组合框

图书编号

图书编号

文本

50

组合框

还书日期

日期/时间

短日期

四.源程序代码:

#include

#include

#include

#include

#include

#defineSTACK_INIT_SIZE10

#defineOK1

#defineTRUE1

#defineFALSE0

#defineERROR0

structstudent/*定义学生类型,用于存放借出的书籍*/

{

intcarnum;

charlendbook[10];

}student[1000];

structemploy/*定义职工类型*/

{

intemploynum;

charemployname[15];

intemployage;

charemploysex[2];

charemployleve[10];

longintemploytage;

}employ[50];

structbook/*定义书的类型*/

{

intbooknum;

charbookname[10];

charbookcreat[10];

intturefalse;/*用于借书和还书模块判断一本书是否借出的条件*/

}book[1000];

structcar/*借书卡的数据类型*/

{

intcarnum;

charstudentname[10];

intstudentclass;

}car[100];

huanbook()/*还书函数*/

{

FILE*fp,*fp2;/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/

inti,n;

intcarnum;

charlendbook[10];

printf("请你输入你的卡号\n");

scanf("%d",&carnum);

fp=fopen("car.txt","r");/*读取卡号记录*/

for(i=0;fread(&car[i],sizeof(structcar),1,fp)!

=0;i++)/*for循环判断卡号是否存在*/

{

if(car[i].carnum==carnum)/*卡号存在,进入下一循环*/

{

n=i;

fclose(fp);

printf("请输入你要还的书的名字\n");

scanf("%s",lendbook);

fp=fopen("record.txt","r");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)/*判断是否借阅了输入的书*/

{

if(strcmp(student[i].lendbook,lendbook)==0)/*借阅了该书,进入下一循环,否则出错显示*/

{

fclose(fp);

fp=fopen("record.txt","r");

fp2=fopen("bookl.txt","w");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)

{

if(strcmp(student[i].lendbook,lendbook)==0)

{

continue;/*删除还掉的书的借书记录*/

}

fwrite(&student[i],sizeof(structstudent),1,fp2);/*写入原来没还的书的记录*/

}

fclose(fp);

fclose(fp2);

fp=fopen("record.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)!

=0;i++)

{

fwrite(&student[i],sizeof(structstudent),1,fp);/*将借书记录信息写回*/

}

fclose(fp);

fclose(fp2);

fopen("bookl.txt","w");/*清临时文件的记录*/

fclose(fp2);

fp=fopen("book.txt","r");

fp2=fopen("bookl.txt","w");

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)/*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/

{

if(i==n)

{

book[i].turefalse=1;

fwrite(&book[i],sizeof(structbook),1,fp2);/*将还的书的原来状态设为无人借阅的*/

continue;

}

fwrite(&book[i],sizeof(structbook),1,fp2);

}

fclose(fp);

fclose(fp2);

fp=fopen("book.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!

=0;i++)

{

fwrite(&book[i],sizeof(structbook),1,fp);/*将临时文件写回*/

}

fclose(fp);

fclose(fp2);

fopen("bookl.txt","w");/*清临时文件*/

fclose(fp2);

printf("还书完毕,按任意键返回\n");

getch();

return1;

}

}

printf("你没有借这样的书,任意键返回\n");/*出错提示*/

fclose(fp);

getch();

return0;

}

}

printf("系统没这样的卡,和管理员联系,按任意键返回\n");/*出错提示*/

fclose(fp);

getch();

}

findbook()

{

FILE*fp;

charbookname[10];

intture,i;

fp=fopen("book.txt","r");

printf("请输入你要查找的书名\n");

scanf("%s",bookname);

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(bookname,book[i].bookname)==0)

{

if(book[i].turefalse==1)

{

printf("这本书的详细资料是:

%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

}

else{printf("这本书已经有人借出\n");fclose(fp);return0;}

fclose(fp);

returnFALSE;

}

}

printf("没有你要查询的书籍\n");

fclose(fp);

returnFALSE;

}

findbook1()

{

FILE*fp;

charbookcreat[10];

intture,i;

fp=fopen("book.txt","r");

printf("请输入你要查找的作者名\n");

scanf("%s",bookcreat);

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(bookcreat,book[i].bookcreat)==0)

{

if(book[i].turefalse==1)

{

printf("这本书的详细资料是:

%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

}

else{printf("这本书已经有人借出\n");fclose(fp);return0;}

fclose(fp);

returnFALSE;

}

}

printf("没有你要查询的书籍\n");

fclose(fp);

returnFALSE;

}

lendcount()

{

FILE*fp;

inti,n=0;

fp=fopen("record.txt","r");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)

{

printf("卡号:

%d借出的书籍:

%s\n",student[i].carnum,student[i].lendbook);

n=n+1;

}

fclose(fp);

printf("目前共有%d本书借出\n",n);

printf("按任意键\n");

getch();

returnn;

}

chabook()

{

charch5;

do

{

printf("---------------欢迎进入图书查询系统!

--------------\n");

printf("1:

<按书名查找>\n");

printf("2:

<按作者查找>\n");

printf("0:

<返回>\n");

printf("请输入0--2,其他输入非法!

\n");

scanf("%s",&ch5);

switch(ch5)

{

case'1':

findbook();getch();break;

case'2':

findbook1();getch();break;

case'0':

break;

default:

printf("无此操作\n");getch();break;

}

}while(ch5!

='0');

returnFALSE;

}

lendbook()

{

FILE*fp,*fp2;

inti,n;

intcarnum;

printf("请你输入你的卡号\n");

scanf("%d",&carnum);

fp=fopen("car.txt","r");

for(i=0;fread(&car[i],sizeof(structcar),1,fp)!

=0;i++)

{

if(car[i].carnum==carnum)

{

n=i;

fclose(fp);

printf("请输入你要借阅的书的名字\n");

scanf("%s",student[n].lendbook);

fp=fopen("book.txt","r");

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(book[i].bookname,student[n].lendbook)==0)

{

if(book[i].turefalse==0){printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}

else

fclose(fp);

fp=fopen("record.txt","a+");

student[n].carnum=carnum;

fwrite(&student[n],sizeof(structstudent),1,fp);

fclose(fp);

fp=fopen("book.txt","r");

fp2=fopen("bookl.txt","w");

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(book[i].bookname,student[n].lendbook)==0)

{

book[i].turefalse=0;

fwrite(&book[i],sizeof(structbook),1,fp2);

continue;

}

fwrite(&book[i],sizeof(structbook),1,fp2);

}

fclose(fp);

fclose(fp2);

fp=fopen("book.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!

=0;i++)

{

fwrite(&book[i],sizeof(structbook),1,fp);

}

fclose(fp);

fclose(fp2);

fopen("bookl.txt","w");

fclose(fp2);

printf("借书完毕,按任意键返回\n");

getch();

return;

}

}

printf("不存在这样的书,任意键返回\n");

fclose(fp);

getch();

return;

}

}

printf("你的卡号不存在,请申请新卡,按任意键返回\n");

fclose(fp);

getch();

}

carcount()

{

FILE*fp;

inti,n=0;

fp=fopen("car.txt","r");

for(i=0;fread(&car[i],sizeof(structcar),1,fp)!

=0;i++)

{

printf("第%d张卡<卡号:

%d姓名:

%s班级:

%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);

n=n+1;

}

fclose(fp);

printf("目前共有%d本书\n",n);

printf("按任意键\n");

getch();

}

delcar()

{

FILE*fp,*fp2;

inti;

intcarnum;

charchoice;

fp=fopen("car.txt","r");

fp2=fopen("bookl.txt","w");

printf("请输入你要删除的卡号\n");

printf("如果你输入的卡号存在,系统自动删除该信息!

如果不存在,系统不做任何改动\n");

scanf("%d",&carnum);

for(i=0;fread(&car[i],sizeof(structcar),1,fp)!

=0;i++)

{

if(car[i].carnum!

=carnum)

{

fwrite(&car[i],sizeof(structcar),1,fp2);

}

}

fclose(fp);

fclose(fp2);

printf("是否真的要删除该卡?

删除后该书籍的所有信息将无法恢复《Y/N》\n");

scanf("%s",&choice);

if(choice=='y'||choice=='Y')

{

fp=fopen("car.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&car[i],sizeof(structcar),1,fp2)!

=0;i++)

{

fwrite(&car[i],sizeof(structcar),1,fp);

}

fclose(fp);

fclose(fp2);

fp2=fopen("bookl.txt","w");

fclose(fp2);

printf("按任意键返回\n");

getch();

return;

}

else

{

printf("按任意键返回\n");

getch();

return;

}

}

addcar()

{

FILE*fp;

inti=0;

fp=fopen("car.txt","a+");

printf("请你输入卡号\n");

scanf("%d",&car[i].carnum);

printf("请你输入学生姓名\n");

scanf("%s",car[i].studentname);

printf("请你输入班级\n");

scanf("%d",&car[i].studentclass);

fwrite(&car[i],sizeof(structcar),1,fp);

fclose(fp);

printf("输入完毕,任意键返回\n");

getch();

}

changemploy()

{

FILE*fp,*fp2;

charemployname[10],choice;

inti;

fp=fopen("employ.txt","r");

fp2=fopen("bookl.txt","w");

printf("请你输入要修改的职工的名字\n");

scanf("%s",employname);

for(i=0;fread(&employ[i],sizeof(structemploy),1,fp)!

=0;i++)

{

if(strcmp(employ[i].employname,employname)==0)

{

printf("你所要修改的职工的资料如下,请选择你要修改的内容\n");

printf("<职工号:

%d职工名:

%s年龄:

%d性别:

%s学历:

%s工资:

%d>\n",employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);

printf("2:

修改职工名\n");

printf("3:

修改职工年龄\n");

printf("4:

修改职工工资\n");

printf("5:

修改职工学历\n");

printf("请输入1-5:

");

scanf("%s",

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1