C语言程序设计基础课程设计图书信息管理系统.docx
《C语言程序设计基础课程设计图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础课程设计图书信息管理系统.docx(38页珍藏版)》请在冰点文库上搜索。
C语言程序设计基础课程设计图书信息管理系统
沈阳工程学院
课程设计
设计题目:
C程序设计基础课程设计
-----图书信息管理系统
沈阳工程学院
课程设计任务书
课程设计题目:
图书信息管理系统
一、课程设计的原始资料及依据
目前,随着计算机技术的飞速发展,人工的图书管理显得十分的落后而且效率低下,尤其在查询方面效率低。
为了适应现代化的环境,许多的管理事务都由电脑来管理,从而提高了管理的速率,效率。
查阅有关资料,进一步理解程序设计模块化的思想,并利用此思想编写一个简单的图书信息管理系统。
通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求
基本要求:
(1)试设计一图书信息管理系统,使之能提供以下功能:
(2)系统以菜单方式工作
(3)图书信息录入功能(图书信息用文件保存)
(4)图书信息浏览功能
(5)查询和排序功能:
(至少一种查询方式)
按书名查询
按作者名查询
(6)图书信息的删除与修改
(7)图书信息在程序运行期间用链表表示,程序关闭则保存至文件。
创新要求:
(1)在基本要求达到后,可进行创新设计,如实现会员资料的查询、会员注销,对撤消图书信息的删除。
(2)为借书人办理注册。
(3)办理借书手续(非注册会员不能借书)。
(4)办理还书手续等等。
信息描述:
图书信息包括:
登录号、书名、图书编号、单价、作者名、分类号、出版单位、出版时间、价格等。
借阅人信息包括:
借书人姓名、性别、学号等。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:
设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排
顺序
阶段日期
计划完成内容
备注
1
第1天
阅读资料
2
第2—3天
系统分析设计
3
第4—8天
程序编制、调试及运行
4
第9天
成绩评定
5
第10天
撰写课程设计说明书
六、主要参考资料(文献)
[2]陈天洲.《C语言高级程序设计》.北京:
人民邮电出版社.2002
[6]王为青.《C语言高级编程及实例剖析》
[7]徐慧.《C语言实例解析精粹》.北京:
人民邮电出版社.
[8]周苏、金海溶.《程序设计案例经典》.
[9]姚大鹏栾好利
摘要
图书借阅管理系统产生的主要目的是解决一些实际问题,用来方便和准确的管理图书和会员的各项纪录,使得图书信息的管理既方便又完备。
它的产生和发展给图书馆管理带来了巨大的便捷。
计算机今后将会应用在各个领域,所以,完善的图书借阅管理程序是很有必要的。
它在管理的过程中,对一些数据的存储和计算是相当方便,当然它的准确性很高几乎为无误。
图书借阅管理程序的操作也是相当方便和快捷的,并且所用的人力也是相当少的。
下面就此课题介绍一下图书借阅管理系统的功能:
系统的设计我们主要分为八大块:
图书添加、图书查询、图书删除、会员借书、会员还书、会员注册、会员注销。
会员借书,还书是按照会员的姓名来实现的,图书的查询,删除是运用比较函数来实现的。
在此系统中应用了结构体,动态链表,基本的指针运用,基本的循环语句,函数的调用,Switch语句等来实现的。
关键词图书管理系统、图书添加、图书查询、图书删除、会员借书、会员还书、会员注册、会员注销
第1章绪论
C语言的发展:
早期的操作系统等系统软件主要是用汇编语言编写的(包括UNIX操作系统在内)。
由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。
为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能,人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。
于是,C语言就在这种情况下应运而生了。
C语言是国际上广泛流行的、很有发展前途的计算机高级语言。
它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
C语言是在B语言的基础上发展起来的,经过了1960年的ALGOL60,1963年剑桥大学推出的CPL、BCPL,1970年贝尔实验室简化出的B语言,后衍变出的C语言经多次改进,它的突出优点最终引起人们的广泛关注,至此,C语言便很快风靡全世界,成为世界上应用最广泛的语言之一。
C语言的特点:
1.语言简洁、紧凑,使用方便、灵活。
C语言一共只有32个关键字,9种控制语句,程序书写自由,它把高级语言的基本结构和语句与低级语言的实用性结合起来。
程序比其他许多高级语言简练,源程序短,而且可以象汇编语言一样对位、字节和地址进行操作。
2.运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。
C语言把括号、赋值、强制类型转换等都作为运算符处理。
从而运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3.数据结构丰富
整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等数据类型。
能用来实现各种复杂的数据类型的运算。
并引入了指针概念,使程序效率更高。
4.C语法限制不太严格、程序设计自由度大
对变量的类型使用比较灵活,某些类型数据可以通用;一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。
而C允许程序编写者有较大的自由度,放宽了语法检查。
5.C语言允许直接访问物理地址,可以直接对硬件进行操作
能实现汇编语言的大部分功能,可直接对硬件进行操作,可用来编写系统软件。
6.生成代码质量高,程序执行效率高,可移植性好。
一般只比汇编程序生成的目标代码效率低10%へ20%,与汇编语言相比,C程序基本上不做修改就能用于各种型号的计算机和各种操作系统。
由于C语言的这些优点,使其应用面很广,许多大的软件都用C语言编写自20世纪九十年代初以来,我国学习和使用C语言的人越来越多,掌握次语言已成为计算机开发人员的一项基本功。
第2章系统功能介绍
2.1功能介绍
图书管理包括以下功能:
1.图书添加功能;
2.图书信息查找功能;
3.图书信息删除功能;
4.会员借书功能;
5.会员还书功能;
6.会员注册功能;
7.会员注销功能;
功能说明
1.图书添加功能是将图书信息存入文件夹中,其中图书信息包括图书名字、图书编号、图书作者、图书价格。
2.图书信息查找功能是将要查找的图书信息通过输入图书名字查找并从文件中提取出来显示。
3.图书信息删除功能是将无用的图书信息删除
4.会员借书功能,仅有会员才可以借书,借书之后还会标记该书已借出。
5.会员还书功能是会员借书之后将书还回并将图书状态改为图书未借出。
6.会员注册是将会员信息存入文件夹中,会员信息包括会员姓名、会员性别、会员年龄。
7.会员注销功能是将该会员信息从文件中删除。
第3章详细设计
3.1界面设计
通过printf函数输出“”,再通过scanf函数输入n,最后利用switch(n)函数执行标号为n的程序。
界面管理流程图
3.2图书添加功能设计
添加图书功能,先输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。
当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能,我运用了指针、数组、链表等基本操作完成了这一功能的操作。
流程图如下图
图3.2图书添加功能流程图
3.3图书查找功能设计
查询功能:
查询者在此功能界面输入所查询的图书名称,系统自动按图书的名字进行查询,可以显示图书是否存在、以及图书的详细的信息;该功能的实现主要应用scanf函数实现查询者对查询图书名称的输入。
if语句来判断所查询图书是否存在于源文件库中,若存在,则以查找的图书名称为指针,建立该指针到源文件库中的具体指向,最后应用printf函数输出所查询图书的详细信息;若不存在,则显示“该图书不存在”类似字样。
按书名进行删除。
输入书名后,调用函数,在函数体里利用指针与每一个书名比较,如果相等就说明找到要删除的图书,用后一个覆盖前一个信息来删除图书信息,并用指针调整地址就完成图书信息的删除了。
图3.4删除图书功能流程图
借阅图书功能首先要输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。
当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能。
此功能的实现我运用了指针、数组、链表等基本操作完成了这项功能。
图3.5会员借书流程图
归还图书功能:
先要求输入图书名,如果还书成功显示还书成功,否则显示还书失败。
我运用了指针、数组、链表等基本操作完成了这项功能的操作。
所示
图3.6会员还书功能流程图
要求输入该会员的名字、性别、年龄进行注册,成功注册后就可在图书馆里借阅图书。
会员注册可方便图书归还的管理,也方便图书管理人员对被借图书信息的管理及图书归要。
在注册会员后即可进行借书的操作了,我们的系统是根据是否是会员来判断能否进行借书,并且借书时按图书的名字进行借阅。
并且,如果成功借书,系统还会显示成功借书,使此项操作更加简单明了。
会员注册功能主要使用了scanf函数、结构体类型等在另一文件中建立个人信息。
流程图如下图
3.8会员注销功能设计
会员注销时通过输入会员姓名在文件中查找到该会员信息后将其删除完成的,删除信息用到链表、指针。
流程图如下图
图3.8会员注册流程图
第4章系统功能实现
4.1图书管理系统主界面
通过输入编号实现编号所指的程序。
负责人:
孟月
程序主函数源代码
/*Note:
YourchoiceisCIDE*/
#include
#include"dos.h"
#include"conio.h"
#include"stdlib.h"
#include"math.h"
#include"string.h"
intBookAdd();
intBookConsult();
intBookDel();
intBookBorrow();
intBookReturn();
intMemberAdd();
intMemberDel();
intBookshow();
structconsultbook
{
charnum[20];
charname[20];
floatprice;
charauthor[20];
charperson[20];
intyes;
structconsultbook*next;
};
structconsultmember
{
charname[20];
charsex[20];
intage;
structconsultmember*next;
};
intmain()
{
intn;
inti=1;
for(;i;)
{
printf("1:
图书添加功能\n");
printf("2:
图书查询功能\n");
printf("3:
删除图书功能\n");
printf("4:
会员借书功能\n");
printf("5:
会员还书功能\n");
printf("6:
会员注册功能\n");
printf("7:
会员注销功能\n");
printf("8:
退出\n");
printf("请输入所要执行序号\n");
scanf("%d",&n);
switch(n)
{
case1:
BookAdd();
break;
case2:
BookConsult();
break;
case3:
BookDel();
break;
case4:
BookBorrow();
break;
case5:
BookReturn();
break;
case6:
MemberAdd();
break;
case7:
MemberDel();
break;
case8:
i=0;
}
}
return0;
}
4.2图书添加功能
图书添加功能,通过此功能实现向源文件中添加图书的有关信息,实现对后续功能的实现。
负责人:
李昊航
图书添加功能源代码
intBookAdd()/*添加图书*/
{
FILE*fp;
structconsultbookBook;
fp=fopen("book.txt","r");/*以读取的方式打开文件*/
if(fopen==NULL)
fp=fopen("book.txt","w");/*以写的方式打开文件*/
else
{
fclose(fp);
fp=fopen("book.txt","ab");/*以追加方式打开文件*/
}
printf("请输入图书编号:
\n");
scanf("%s",Book.num);
printf("请输入书名:
\n");
scanf("%s",Book.name);
printf("请输入作者姓名:
\n");
scanf("%s",Book.author);
printf("请输入图书价格:
\n");
scanf("%f",&Book.price);
Book.yes=1;/*表示图书未出借*/
Book.next=NULL;
if(fwrite(&Book,sizeof(structconsultmember),1,fp)!
=1)
printf("操作出现错误图书信息未保存\n");
else
printf("图书信息已保存\n");
fclose(fp);/*关闭文件*/
return1;
}
4.3图书查找功能
图书查找功能,通过此功能实现对图书价格等信息的查询,方便借书等功能的实现。
负责人:
张启明
图书管理功能源代码
intBookConsult()/*图书查找*/
{
FILE*fp;
structconsultbookBook;
charbookname[20];/*定义书名变量*/
intflag=0,i=0;
printf("请输入要查找的书名:
\n");
scanf("%s",bookname);
fp=fopen("book.txt","r");
if(fp==NULL)/*没有找到文件*/
{
printf("未找到您所需要的书请核实是否有误重新查找");
fclose(fp);
return-1;
}
else
while(!
feof(fp))/*feof(fp)为测试文件是否结束的函数*/
{
fread(&Book,sizeof(structconsultmember),1,fp);/*读取文件*/
if(strcmp(Book.name,bookname)==0)/*两书名字相同*/
{
printf("图书名为:
%s\n",Book.name);
printf("图书编号为:
%s\n",Book.num);
printf("图书作者为:
%s\n",Book.author);
printf("图书作价格为:
%f\n",Book.price);
printf("图书状态为:
%d\n",Book.yes);
i++;/*i为该书的数目*/
flag=1;/*查找数据标志*/
}
}
if(flag==0)
{
printf("未找到您所需要的图书\n");
return-1;
}
fclose(fp);
return1;
}
4.4图书删除功能
由于C语言文件操作没有提供删除和移动的数据功能,所以删除记录采用了从文件中读出所有记录,删除后,再将记录写回文件的方式。
从文件中读出记录,以单链表的形式保存,块读取方式,每读取一条记录,按其在文件中的顺序要做好指针链接关系,即将其链接到当前链表的尾部。
然后从单链表中查找要删除的图书,如果找到,则从链表中删除该图书信息,所以删除图书资料的操作实质是单链表的删除操作,最后再将变动过的单链表逐条写到文件中。
负责人:
王珩
图书删除功能源代码
intBookDel()/*删除图书录*/
{
FILE*fp;
structconsultbookBook;
structconsultbook*head;
structconsultbook*p,*q;
charbookname[20];
fp=fopen("book.txt","r");/*读方式打开文件*/
if(fp==NULL)/*没有找到文件*/
{
printf("未找到图书信息\n");
fclose(fp);
return-1;
}
head=p=q=(structconsultbook*)malloc(sizeof(structconsultbook));/*开辟新的储存空间*/
fread(p,sizeof(structconsultbook),1,fp);/*读第一条信息*/
while(!
feof(fp))/*feof(fp)为测试文件是否结束的函数*/
{
q=p;
p=(structconsultbook*)malloc(sizeof(structconsultbook));
fread(p,sizeof(Book),1,fp);/*读记录*/
q->next=p;/*新记录插入到链表的尾*/
}
p->next=NULL;/*已为最后结点*/
fclose(fp);
printf("请输入要删除图书的名:
\n");
scanf("%s",bookname);
p=head;
while(p!
=NULL)/*按书名删除图书*/
{
if(strcmp(p->name,bookname)==0)/*找到药删除的书名*/
{
if(p==head)/*要删除的图书是第一个结点*/
head=head->next;
else
q->next=p->next;/*要删除的图书是第一个结点*/
break;
}
q=p;
p=p->next;/*指针后移*/
}
fp=fopen("book.txt","w");/*以写的方式打开文件*/
while(head!
=NULL)
{
fwrite(head,sizeof(Book),1,fp);/*写文件*/
head=head->next;
}
fclose(fp);
printf("删除成功!
\n");
return1;
}
4.5会员借书功能
借阅图书功能:
先输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。
当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能。
我运用了指针、数组、链表等基本操作完成了这项功能的操作。
负责人:
赵磊
会员借书源代码
intBookBorrow()/*借书*/
{
FILE*fp;
structconsultbookBook;
structconsultmemberMember;
charbookname[20],membername[20];
intflag=0,mflag=0;
printf("请输入会员名字:
\n");
scanf("%s",membername);
if((fp=fopen("member.txt","r"))==NULL)/*未找到文件*/
{
printf("无信息\n");
return-1;
}
else
while(!
feof(fp))/*查找会员信息*/
{
fread(&Member,sizeof(structconsultmember),1,fp);
if(strcmp(Member.name,membername)==0)
{
mflag=1;/*会员标志*/
break;
}
}
fclose(fp);
if(mflag==0)
{
printf("您不是会员请先注册\n");
return-1;
}
printf("请输入图书名:
\n");
scanf("%s",bookname);
if((fp=fopen("book.txt","r+"))==NULL)
{
printf("没有找到图书信息\n");
return-1;
}
while(!
feof(fp))/*查询图书资料*/
{
fread(&Book,sizeof(structconsultbook),1,fp);
if(strcmp(Book.name,bookname)==0)
{
if(Book.yes==0)/*图书已借出*/
{
printf("此书已借出\n");
break;
}
else
{
Book.yes=0;/*做出借书标记*/
strcpy(Book.person,Member.name);/*登记借书会员*/
fseek(fp,sizeof(structconsultbook),1);
fwrite(&Book,sizeof(structconsultbook),1,fp);
printf("借书成功\n");
flag=1;
break;
}
}
}
if(flag!
=1)
printf("借书失败\n");
fclose(fp);
return1;
}
4.注意
借书采用会员制方式,即要借书首先要查询会员登记文件,不是会员,则提示先注册会员,如果是会员,查阅图书文件,如果找不到,要先判断图书是否已先借出,如果没有借出,,则可以借书,修改该图书的借书标志Yes