SQL图书管理系统课程设计

合集下载

【VIP专享】SQL课程设计报告(图书借阅管理系统)

【VIP专享】SQL课程设计报告(图书借阅管理系统)
4
三、数据库概念结构设计
本图书馆管理系统根据实际需求创建如下五个数据表�bookinf�图书信息 表��bookclass�图书类别表��student�学生信息表��bookborrow�学生借 阅图书信息表��bookreturn�学生还书信息表�。这些数据表可以单独存储学生、 图书的信息�再结合它们之间的相互关系�相互操作即实现了普通图书馆的三大 基本功能�即学生借阅图书、学生续借图书、学生归还图书。
学生借阅图书表 bookborrow„„„„„„„„„„„„„„„„„„„ 6 学生归还图书表 bookreturn„„„„„„„„„„„„„„„„„„„ 6
五、数据库物理实现 1、学生借阅图书时各种异常情况下操作的结果„„„„„„„„„„„ 7 2、学生正常借阅图书时操作„„„„„„„„„„„„„„„„„„„ 7 3、学生续借图书„„„„„„„„„„„„„„„„„„„„„„„„ 9 4、学生还书„„„„„„„„„„„„„„„„„„„„„„„„„„„ 10 5、查询一段时间之内各类未归还图书的在借次数„„„„„„„„„„„ 12
将 E-R 图转化为关系模式�
(1)bookinfo � book_id,book_name,book_author,book_press,pressdate,price,book total,bookremain�
(2)student � student_id,name,sex,age,department,major,class,birth_date,tel ephone,E-mail�
(3)bookclass �book_id,bookclass_id,bookcategory�
(4)bookborrow �book_id,student_id,borrownum,borrowdate,rreturndate, newdate ,reborrowdate�

图书管理系统课程设计报告(sql server)

图书管理系统课程设计报告(sql server)

《Windows程序设计课程设计》报告课设题目图书管理系统学院班级学生姓名学号序号指导教师时间目录一.需求分析 (3)1.1任务概述 (3)1.2 需求说明 (3)1. 3 系统功能模块图 (5)1. 4 系统开发环境简介 (5)二.数据库设计 (6)2. 1数据表的设计与实现 (6)2. 2 相关对象 (6)三.图书管理系统的功能实现 (7)3. 1“登录”界面设计及编码设计 (7)3. 2“图书管理”界面设计及编码设计 (9)3. 3“读者管理”界面设计及编码设计 (13)四. 系统测试 (17)4.1 输入管理员账号登陆 (17)4.2 图书查询 (17)4.3 添加与注销图书 (18)4.4 添加与注销用户 (20)五.结论与体会 (22)一.需求分析1.1任务概述1. 图书馆有各种图书 10 万多册,每天的借书/归还的流量 1000 人。

2. 图书信息包括:每种图书都有书名、书号(ISBN)、一名或多名作者(译者)、出版社、定价、种类和内容简介。

3. 读者信息包括:借书证记录有借阅者的姓名、所在单位、读者类型等。

4. 读者凭借书证借书,教师每次最多借书 15 本书,借书期限最长为 90 天,学生每次最多借书 8 本书,借书期限最长为 30 天。

对于超期未还的读者不能继续借书,每本书每超期一天罚款 0.05 元。

根据所学课程的内容,完成对图书管理系统的系统分析、程序设计、上机调试等工作。

要求所构成的系统和设计的软件能够满足课程设计任务书提出的各项要求。

1.2 需求说明(1)在 Microsoft SQL Server 2005/2008 环境下建立图书管理系统所使用的数据库,利用企业管理器或查询分析器建立各种数据库对象,包括:数据表、视图、约束、存储过程和触发器等;(2)掌握 编程技术,对 MS SQL Server 数据库进行连接和操纵;掌握使用 C#语言开发一个数据库应用系统的基本方法和步骤,熟悉一些基础功能的实现方法,如:数据维护(插删改等操作),数据查询、浏览和 Excel 导出,统计与报表,用户登录和权限管理等。

SQL图书管理系统课程设计

SQL图书管理系统课程设计

一、课程设计的内容一个图书借阅管理数据库要求提供以下服务:(1)可随时查询书库中现有书籍的种类、数量。

所有各类书籍均可由书号唯一标识.(2)可随时查询书籍借还情况.包括借书证号、姓名、性别、学院和专业.任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性.(3)当需要时,可通过数据库中保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关书籍.一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。

根据以上的情景假设,进行如下的分析与设计:(1)根据上述语义画出ER图。

(2)将ER模型转换成关系模型,并指出每个关系模式的主关键字。

(3)分析每个关系模式已经达到第几范式。

对于不符合第三范式要求的关系模式进行规范化。

