图书管理系统设计(C语言版)

图书管理系统设计(C语言版)
图书管理系统设计(C语言版)

江西理工大学

嵌入式系统开发技术

课程设计

专业:电子信息工程

班级:

学号:

姓名:

设计题目:图书管理系统设计

2011年11月

课程设计评分表

目录

1项目分析 (1)

1.1项目描述 (1)

1.2项目需求 (1)

1.3理论知识点 (1)

2.需求分析 (2)

2.1功能需求 (2)

2.2性能需求 (2)

2.3运行环境要求 (2)

3.总体设计 (3)

3.1系统功能模块划分 (3)

3.3程序流程分析 (4)

4.详细设计 (5)

4.1软件模块函数实现 (5)

4.1.1图书查询功能的实现 (5)

4.1.2借阅图书功能的实现 (5)

4.1.3管理系统 (5)

4.1.4还书 (6)

4.1.5退出 (7)

4.2函数流程图 (7)

5编码实现与调试 (8)

总结 (10)

参考文献 (11)

附录 (12)

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)软件环境

操作系统:Windows xp。

开发工具:Viscal C++.

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 函数流程图

图4 函数流程图

5编码实现与调试

总结

刚开始面对这项任务时,自己就有点无信心,因为这项任务量太大了,而且自己的C 语言学得不太好。但后来在老师的指导与同学的帮助与鼓励下,自己翻书本,上网查找和上机实践,逐步地完成了这项作业。

通过本次实验,不仅使我所学c语言的知识更加巩固,而且可以使理论与实践相结合,更好的掌握所学到的知识。在编写程序的时候我也发现了自己很多的不足之处,例如在课堂上学的理论知识有的时候很难把它应用到实际程序中,看似一个简单的功能模块往往需要很多知识的融合。在图书管理系统的编写过程中,我也更加的明白了程序刚开始设计时结构与算法的重要性。另外由于编写代码时的一个小失误,导致整个程序无法运行,结果后期花很多的时间去调试,在这里希望大家以此为戒,编写代码的时候一定要细心、谨慎。

参考文献

[1] 吕凤翥等.C语言程序设计:基础理论与案例.清华大学出版社2005

[2] 曹衍龙等. C语言实例解析精粹.人民邮电出版社,2005

[3] 谭浩强.C语言程序设计(第二版).清华大学出版社,2002

.

附录#include

#include

#include

struct book{

char book_name[30];

int bianhao;

double price;

char author[20];

char state[20];

char name[20];

char sex[10];

int xuehao;

struct book *book_next;

};

struct club{

char name[20];

char sex[10];

int xuehao;

char borrow[30];

struct club *club_next;

};

void Print_Book(struct book *head_book);/*浏览所有图书信息*/

void Print_Club(struct club *head_club);/*浏览所有学生信息*/

struct book *Create_New_Book();/*创建新的图书库,图书编号输入为0时结束*/ struct book *Search_Book_bianhao(int bianhao,struct book *head_book);

struct book *Search_Book_name(char *b_name,struct book *head_book);

struct book *Search_Book_price(double price_h,double price_l,struct book

*head_book);

struct book *Insert_Book(struct book *head_book,struct book *stud_book);/*增加图书,逐个添加*/

struct book *Delete_Book(struct book *head_book,int bianhao);/*删除图书*/ struct club *Create_New_Club();

struct club *Search_Club_xuehao(int xuehao,struct club *head_club);

struct club *Search_Club_name(char *c_name,struct club *head_club);

struct club *Insert_Club(struct club *head_club,struct club *stud_club);

struct club *Delete_Club(struct club *head_club,int xuehao);

struct book *Lent_Book(int bianhao,int xuehao,struct book *head_book,struct club

*head_club);

struct book *back(int bianhao,int xuehao,struct book *head_book,struct club *head_club);

int main()

{

struct book *head_book,*p_book;

char book_name[30],name[20],author[20],sex[10];

int bianhao;

double price,price_h,price_l;

int size_book=sizeof(struct book);

int m=1,n=1,f;

char *b_name,*c_name;

struct club *head_club,*p_club;

int xuehao;

int size_club=sizeof(struct club);

int choice;

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){

case 1:

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;

case 2:

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;

}

else if(f==2){

b_name=book_name;

getchar();

printf("请输入查询图书名称:");

gets(b_name);

printf("相关信息如下:\n\n");

head_book=Search_Book_name(b_name,head_book);

break;

}

else if(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;

}

else if(f==0){

break;

相关主题
相关文档
最新文档