文章目录[隐藏]
此篇文章叙述了在线项目进度管理系统(优质项目进度管理系统)相关文字、图片、最新资讯等各方面信息。
数据库课程设计图书管理系统
1、需求分析
图书馆管理系统开发。系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。
本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。本系统结构分为读者类别管理、读者档案管理、图书类型管理、图书档案管理以及图书流程管理,读者管理可以浏览读者的信息,可以对读者信息进行维护。图书管理可以浏览图书的信息,可以对图书信息进行维护。借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。本系统主要解决的问题是利用关键字对数据库进行查询。
2.1数据流图
是结构化分析的重要方法,我们在信息工程中应用的DFD经过了一定的简化,成为一种标准化的一级流程图(1-DFD)和二级流程图(2-DFD)。其主要作用是:
便于用户表达功能需求和数据需求及其联系;
2.2数据字典
用数据字典描述数据库的设计,便于维护和修改。
为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:
规范化地重组数据结构:对数据进行规范化表达,这在后面将会具体讨论。
关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。
建立关系数据结构涉及三方面内容:确定关联的关键指标项并建立关联表;确定单一的父系记录结构;建立整个数据库的关系结构
1、数据流的DD表举例如下:
数据流
条目名:读者信息别名:
来源:读者登记
数据流结构:
读者登记={读者编号+姓名+性别+ +……}
简要说明::每一个读者都有一个唯一的编号
修改记录:
2、数据元素的DD表举例如下:
数据元素
条目名:读者编号别名
属于数据流:读者信息存储处:读者信息表
数据元素值:
代码类型:字符
宽度:10
取值范围及含义:
简要说明:每一个读者都有一个唯一的编号
修改记录:=
3、数据存储的DD表举例如下:
数据存储
条目名:图书信息别名:
存储组织:记录数:约3000主关键字:书籍编号
数据量:约500KB辅关键字:
按编号主索引
记录组成:
字段名称:图书编号名称 …作者 … 关键词 ...
宽度:1432…8...10…数据库设计包括六个主要步骤:
1、需求分析:了解用户的数据需求、处理需求、安全性及完整性要求;
2、概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型;
3、逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图;
4、物理结构设计:设计数据的存储结构和存取方法,如索引的设计;
5、系统实施:组织数据入库、编制应用程序、试运行;
6、运行维护:系统投入运行,长期的维护工作。
c语言课程设计:图书管理系统设计的基本思路是什么?
图书管理系统主要要求可以录入书籍,添加书目,查找书本信息,删除或修改信息,有的还要求显示是否被借阅等。
一般采用结构体数组,链表,文件操作和自定义函数。主要是需要对基础知识掌握牢固。
先定义结构体,然后对结构体的成员进行定义,选择数组存储书本各种信息。录入信息可以用for和do while循环等来做。
存放信息需要文件操作函数,比如fopen,fwrite等。
删除和添加可以删除节点或者增加节点。
查找之类的可以用字符串操作的各种函数实现。
附上参考源代码
#include
#include
#include
#include
#definebooks"f:\books.txt"
#definebooksbak"f:\booksbak.txt"
structbookinfo
charisbn[20];
chartitle[30];
charauthor[20];
intcount;
structbook
structbookinfoonebook;
structbook*next;
structbook*searchBook(structbook*listptr,charisbn[])
while(listptr!=(structbook*)0)
if(strcmp(listptr->onebook.isbn,isbn)==0)
returnlistptr;
else
listptr=listptr->next;
return(structbook*)0;
voidMainSearchbook(structbook*firstptr)
structbook*ptr;
charisbnno[20];
printf("请输入ISBN:");
scanf("%s",&isbnno);
ptr=searchBook(firstptr,isbnno);
if(ptr!=(structbook*)0)
{
printf("找到了!!!n");
printf("ISBN:%sn",ptr->onebook.isbn);
printf("Title:%sn",ptr->onebook.title);
printf("Author:%sn",ptr->onebook.author);
}
else
printf("sorry,notfound!!!n");
intaddBook(structbook*listptr,structbookinfonote)
while(listptr->next!=0)
listptr=listptr->next;
listptr->next=(structbook*)malloc(sizeof(structbook));
listptr->next->onebook=note;
listptr->next->next=0;
return0;
voidMainAdd(structbook*listptr,FILE*fp)
intok;
structbookinfonote;
printf("请输入ISBN:");
scanf("%s",e.isbn);
printf("请输入Title:");
scanf("%s",e.title);
printf("请输入Author:");
scanf("%s",e.author);
ok=addBook(listptr,note);
if(ok==0)
{
//将加入的图书写到文件中保存
fprintf(fp,"n%s%s%s%d",note.isbn,note.title,note.author,0);
printf("添加图书成功!!!n");
}
else
printf("添加图书失败!!!n");
intremoveBook(structbook*listptr,charisbn[])
while(listptr->next!=(structbook*)0)
{
if(strcmp(listptr->next->onebook.isbn,isbn)==0)
{
listptr->next=listptr->next->next;
return0;
}
else
listptr=listptr->next;
}
return-1;
voidMainRemove(structbook*listptr,FILE*fp)
/************************************************************************/
/*删除书籍函数,通过ISBN删除链表节点,同时删除文件中对应信息*/
/*删除文件中一行,用的是笨方法,把需要的信息写到新文件,删除旧文件,重命名..*/
/************************************************************************/
charisbnno[20];
intok;
structbookinfoonebook;
printf("请输入ISBN:");
scanf("%s",&isbnno);
ok=removeBook(listptr,isbnno);
if(!ok)
{
FILE*fpbak;
if((fpbak=fopen(booksbak,"a+"))==NULL)
printf("文件打开失败!!!n");
fseek(fp,0,SEEK_SET);//移到文件开始
while((fscanf(fp,"%s%s%s%dn",&onebook.isbn,&onebook.title,&onebook.author,&onebook.count))!=EOF)
{
if(strcmp(onebook.isbn,isbnno)!=0)
{
fprintf(fpbak,"%s%s%s%dn",onebook.isbn,onebook.title,onebook.author,onebook.count);
}
}
fclose(fp);
fclose(fpbak);
if(remove(books))//删除失败返回非0
{
printf("删除文件失败!!!n");
return;
}
else
if(rename(booksbak,books))//重命名失败返回非0值
{
printf("重命名失败!!!n");
return;
}
printf("删除成功!!!n");
}
else
printf("查无此书!!!");
intchoice(void)
intc;
printf("1.查看图书n");
printf("2.添加图书n");
printf("3.删除图书n");
printf("4.退出程序n");
printf("请选择序号:");
returnc=getchar();
//returnc=getche();
printf("nn");
intaddEntry(FILE*fp,structbook*firstptr)
/************************************************************************/
/*主要用来加载文件中存放的图书信息*/
/************************************************************************/
structbookinfoonebook;
while((fscanf(fp,"%s%s%s%dn",&onebook.isbn,&onebook.title,&onebook.author,&onebook.count))!=EOF)
{
while(firstptr->next!=0)
firstptr=firstptr->next;
firstptr->next=(structbook*)malloc(sizeof(structbook));
firstptr->next->onebook=onebook;
firstptr->next->next=0;
}
return0;
intmain(intargc,char*argv[])
intch;
structbookfirst;
strcpy(first.onebook.isbn,"123456");
strcpy(first.onebook.title,"ProgrammingC");
strcpy(first.onebook.author,"yhb");
first.next=0;
structbook*firstptr=&first;//链表头指针
FILE*fp;
if((fp=fopen(books,"a+"))==NULL)
printf("文件打开失败!!!");
addEntry(fp,firstptr);
while(1)
{
system("CLS");//清屏
/************************************************************************/
/*想想这里为什么要清空缓冲区?*/
/*由于上一次(choice函数)的getchar(),还有一个'n'留在缓冲区....*/
/*可以把这句话注释掉看看,没有这句话会遇到麻烦*/
/*如果不用fflush,可以将上面的getchar()换成getche()*/
/*比较getchar(),getch(),getche()......*/
/************************************************************************/
fflush(stdin);
ch=choice()-48;
switch(ch)
{
case1:
MainSearchbook(firstptr);
break;
case2:
MainAdd(firstptr,fp);
break;
case3:
MainRemove(firstptr,fp);
break;
case4:
printf("谢谢使用...n");
exit(0);
default:
printf("请输入正确序号!");
}
system("PAUSE");
}
return0;
}最近刚帮朋友做过一个,思路嘛~ 先要定义一个图书的类,类里有图书的基本信息的数据,对图书进行操作的函数。 主函数用switch语句实现菜单的分支选择操作,用goto实现菜单的循环~设计内容及要求:
主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:图书入库,按书名、出版社、价格、作者进行查询和分类统计。操作界面要符合用户的一般习惯,图形或文本界面都可以设计参数图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:
按书名查询
按作者名查询
文件记录的字段数量不少于6个,分类统计中类别不少于2个。最近刚帮朋友做过一个,思路嘛~
先要定义一个图书的类,类里有图书的基本信息的数据,对图书进行操作的函数。
主函数用switch语句实现菜单的分支选择操作,用goto实现菜单的循环~
读了文章在线项目进度管理系统(优质项目进度管理系统)有什么相关的感受或者感悟没,都可以联系我们叙说。