(4)根据概念模型设计逻辑模型和保护设计。

(5)在SQLServer中实现。

二、课程设计的要求与数据根据教师给定的选题,运用课堂中学到的数据库的基本理论与设计的知识,完成数据库概念设计、逻辑设计及部分物理设计的内容。

重点是ER图的设计、关系模式的转换与规范化以及如何利用DBMS完成数据表及数据库的创建和操作。

具体要求包括:1.开发环境要求:SQL Server 20052.提交课程设计报告一份,包括以下内容:①用户需求:要解决的主要问题,达到的具体指标等。

②业务流程分析:描述系统的业务流程,画出规范的业务流程图。

③数据库概念模式设计写出由基本项相应得出的实体、联系及其属性,并确定主实体的标识特征,画出ERD;对其中复杂的多元联系进行分析,必要则改进。

④数据库逻辑模式设计4。

1 一般逻辑模型设计:写出由ERD导出一般关系模型的四条原则,列出数据库初步构思的关系框架,并检查改进之。

4。

2 具体逻辑模型设计:按所用的DBMS要求,设计表(文件)的具体结构,在关系框架下补充字段类型、长度、小数位数等行.⑤数据库保护设计5.1 设计表间关系:列出数据库表间的关联关系.5。

SQL数据库课程设计--学校图书借阅管理系统

SQL数据库课程设计--学校图书借阅管理系统

SQL数据库课程设计--学校图书借阅管理系统SQL数据库课程设计报告设计题目:学校图书借阅管理系统目录1. 问题描述2. 需求分析2.1 需求调查2.2 系统功能结构2.3 数据流图4. 概念结构设计3.1 局部E-R图3.2 全局E-R图3.3 数据字典4. 逻辑结果设计4.1 逻辑设计的任务和目标4.2 将E-R图装换为关系模式5. 物理结构设计5.1 建立数据表5.2 建立视图5.3建立触发器5.4 存储过程6. 结论与心得《数据库系统原理》课程设计报告1. 问题的描述随着社会的信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。

作为信息存储的主要媒体之一图书、数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方法来管理自己书籍。

在计算机日益普及的今天,对于个人而言采用一套行之有效的图示管理系统来管理自己的书籍,会方便许多.对于图书馆部门而言,以前单一的手工检索已不能满足人们的要求,为了让便于图书资料的管理要有图书馆软件。

对于日益扩大的图书馆,查找特定的书目总使借阅者或工作人员劳神费力,有事还没有结果。

因为往往是投入了大量的人力和财力却得不到有效的管理效率。

因此我没呢采用数据库技术生成图书馆借阅挂历系统将会极大的方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单,搞笑的工作中。

在此以高校学校图书借阅管理系统的开发过程为背景,全文围绕如何:实现图书信息、类别、出版社等信息的管理;实现读者信息、借阅证信息的管理;实现图书的借阅、续借、归还管理;实现超期罚款管理、收款管理;创建触发器,分别实现借书和还书时自动更新图书信息的在册数量;创建视图查询各种图书的书号、书名、总数和在册数;创建存储过程查询指定读者借阅图书的情况;建立数据库相关表之间的参照完整性约束。

来进行系统设计,完善高校图书馆图书借阅系统。

SQL数据库图书管理系统课程设计

SQL数据库图书管理系统课程设计

SQL数据库图书管理系统课程设计某某职业技术学院信息工程系题目:《图书管理系统》班级网络班学号姓名课程名称数据库应用技术指导教师二O一三年某月目录数据库课程设计报告书一、设计目标1.掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织和实施。

2.关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试运行等。

3.培养把所学知识运用到具体对象,并能求出解决方案的能力。

二、数据库存储设计指导思想在数据库存储设计的无数选择中,简单是系统架构师和DBA的秘密武器。

简单,有时候就来自于对一个特定的表或表空间没有选择最优I/O特性,总有这么一种可能,一个富有经验的DBA拥有高超的存储技能并可以没有时间限制的去为一个非常重要的表或者索引配置一个存储。

然而这样做的问题是,就算能达到设计的最佳性能,为了维护原始对象,这也经常造成对一个系统的管理变得更加复杂。

好的数据库存储设计的要点是,在一个动态系统上,实现所有目标应该是最初的系统设计的一部分,并应该在数据库运行过程中长期进行。

这篇文档简单的最佳实践描述达到了这些目标并且几乎没有性能损失。

三、任务角色:读者、图书馆馆员、系统管理员;基础数据:读者信息、图书信息、操作员信息;业务数据:借还书记录登记、罚款登记;统计数据:书籍借阅情况统计或读者借阅情况统计。

基本要求:利用数据库技术,完成基础数据和业务数据的储存和操作,数据库设计合理1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL实现的查询语言及查询结果。

