图书管理系统设计C语言版.docx
《图书管理系统设计C语言版.docx》由会员分享,可在线阅读,更多相关《图书管理系统设计C语言版.docx(30页珍藏版)》请在冰豆网上搜索。
图书管理系统设计C语言版
江西理工大学
嵌入式系统开发技术
课程设计
专业:
电子信息工程
班级:
学号:
姓名:
设计题目:
图书管理系统设计
2011年11月
课程设计评分表
姓名
班级
学号
课设题目
图书管理系统
指导教师
评分项目
满分分值
得分
设计文档(30分)
文档格式
封面
2
页面布局
4
目录格式
3
图表质量
2
页眉页脚
2
文档内容
内容完整性
6
内容逻辑性
5
内容正确性
6
程序代码(30分)
程序功能
15
编程规范
7
编程文档
8
答辩(20分)
课题陈述
7
问题答辩
10
是否超时
3
考勤(20分)
20
总评成绩
指导教师评语
签名:
年月日
教研室意见
签名:
年月日
1项目分析
1.1项目描述
如今随着大学校园的不断扩大,学生规模的不断增加,相应的图书也要不断的更新,图书馆的建设就变得越来越重要了,就迫切需要一个轻松且方便的图书管理系统。
图书馆通常采用电子化的管理系统,可以有效地提高工作效率,减少人为因素造成的错误,可以促进资源的有效利用。
1.2项目需求
本项目是在使用C语言编程的基础上,编写图书管理系统,具备如下需求:
(1)在PC机的操作系统之下模拟图书管理系统的设计
(2)设计分为四个部分:
查阅图书模块、借阅图书模块、归还图书模块、系统消息模块。
(3)通过C语言知识编写程序。
1.3理论知识点
本项目所涉及的主要理论知识点包括:
(1)C语言编程:
熟练掌握C语言编程的方法;
(2)开发方法:
软件工程化的开发流程,实时软件分析设计方法DARTS,软件质量保证技术;
(3)开发工具:
开发环境的配置和使用方法。
2.需求分析
2.1功能需求
本项目所设计的系统要求实现以下功能。
●图书管理信息包括:
图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。
●新进图书基本信息的输入。
●图书基本信息的查询。
●对撤消图书信息的删除。
●为借书人办理注册。
●办理借书手续。
●办理还书手续。
●使用二进制文件方式存储数据,系统以菜单方式工作。
2.2性能需求
(1)能进行相关的基本操作,如:
图书信息的查询、删除,借书、还书手续操作等。
(2)适应范围广,运行稳定。
2.3运行环境要求
(1) 硬件环境
PC机
(2)软件环境
操作系统:
Windowsxp。
开发工具:
ViscalC++.
3.总体设计
3.1系统功能模块划分
本图书管理系统由查阅图书(chabook),借阅图书(lenbook),系统管理(图书管理,借书卡管理),还书(huanbook)。
四个大的菜单模块组成,其总体结构图如下:
图书管理系统主菜单
其中:
查阅图书模块完成图书信息的查询;
借阅图书模块完成图书的借阅信息;
还书系统模块完成图书的归还信息
系统管理模块完成新进图书基本信息的输入,如:
图书名称、图书编号、单价、作者、存在状态;用户注册信息,如:
姓名、性别、学号等,
3.2数据结构
本系统中主要的数据结构就是系统管理的信息,包含两个部分:
图书信息和用户信息,在处理过程中各项可以作为一个不同属性来进行处理
3.3程序流程分析
4.详细设计
4.1软件模块函数实现
4.1.1图书查询功能的实现
在主菜单中选择“1:
”进入图书查询模块,输入1按书名查找,输入0则返回主菜单,
4.1.2借阅图书功能的实现
在主菜单中选择“2:
”,输入卡号与书名即可,否则将提示错误信息,按0键返回
4.1.3管理系统在主菜单中选择“3:
”
(1)增加图书
在管理系统中选择“1:
”,然后输入书籍的序号,书名、作者、与借阅状态,即可完成添加图书操作。
(2)删除图书
管理菜单中选择“2:
”输入书名,如果存在则自动删除该书籍所有信
息,如果不存在系统不做任何改动。
(3)修改图书资料
管理菜单中选择“3:
”输入书名,然后输入新的序号、书名和作者即可完成修改图书操作。
(4)书籍统计
选择“4:
”即可查看所有图书资料
(5)①申请新卡:
在管理菜单中输入:
“5:
”
然后选择“1:
”,输入卡号,学生姓名,班级。
②删除卡号:
在“”中选择“2:
”,输入卡号即可删除该卡。
③借书统计:
在“”中选择“3:
”,可查看所有借出书籍的信息。
④卡号统计:
在“”中选择“4:
”,查看所有的卡号信息。
4.1.4还书
在主菜单中输入“4:
”,然后输入卡号与要还的书名即可。
4.1.5退出
在主菜单中输入“0:
”,
4.2函数流程图
N
N
图4函数流程图
5编码实现与调试
总结
刚开始面对这项任务时,自己就有点无信心,因为这项任务量太大了,而且自己的C语言学得不太好。
但后来在老师的指导与同学的帮助与鼓励下,自己翻书本,上网查找和上机实践,逐步地完成了这项作业。
通过本次实验,不仅使我所学c语言的知识更加巩固,而且可以使理论与实践相结合,更好的掌握所学到的知识。
在编写程序的时候我也发现了自己很多的不足之处,例如在课堂上学的理论知识有的时候很难把它应用到实际程序中,看似一个简单的功能模块往往需要很多知识的融合。
在图书管理系统的编写过程中,我也更加的明白了程序刚开始设计时结构与算法的重要性。
另外由于编写代码时的一个小失误,导致整个程序无法运行,结果后期花很多的时间去调试,在这里希望大家以此为戒,编写代码的时候一定要细心、谨慎。
参考文献
[1]吕凤翥等.C语言程序设计:
基础理论与案例.清华大学出版社2005
[2]曹衍龙等.C语言实例解析精粹.人民邮电出版社,2005
[3]谭浩强.C语言程序设计(第二版).清华大学出版社,2002
附录
#include
#include
#include
structbook{
charbook_name[30];
intbianhao;
doubleprice;
charauthor[20];
charstate[20];
charname[20];
charsex[10];
intxuehao;
structbook*book_next;
};
structclub{
charname[20];
charsex[10];
intxuehao;
charborrow[30];
structclub*club_next;
};
voidPrint_Book(structbook*head_book);/*浏览所有图书信息*/
voidPrint_Club(structclub*head_club);/*浏览所有学生信息*/
structbook*Create_New_Book();/*创建新的图书库,图书编号输入为0时结束*/
structbook*Search_Book_bianhao(intbianhao,structbook*head_book);
structbook*Search_Book_name(char*b_name,structbook*head_book);
structbook*Search_Book_price(doubleprice_h,doubleprice_l,structbook*head_book);
structbook*Insert_Book(structbook*head_book,structbook*stud_book);/*增加图书,逐个添加*/
structbook*Delete_Book(structbook*head_book,intbianhao);/*删除图书*/
structclub*Create_New_Club();
structclub*Search_Club_xuehao(intxuehao,structclub*head_club);
structclub*Search_Club_name(char*c_name,structclub*head_club);
structclub*Insert_Club(structclub*head_club,structclub*stud_club);
structclub*Delete_Club(structclub*head_club,intxuehao);
structbook*Lent_Book(intbianhao,intxuehao,structbook*head_book,structclub*head_club);
structbook*back(intbianhao,intxuehao,structbook*head_book,structclub*head_club);
intmain()
{
structbook*head_book,*p_book;
charbook_name[30],name[20],author[20],sex[10];
intbianhao;
doubleprice,price_h,price_l;
intsize_book=sizeof(structbook);
intm=1,n=1,f;
char*b_name,*c_name;
structclub*head_club,*p_club;
intxuehao;
intsize_club=sizeof(structclub);
intchoice;
printf("\n欢迎您第一次进入图书管理系统!
\n\n");
printf("----->[向导]----->[新建图书库]\n\n");
printf("注意:
当输入图书编号为0时,进入下一步.\n\n");
head_book=Create_New_Book();
system("cls");
printf("\n欢迎您第一次进入图书管理系统!
\n\n");
printf("----->[向导]----->[新建会员库]\n\n");
printf("注意:
当输入会员学号为0时,进入主菜单.\n\n");
head_club=Create_New_Club();
system("cls");
do{
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("\n");
printf("\t\t\t[1]:
借书办理\t");printf("[6]:
还书办理\n");
printf("\n");
printf("\t\t\t[2]:
查询图书\t");printf("[7]:
查询学生\n");
printf("\t\t\t[3]:
添加图书\t");printf("[8]:
添加学生\n");
printf("\t\t\t[4]:
删除图书\t");printf("[9]:
删除学生\n");
printf("\t\t\t[5]:
遍历图书\t");printf("[10]:
遍历学生\n\n");
printf("\t\t\t〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n");
printf("\t\t\t0:
退出\n\n");
printf("请选择<0~10>:
");
scanf("%d",&choice);
switch(choice){
case1:
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("输入所借图书编号:
\n");
scanf("%d",&bianhao);
printf("输入借书人的学号:
\n");
scanf("%d",&xuehao);
head_book=Lent_Book(bianhao,xuehao,head_book,head_club);
system("cls");
printf("\n借阅成功!
\n\n");
printf("相关信息如下:
\n\n");
head_book=Search_Book_bianhao(bianhao,head_book);
break;
case2:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("1.按编号查询\n\n");
printf("2.按名称查询\n\n");
printf("3.按价格区间查询\n\n");
printf("0.返回主菜单\n\n");
printf("请选择:
");
scanf("%d",&f);
if(f==1){
printf("请输入查询图书编号:
");
scanf("%d",&bianhao);
printf("相关信息如下:
\n\n");
head_book=Search_Book_bianhao(bianhao,head_book);
break;
}
elseif(f==2){
b_name=book_name;
getchar();
printf("请输入查询图书名称:
");
gets(b_name);
printf("相关信息如下:
\n\n");
head_book=Search_Book_name(b_name,head_book);
break;
}
elseif(f==3){
printf("请输入最高价格:
");
scanf("%lf",&price_h);
printf("请输入最低价格:
");
scanf("%lf",&price_l);
printf("相关信息如下:
\n\n");
head_book=Search_Book_price(price_h,price_l,head_book);
break;
}
elseif(f==0){
break;
}
break;
case6:
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("输入所还图书编号:
\n");
scanf("%d",&bianhao);
printf("输入还书人的学号:
\n");
scanf("%d",&xuehao);
head_book=back(bianhao,xuehao,head_book,head_club);
system("cls");
printf("\n归还成功!
\n\n");
printf("相关信息如下:
\n\n");
head_book=Search_Book_bianhao(bianhao,head_book);
break;
case3:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("请输入图书名称:
");
scanf("%s",book_name);
printf("请输入图书编号:
");
scanf("%d",&bianhao);
printf("请输入单价:
");
scanf("%lf",&price);
printf("请输入作者名字:
");
scanf("%s",author);
printf("\n");
structbook*ptr_b;
for(ptr_b=head_book;ptr_b;ptr_b=ptr_b->book_next)
{
if(ptr_b->bianhao==bianhao)
{
printf("此编号图书已存在\n");
m=0;
break;
}
}
if(m){
p_book=(structbook*)malloc(size_book);
strcpy(p_book->book_name,book_name);
p_book->bianhao=bianhao;
p_book->price=price;
p_book->xuehao=0;
strcpy(p_book->author,author);
strcpy(p_book->state,"存在");
strcpy(p_book->sex,"待定");
strcpy(p_book->name,"待定");
head_book=Insert_Book(head_book,p_book);
printf("\n添加图书成功!
\n\n");
}
break;
case4:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("输入删除图书编号:
\n");
scanf("%d",&bianhao);
head_book=Delete_Book(head_book,bianhao);
printf("\n删除图书成功!
\n\n");
break;
case5:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
Print_Book(head_book);
break;
case7:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("1.按学号查询\n\n");
printf("2.按姓名查询\n\n");
printf("0.返回主菜单\n\n");
printf("请选择:
");
scanf("%d",&f);
if(f==1){
printf("请输入查询学生学号:
");
scanf("%d",&xuehao);
printf("相关信息如下:
\n\n");
head_club=Search_Club_xuehao(xuehao,head_club);
break;
}
elseif(f==2){
c_name=name;
getchar();
printf("请输入查询学生姓名:
");
gets(c_name);
printf("相关信息如下:
\n\n");
head_club=Search_Club_name(c_name,head_club);
break;
}
elseif(f==0){
break;
}
break;
printf("请输入查询学生学号:
\n");
scanf("%d",&xuehao);
printf("相关信息如下:
\n\n");
break;
case8:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("请输入学生名字:
");
scanf("%s",name);
printf("请输入学生性别:
");
scanf("%s",sex);
printf("请输入学生学号:
");
scanf("%d",&xuehao);
printf("\n");
structclub*ptr_c;
for(ptr_c=head_club;ptr_c;ptr_c=ptr_c->club_next)
{
if(ptr_c->xuehao==xuehao)
{
printf("此学号学生已存在\n");
n=0;
break;
}
}
if(n){
p_club=(structclub*)malloc(sizeof(structclub));
strcpy(p_club->name,name);
strcpy(p_club->sex,sex);
p_club->xuehao=xuehao;
strcpy(p_club->borrow,"暂无");
head_club=Insert_Club(head_club,p_club);
printf("\n添加学生成功!
\n\n");
}
break;
case9:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("输入要删除学生学号:
\n");
scanf("%d",&xuehao);
head_club=Delete_Club(head_club,xuehao);
printf("\n删除学生成功!
\n\n");
break;
case10:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
Print_Club(head_club);
break;
case0:
system("cls");
printf("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");
printf("\n谢谢您的使用!
\n\n");
break;
}
}while(choice!
=0);
return0;
}
structbook*Create_New_