2.上机实现。

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

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

2.方案图表设计2.1E-R图根据1)所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。

sql书店管理系统设计

sql书店管理系统设计

摘要随着办公自动化的日益发展,越来越多的企事业单位都实现了无纸化办公。

作为一个现代化的书店,需要一个拥有自动化,全方位的办公系统,方便处理日益复杂化的管理经营项目。

书店管理系统就是能满足书店日常经营及后台统计电算化的系统。

具有方便,人性化的系统可以帮助营业员和管理人员处理一般的管理项目。

并且各项权限分明。

使书店能够满足快速发展的现代化会的需要,书店管理系统对书店图书日常销售中的手工操作繁琐、易出错的问题进行研究,利用计算机管理繁琐的日常图书销售管理工作,避免手工操作过程中繁琐且易出错的现象,提高工作的质量和效率。

本报告根据书店的管理过程中所要遇到的各类情况,在系统中都做了详细而又正确的处理结果,本系统不仅对书店管理进行了统计和查询,而且对书店的日常管理、信息检索等进行了分析,解决了用手工方法带来的困难,和数据出错的概率。

关键字:书店、销售管理、图书管理目录1.引言 (1)2. 3需求分析阶段 (2)2.1 引言 (2)2.2 需求分析阶段的目标与任务 (2)2.2.1处理对象 (2)2.3 需求分析阶段成果 (3)概念设计阶段 (9)3.1 引言 (9)3.2 任务与目标 (9)3.3 阶段结果 (10)4.逻辑设计阶段 (12)4.1逻辑设计的任务和目标 (12)4.2数据组织 (12)4.2.1将E-R图转换为关系模型 (13)4.2.2模型优化 (13)4.2.3数据库模式定义 (13)4.2.4 用户子模式定义 (16)4.3数据处理 (19)5.物理设计阶段 (19)5.1物理设计阶段的目标与任务 (19)5.2数据存储方面 (19)5.3系统功能模块 (20)6.数据库实施阶段 (22)6.1建立数据库、数据表、视图、索引 (22)6.1.1 建立数据库 (22)6.1.2 建立数据表 (22)6.2数据入库 (29)6.3创建各个功能的存储过程 (29)7.系统调试和测试 (29)8.实习心得 (29)9.存在的问题及建议 (30)致谢 (30)参考文献 (30)附录1 存储过程定义 (30)附录2 数据查看和存储过程功能的验证 (34)附录3 所有的SQL运行语句 (40)1.引言信息在社会和经济的发展中所起的作用越来越为人们所重视。

SQL-Server-2005图书管理系统课程设计

SQL-Server-2005图书管理系统课程设计

SQL-Server-2005图书管理系统课程设计《SQL Serve数据库》课程设计五,实训心得………………………………………一.系统需求分析图书管理工作繁琐,借阅频繁,包含大量的信息数据,因此就需要一个完善的图书管理系统来实现对这些数据的有效管理。

本系统主要任务就是对图书、读者、员工、借阅信息、查询进行统一管理,满足各类用户的需求。

本系统在功能上要实现借阅图书、续借图书、归还图书、催还图书、信息查询等功能。

二.数据库分析图书管理系统就是要求图书管理人员通过该系统对图书、读者、员工、借阅信息等进行统一管理,从而实现功能上的借阅图书、续借图书、归还图书、催还图书以及信息查询。

这就要求管理人员能够对数据库进行熟练操作而简单的表查询、触发器的建立、存储过程的建立以及用户自定义函数的建立等等这些管理数据库的方法都能对图书馆里系统的管理起到事半功倍的效果。

三.数据库设计部分(1)实体、联系、属性及E_R图。

根据数据库分析,确定实体及实体间联系,及各个实体和联系的属性并设计出E-R图1.实体、联系实体:图书信息,借阅书籍,归还书籍,借阅人,员工联系:借阅信息,管理信息图书信息与借阅书籍、归还书籍及借阅人之间的联系是借阅信息。

图书信息与员工之间的联系是管理信息。

2,图书管理系统E-R图模型图书管理系统E_R图模型3,关系模式(2)表设计及表结构1,需要的表有:图书信息表,借阅信息表,借阅人表,借阅书籍表,归还书籍表,管理信息表,员工表。

2,以下为各表的表结构图书信息表结构列名数据类型长度是否允许为空默认值说明图书编号char 6 ×无主键书名nvarchar 50 ×无书号char 6 √无类别char 8 ×无定价money 8 ×无入库时间smalldatetime 4 √无库存量tinyint 1 √10借阅信息表结构列名数据类型长度是否允许为空默认值说明借书时间smalldatetime 4×无主键应还时间smalldatetime 4×无图书编号char 6×无外键是否续借char 2×否借阅人表结构列名数据类型长度是否允许为空默认值说明图书证号nvarchar 50 ×无主键姓名nvarchar 50 ×无电话nvarchar 50 √无已借书数目tinyint 1 ×无能否续借char 8 ×无单位名称nvarchar 4 √无借阅书籍表结构列名数据类型长度是否允许为空默认值说明图书编号char 6 ×无外键图书证号nvarchar 50 ×无外键书名nvarchar 50 ×无归还书籍表结构列名数据类型长度是否允许为空默认值说明图书编号char 6 ×无外键图书证号nvarchar 50 ×无外键书名nvarchar 50 ×无管理信息表结构列名数据类型长度是否允许为空默认值说明图书char 6 ×无外键编号图书证号nvarchar 50 ×无外键登记借书日期smalldatetime 4 ×无外键是否在库char 2 √是存放位置char 12 ×无员工表结构列名数据类型长度是否允许为空默认值说明员工编号char 6 ×无主键姓名char 8×无性别char 2 √女值日时间char 4 ×无联系方式nvarchar 50 √无(3). 创建数据库、创建表以及添加数据。

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

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

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

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

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

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

三、数据库中各表结构的清单3.1数据库中各表主要有:3.1.1图书表:3.1.2图书类别表:3.1.3借阅表:3.1.4借阅卡表:3.2数据间的联系:1.图书表<--图书类型表2.借阅者表<-->借阅者身份表3.图书表---借阅者表3.3数据操作:添加、删减元组、修改相应属性的数据。

#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<ctype.h>#define STACK_INIT_SIZE 10#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0struct student /*定义学生类型,用于存放借出的书籍*/{int carnum;char lendbook[10];}student[1000];struct employ /*定义职工类型*/{int employnum;char employname[15];int employage;char employsex[2];char employleve[10];long int employtage;}employ[50];struct book /*定义书的类型*/{int booknum;char bookname[10];char bookcreat[10];int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/}book[1000];struct car /*借书卡的数据类型*/{int carnum;char studentname[10];int studentclass;}car[100];huanbook() /*还书函数*/{FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/int i,n;int carnum;char lendbook[10];printf("请你输入你的卡号\n");scanf("%d",&carnum);fp=fopen("car.txt","r"); /*读取卡号记录*/for(i=0;fread(&car[i],sizeof(struct car),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(struct student),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(struct student),1,fp)!=0;i++){if(strcmp(student[i].lendbook,lendbook)==0){continue; /*删除还掉的书的借书记录*/}fwrite(&student[i],sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/}fclose(fp);fclose(fp2);fp=fopen("record.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++){fwrite(&student[i],sizeof(struct student),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(struct book),1,fp)!=0;i++) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/{if(i==n){book[i].turefalse=1;fwrite(&book[i],sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/continue;}fwrite(&book[i],sizeof(struct book),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++){fwrite(&book[i],sizeof(struct book),1,fp); /*将临时文件写回*/}fclose(fp);fclose(fp2);fopen("bookl.txt","w"); /*清临时文件*/fclose(fp2);printf("还书完毕,按任意键返回\n");getch();return 1;}}printf("你没有借这样的书,任意键返回\n"); /*出错提示*/fclose(fp);getch();return 0;}}printf("系统没这样的卡,和管理员联系,按任意键返回\n"); /*出错提示*/fclose(fp);getch();}findbook(){FILE *fp;char bookname[10];int ture,i;fp=fopen("book.txt","r");printf("请输入你要查找的书名\n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(struct book),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);return 0;}fclose(fp);return FALSE;}}printf("没有你要查询的书籍\n");fclose(fp);return FALSE;}findbook1(){FILE *fp;char bookcreat[10];int ture,i;fp=fopen("book.txt","r");printf("请输入你要查找的作者名\n");scanf("%s",bookcreat);for(i=0;fread(&book[i],sizeof(struct book),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);return 0;}fclose(fp);return FALSE;}}printf("没有你要查询的书籍\n");fclose(fp);return FALSE;}lendcount(){FILE *fp;int i,n=0;fp=fopen("record.txt","r");for(i=0;fread(&student[i],sizeof(struct student),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();return n;}chabook(){char ch5;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');return FALSE;}lendbook(){FILE *fp,*fp2;int i,n;int carnum;printf("请你输入你的卡号\n");scanf("%d",&carnum);fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(struct car),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(struct book),1,fp)!=0;i++){if(strcmp(book[i].bookname,student[n].lendbook)==0){if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}elsefclose(fp);fp=fopen("record.txt","a+");student[n].carnum=carnum;fwrite(&student[n],sizeof(struct student),1,fp);fclose(fp);fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(book[i].bookname,student[n].lendbook)==0){book[i].turefalse=0;fwrite(&book[i],sizeof(struct book),1,fp2);continue;}fwrite(&book[i],sizeof(struct book),1,fp2);fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++){fwrite(&book[i],sizeof(struct book),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;int i,n=0;fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(struct car),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");}delcar(){FILE *fp,*fp2;int i;int carnum;char choice;fp=fopen("car.txt","r");fp2=fopen("bookl.txt","w");printf("请输入你要删除的卡号\n");printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");scanf("%d",&carnum);for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++){if(car[i].carnum!=carnum){fwrite(&car[i],sizeof(struct car),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(struct car),1,fp2)!=0;i++){fwrite(&car[i],sizeof(struct car),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;int i=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(struct car),1,fp);fclose(fp);printf("输入完毕,任意键返回\n");getch();}changemploy(){FILE *fp,*fp2;char employname[10],choice;int i;fp=fopen("employ.txt","r");fp2=fopen("bookl.txt","w");printf("请你输入要修改的职工的名字\n");scanf("%s",employname);for(i=0;fread(&employ[i],sizeof(struct employ),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].employag e,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",&choice);switch(choice){case '1':{printf("请输入新的职工号\n");scanf("%d",&employ[i].employnum);fwrite(&employ[i],sizeof(struct employ),1,fp2);}break;case '2':{printf("请输入新的职工姓名\n");scanf("%s",employ[i].employname);fwrite(&employ[i],sizeof(struct employ),1,fp2);}break;case '3':{printf("请输入新的年龄\n");scanf("%d",&employ[i].employage);fwrite(&employ[i],sizeof(struct employ),1,fp2);}break;case '4':{printf("请输入新的职工工资\n");scanf("%d",&employ[i].employtage);fwrite(&employ[i],sizeof(struct employ),1,fp2);}break;case '5':{printf("请输入新的职工学历\n");scanf("%s",employ[i].employleve);fwrite(&employ[i],sizeof(struct employ),1,fp2);}default:printf("没有这样的操作");break;}continue;}fwrite(&employ[i],sizeof(struct employ),1,fp2); }fclose(fp);fclose(fp2);fp=fopen("employ.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++){fwrite(&employ[i],sizeof(struct employ),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回\n");getchar();return;}delemploy(){FILE *fp,*fp2;int i;char employname[10],choice;fp=fopen("employ.txt","r");fp2=fopen("bookl.txt","w");printf("请输入你要删除的职工名\n");printf("如果你输入的职工存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");scanf("%s",employname);for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++){if(strcmp(employname,employ[i].employname)!=0){fwrite(&employ[i],sizeof(struct employ),1,fp2);}}fclose(fp);fclose(fp2);printf("是否真的要删除该职工信息?删除后的所有信息将无法恢复《Y/N》\n"); scanf("%s",&choice);if(choice=='y'||choice=='Y'){fp=fopen("employ.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++){fwrite(&employ[i],sizeof(struct employ),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回\n");getch();return TRUE;}else{printf("按任意键返回\n");getch();return FALSE;}}employcount(){FILE *fp;int i,n=0;fp=fopen("employ.txt","r");for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++){printf("第%d职工的信息如下:\n<职工号:%d 职工名:%s 年龄:%d 性别:%s 学历:%s 工资:%d>\n",n+1,employ[i].employnum,employ[i].employname,employ[i].emplo yage,employ[i].employsex,employ[i].employleve,employ[i].employtage);n++;}fclose(fp);printf("目前共有%d个职工\n",n);printf("按任意键返回\n");}addemploy(){FILE *fp;char choice='y';int i=1;fp=fopen("employ.txt","a+");while(choice=='y'||choice=='Y'){printf("请你输入职工号码\n");scanf("%d",&employ[i].employnum);printf("请你输入职工名\n");scanf("%s",employ[i].employname);printf("请输入职工年龄\n");scanf("%d",&employ[i].employage);printf("请你输入性别\n");scanf("%s",employ[i].employsex);printf("请你输入职工的学历水平\n");scanf("%s",employ[i].employleve);printf("请输入职工的工资\n");scanf("%d",&employ[i].employtage);fwrite(&employ[i],sizeof(struct employ),1,fp);printf("是否要输入下个职工信息?\n");scanf("%s",&choice);}printf("按任意键返回\n");fclose(fp);}addbook(){FILE *fp;int i=0;char choice='y';fp=fopen("book.txt","a+");while(choice=='y'||choice=='Y'){printf("请你输入第%d本书的序号\n",i+1);scanf("%d",&book[i].booknum);printf("请你输入书名\n");scanf("%s",book[i].bookname);printf("请你输入书的作者\n");scanf("%s",book[i].bookcreat);printf("请设为1或0,1代表书还没人借,0表示书已经借出,设其他值,程序运行时无法得出正常结果\n");printf("请你设定书的状态\n");scanf("%d",&book[i].turefalse);fwrite(&book[i],sizeof(struct book),1,fp);printf("是否要输入下本书\n");scanf("%s",&choice);}fclose(fp);}bookcount(){FILE *fp;int i,n=0;fp=fopen("book.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcre at)!=0){printf("第%d本书<序号:%d 书名:%s 作者:%s 状态:%d>\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].t urefalse);n=n+1;}}fclose(fp);printf("目前共有%d本书\n",n);printf("按任意键\n");}delbook(){FILE *fp,*fp2;int i;char bookname[10],choice;fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");printf("请输入你要删除的书名\n");printf("如果你输入的书名存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(bookname,book[i].bookname)!=0){fwrite(&book[i],sizeof(struct book),1,fp2);}}fclose(fp);fclose(fp2);printf("是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复《Y/N》\n"); scanf("%s",&choice);if(choice=='y'||choice=='Y'){fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++){fwrite(&book[i],sizeof(struct book),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回\n");getch();return;}else{printf("按任意键返回\n");getch();return;}}changebook(){FILE *fp,*fp2;char bookname[10],choice;int i;fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");printf("请你输入要修改的书籍的书字\n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(book[i].bookname,bookname)==0){printf("你所要修改的书的资料如下,请选择你要修改的内容\n");printf("序号:〈%d〉书名:〈%s〉作者:〈%s〉\n",book[i].booknum,book[i].bookname,book[i].bookcreat);printf("1:修改书的序号\n");printf("2:修改书名\n");printf("3:修改作者\n");printf("请输入1-3:");scanf("%s",&choice);switch(choice){case '1':{printf("请输入新的序号\n");scanf("%d",&book[i].booknum);fwrite(&book[i],sizeof(struct book),1,fp2);}break;case '2':{printf("请输入新的书名\n");scanf("%s",book[i].bookname);fwrite(&book[i],sizeof(struct book),1,fp2);}break;case '3':{printf("请输入新的作者\n");scanf("%s",book[i].bookcreat);fwrite(&book[i],sizeof(struct book),1,fp2);}break;defaut:printf("没有这样的操作");break;}continue;}fwrite(&book[i],sizeof(struct book),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++){fwrite(&book[i],sizeof(struct book),1,fp);}fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回\n");getchar();return;}main(){char ch1,ch2,ch3,ch4,ch5;do{printf("\t\t请你选择操作类型:\n");printf(" 1:<查阅图书>\n");printf(" 2:<借阅图书>\n");printf(" 3:<管理系统>\n");printf(" 4:<还书>\n");printf(" 0:<退出>\n");printf("请输入0--4\n");scanf("%s",&ch1);switch(ch1){case '1':chabook();break;case '2':lendbook();;break;case '3':{do{printf("---------------欢迎进入管理系统!--------------\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,其他输入非法!\n");scanf("%s",&ch2);switch(ch2){case '1':addbook();break;case '2':delbook();break;case '3':changebook();break;case '4':bookcount();getch();break;case '5':{do{printf("---------------欢迎进入职工管理系统!--------------\n");printf(" 1:<增加员工>\n");printf(" 2:<删除员工>\n");printf(" 3:<修改员工资料>\n");printf(" 4:<员工统计>\n");printf(" 0:<返回>\n");printf("请输入0--4,其他输入非法!\n");scanf("%s",&ch3);switch(ch3){case '1':addemploy();getch();break;case '2':delemploy();break;case '3':changemploy();break;case '4':employcount();getch();break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch3!='0');}break;case '6':{do{printf("---------------欢迎进入学生管理系统!--------------\n");printf(" 1:<申请新卡>\n");printf(" 2:<删除卡号>\n");printf(" 3:<借书统计>\n");printf(" 4:<卡号统计>\n");printf(" 0:<返回>\n");printf("请输入0--4,其他输入非法!\n");scanf("%s",&ch4);switch(ch4){case '1':addcar();break;case '2':delcar();break;case '3':lendcount();break;case '4':carcount();break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch4!='0');}break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch2!='0');}break;case '4':huanbook();break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch1!='0');}五.各部分功能介绍图书馆借阅系统实现的功能主要有:1. 图书信息的管理,包括分类,图书编号,书名,出版社,作者,单价及数量,此项可查阅图书信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、课程设计的内容一个图书借阅管理数据库要求提供以下服务:(1)可随时查询书库中现有书籍的种类、数量。

所有各类书籍均可由书号唯一标识。

(2)可随时查询书籍借还情况。

包括借书证号、姓名、性别、学院和专业。

任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。

(3)当需要时,可通过数据库中保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。

一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。

根据以上的情景假设,进行如下的分析与设计:(1)根据上述语义画出ER图。

(2)将ER模型转换成关系模型,并指出每个关系模式的主关键字。

(3)分析每个关系模式已经达到第几范式。

对于不符合第三范式要求的关系模式进行规范化。

(4)根据概念模型设计逻辑模型和保护设计。

(5)在SQLServer中实现。

二、课程设计的要求与数据根据教师给定的选题,运用课堂中学到的数据库的基本理论与设计的知识,完成数据库概念设计、逻辑设计及部分物理设计的内容。

重点是ER图的设计、关系模式的转换与规范化以及如何利用DBMS完成数据表及数据库的创建和操作。

具体要求包括:1.开发环境要求:SQL Server 20052.提交课程设计报告一份,包括以下内容:①用户需求:要解决的主要问题,达到的具体指标等。

②业务流程分析:描述系统的业务流程,画出规范的业务流程图。

③数据库概念模式设计写出由基本项相应得出的实体、联系及其属性,并确定主实体的标识特征,画出ERD;对其中复杂的多元联系进行分析,必要则改进。

④数据库逻辑模式设计4.1 一般逻辑模型设计:写出由ERD导出一般关系模型的四条原则,列出数据库初步构思的关系框架,并检查改进之。

4.2 具体逻辑模型设计:按所用的DBMS要求,设计表(文件)的具体结构,在关系框架下补充字段类型、长度、小数位数等行。

⑤数据库保护设计5.1 设计表间关系:列出数据库表间的关联关系。

5.2 完整性设计:列出主要字段完整性的字段名、完整性约束条件;列出记录完整性约束及其约束条件;列出参照完整性表。

⑥数据库系统的实现6.1 数据库及其表结构的建立:建立数据库描述文件及建立其数据库表,注意完整性与关联的实现,并附作为命令执行结果的数据库表结构及其关联图、参照完整性表。

6.2 数据输入:录入数据,并打印出各表的内容,要求每个表至少有15条记录。

三、课程设计应完成的工作1完成一个系统设计的主要过程:需求分析、系统分析、系统设计、系统实现等过程。

2 完成设计后,要写出设计报告。

四、课程设计进程安排五、应收集的资料及主要参考文献[1] 崔巍主编,数据库应用与设计,清华大学出版社,2009.[1] 王珊、陈虹编著,数据库系统原理教程,清华大学出版社,2003.[1] 金银秋主编,数据库原理与设计,科学出版社,2000.[2] 李建中王珊,数据库系统原理,电子工业出版社,1998.[3] 李大友,数据库原理及应用(第二版),清华大学出版社,2000目录一.课程设计目的与要求........................................................................ 错误!未定义书签。

1.1设计题目 (4)1.2设计目的 (4)1.3课程设计的内容 (4)1.4课程设计的要求与数据 (5)二.图书馆信息管理系统 (5)一概述 (6)项目背景 (6)编写目的 (6)2.1数据库的概念设计.......................................................................... 错误!未定义书签。

2.2数据库的逻辑设计 (7)2.3数据库的物理设计 (7)2.31数据库实现 (9)附录............................................................................................................ 错误!未定义书签。

应收集的资料及主要参考文献............................................................ 错误!未定义书签。

一.课程设计目的与要求1.1设计题目图书馆管理系统设计1.2设计目的学生能够采用本课程中学习的数据库设计方法,运用其基本思路与主要图表工具完成一个自己所了解的业务的数据库应用系统信息需求分析与数据库的概念设计、逻辑设计、物理设计,采用SQL SERVER2005数据库管理系统或其相关建模工具进行系统分析、设计;在此基础上严格按本大纲所附报告提纲撰写课程设计报告。

通过本设计进一步弄懂数据库系统及其相关的基本概念,理解数据库系统的系统结构、主要特点,掌握数据库设计的原理、方法及其基本过程,初步具备数据库系统设计的能力,初步形成运用数据库应用系统解决管理决策中的实际问题的基本素质1.3课程设计的内容图书借阅管理数据库要求提供以下服务:(1)可随时查询书库中现有书籍的种类、数量。

所有各类书籍均可由书号唯一标识。

(2)可随时查询书籍借还情况。

包括借书人借书证号、姓名、性别、学院、专业。

任何人可借多种书,任何一种书可为多个人所借,借书证号有唯一性。

(3)当需要时,可通过数据库中保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。

一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。

根据以上的情景假设,进行如下的分析与设计:(1)根据上述语义画出ER图。

(2)将ER模型转换成关系模型,并指出每个关系模式的主关键字。

(3)分析每个关系模式已经达到第几范式。

对于不符合第三范式要求的关系模式进行规范化。

(4)根据概念模型设计逻辑模型和保护设计。

(5)在SQLServer中实现。

1.4课程设计的要求与数据根据教师给定的选题,运用课堂中学到的数据库的基本理论与设计的知识,完成数据库概念设计、逻辑设计及部分物理设计的内容。

重点是ER图的设计、关系模式的转换与规范化以及如何利用DBMS完成数据表及数据库的创建和操作。

具体要求包括:1.开发环境要求:SQL Server 20052.提交课程设计报告一份,包括以下内容:①用户需求:要解决的主要问题,达到的具体指标等。

②业务流程分析:描述系统的业务流程,画出规范的业务流程图。

③数据库概念模式设计写出由基本项相应得出的实体、联系及其属性,并确定主实体的标识特征,画出ERD;对其中复杂的多元联系进行分析,必要则改进。

④数据库逻辑模式设计4.1 一般逻辑模型设计:写出由ERD导出一般关系模型的四条原则,列出数据库初步构思的关系框架,并检查改进之。

4.2 具体逻辑模型设计:按所用的DBMS要求,设计表(文件)的具体结构,在关系框架下补充字段类型、长度、小数位数等行。

⑤数据库保护设计5.1 设计表间关系:列出数据库表间的关联关系。

5.2 完整性设计:列出主要字段完整性的字段名、完整性约束条件;列出记录完整性约束及其约束条件;列出参照完整性表。

⑥数据库系统的实现6.1 数据库及其表结构的建立:建立数据库描述文件及建立其数据库表,注意完整性与关联的实现,并附作为命令执行结果的数据库表结构及其关联图、参照完整性表。

6.2 数据输入:录入数据,并打印出各表的内容,要求每个表至少有15条记录。

二.图书馆信息管理系统一概述本文主要介绍的是专为学校使用而开发的图书馆信息管理系统的设计。

整个系统的开发过程严格遵循软件工程的要求,做到模块化分析、模块化设计和代码编写的模块化。

项目背景随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对图书信息进行管理,有着手工管理所无法比拟的优点。

例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高图书管理的效率,也是图书馆的科学化、正规化管理,是与世界接轨的重要条件。

编写目的学校每天有大量的老师和同学到图书馆借阅书籍。

记录图书借阅情况是非常繁琐工作。

使用计算机可以高速,快捷地完成工作。

有鉴于此,开发一套图书馆信息管理系统,是十分必要的。

采用数据库技术开发的图书馆信息管理系统可以用来实现对图书的信息管理,可以提高管理的效率。

现在,大多数学校的图书馆都是封闭式管理,要求藏书全部公开开放,师生共享,开架阅览。

这种阅览方式是适合当前我国国情、发挥图书馆应用作用的最佳方式,也是素质教育的最好体现。

它充分发挥了图书馆的功效,最大限度地为师生服务,这也是图书馆自动化管理的最终目标。

实现这一目标,必须有现代化的管理手段和管理体制。

各地教育主管部门也都逐步提出学校要采用图书馆管理系统,从而实现人工管理做不到的一些功能并发挥图书馆的最大效益。

越来越多的学校采用了现代化的管理软件进行管理,进一步提升了学校管理的现代化水平。

为了清晰明确地将用户的数据表达出来,首先要建立一个概念性的数学模型。

它是一种面向问题的数学模型,按用户的观点来对数据和信息建模。

最常用的表示概念性数据模型的方法是实体—联系方法。

这种方法用E-R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法,该方法又称为E-R模型。

E-R图共有三种符号:实体、属性和联系。

通常实体用矩形表示,属性用椭圆或圆角矩形表示,联系用菱形表示。

联系又分为一对一、一队多和多对多三种类型。

学校图书馆信息管理系统的E-R图如下图所示:2.2数据库的逻辑设计在完成数据的概念模型设计后,即可进入数据库的逻辑设计阶段,数据库的逻辑设计,即把得到的关系转化为特定的数据库管理系统下的数据表。

根据前面得到的各个关系,现把它们转化为数据表。

学生基本资料记录表图书资料记录表学生借阅资料记录表数据库的逻辑设计完成后,就可开始进行数据库的物理设计。

基于上述的数据库的逻辑设计,考虑到程序设计的简易性及通用性,本图书馆信息管理系统采用SQL SERVER 2000数据库,并在其下创建3个数据表表2.3-11 图书资料登记表截图表2.3-12 学生资料登记表截图表2.3-13 学生借阅图书登记表截图2.31数据库实现数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

(1). 创建数据库(1)打开SQL工具“查询分析器”(2)在查询窗口中键入下列SQL语句create database 图书馆管理系统执行上述SQL语句即可新建一名图书馆管理系统为的数据库(2).创建数据表一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。

相关文档
最新文档