C语言课程设计

您所在的位置:网站首页 c语言图书管理系统借书还书 C语言课程设计

C语言课程设计

2024-07-13 02:15| 来源: 网络整理| 查看: 265

图书管理系统

 

一 课程设计目的

   通过一年的学习,使我们对自己涉及的专业有了一定的了解。课程设计的目的就是要锻炼大家运用所学知识解决实际问题的能力,让我们在实践中更加深刻的了解C语言的运用特点。

本次课程设计要完成以下目的:

1、 新书入库: 图书信息包括书名, 书号, 库存量, 现存量共4项. 首先输入3本书的信息, 并将其存入文件 ”book.dat” 中. 当有新书入库时, 先判断文件中是否有此书( 即比较书名 ), 若有该书在图书账目中已经存在,则将其库存量增加(包括总库存量和现库存量的信息); 若该书不存在, 则在图书账目中增加一种书,总库存量和现库存量的信息添加到文件中. 

2、图书查询: 输入一个书号, 在文件中查找此书, 若找到则输出此书的全部信息; 若找不到则输出查找失败的信息.

3、借阅管理

3.1每个读者的信息包括姓名, 编号, 1张借书卡( 限借一本书 ), 输入3个读者的信息存入文件 “reader . dat” 中.

3.2借书登记: 输入读者的编号,  所借图书的书号, 先判断姓名是否在文件”reader.dat” 中, 若有则将书号存入一张借书卡上( 注: 初始时借书卡的信息都为零, 借书后借书卡的信息改为所借书的书号), 并修改文件”reader.dat”的相应内容, 同时修改文件”book.dat”中此书的现存量. 若”reader.dat”无此姓名, 则应提示错误

3.3还书管理: 输入读者的编号, 所还图书的书号, 将借书卡的信息置为零, 并修改文件”reader.dat”的相应内容, 同时修改文件”book.dat”中此书的现存量.

4、输出全部图书信息和全部读者信息:virtual viod  Show();  // 显示书的信息,class  Reader { //  读者信息类   char Name[ ],//姓名   char position[ ];//职务  int age; //年龄  long  code;//借书证号}

5、退出系统.

6、附加说明:系统将来完善的功能有:添加读者,一位读者可同时借阅和归还多本图书等

 

 

二 设计方案论证

1 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

1.1新书入库模块:可用一个函数insert_new_book(char book_num[],char book_name[],int number)来实现。形参分别为:书名, 书号,以及有多少本书要入库,再根据要求将信息写入文件boot.dat中。又由于最开始要输入三本新书,故可以加一个初始化函数init_book(),但是初始化函数只执行一次,也就是在系统第一次运行的时候执行,此时可以根据判断是否存在boot.dat这个文件来决定是否执行初始化函数.

1.2查询模块:可用一个函数void find_book(char book_num[])来实现。找到就输出此书全部信息,找不到就输出查找失败信息。

1.3借阅管理模块:

三个读者的信息可以在系统初始化时完成.即可用初始化函数init_reader()来实现对读者的初始化。因为读者初始化函数也只是在系统第一次运行的时候执行一次,故也可以根据是否存在reader.dat文件来确定是否执行此函数。(到现在可以发现在系统初始化函数里,至少已经需要调用两个初始化函数了)

借书登记模块:可用一个函数borrow_book(char reader_num[],char book_num[])来实现。在函数中要分别判断

A 该读者的编号是否已经存在,如果不存在,则提示错误。

B 该读者的借阅书是否已满(即最多只能借1本书)如果是,则提醒该用户先去还书

C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。

D 借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存量。

1.4还书管理模块:可用一个函数return_book(char reader_num[],

char book_num[])来实现。在实现此函数时要判断:

A 该读者的姓名是否已经存在,如果不存在,则提示错误。

B 该读者是否已经借阅此书。如果没有,则提示错误。

C 还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。

输出图书和读者信息:可分别用模块print_book()和print_reader()来实现

直接从book.dat文件和reader.dat文件中读取信息并输出。

退出系统:可用一个函数exit()来实现。首先将信息保存到文件,释放动态创建的内存空间,再退出此程序。

 

2 系统主模块结构图:      

                    

新书入库

图书查询

借书登记

借书登记

输出图书信息

输出读者信息

退出系统

图书管理系统

 

 

 

 

 

 

 

 

 

 

 

 

 图1 图书管理系统结构图

 

3  界面设计

此系统界面采用图形和数字化菜单设计。

主界面设计如下:

      

图书管理系统

图书管理系统主菜单

请选择相应的数字执行相应的功能:

0:退出此系统

1:新书入库

2:图书查询

3:借书登记

4:还书管理

5:输出全部图书信息和读者信息

各子界面如下:

 

1、新书入库界面:

请选择相应的数字执行相应的功能:

10:返回主菜单

11:新书入库

请输入新书名:

请输入新书号:

请输入新书数量:

              (注:新书入库成功后,程序返回到子界面1)

2、图书查询界面界面:

   请选择相应的数字执行相应的功能:

20:返回主菜单

21:图书查询

请输入需要查询的书号:

                 (注:图书查询完成后,返回到子界面2)

    `      3、借书登记界面:

    请选择相应的数字执行相应的功能:

30:返回主菜单

31:借书登记

                              请输入读者编号:

                                请输入所借书号:

                  (注:借书过程完成后,返回到子界面3)

`    4、还书管理:

    请选择相应的数字执行相应的功能:

40:返回主菜单

41:还书登记

                              请输入读者编号:

                                请输入所借书号:

                  (注:还书过程完成后,返回到子界面4)

            5、输出全部图书和读者信息:

    请选择相应的数字执行相应的功能:

50:返回主菜单

51:输出全部图书信息:

        书号:   书名:                     库存量:         现存量:   

52:输出全部读者信息:

    读者编号            读者姓名      所借书号

(注:输出图书和读者信息后,返回到子界面5)  

 

4  数据结构设计

程序中考虑到图书信息和读者信息中都包含有不同类型的数据,故分别建立图书和读者两种类型的结构体;由于图书和读者的数量非固定,所以采用动态链式存储来实现。

图书类型:

typedef struct bk{

char  book_num[11];

char  book_name[41];                                   

unsigned   book_kc,book_xc;

struct bk  *next;

                  }book;

读者类型:

typedef struct rd{

char  reader_num[11]; 

char  reader_name[11];                                    

char  reader_book_num[11];

struct bk  *next;

                  }reader;

 

5  主要功能程序结构设计

 

5.1 系统主要结构流程图:

 

 

已做初始化

开始

初始化

退出系统

 

 

 

 

 

 

 

 

 

                                        

功能选择

 

 

 

 

                                                                    

                                  

                        

新书入库

借书登记

还书

图书查询

 

 

 

 

 

入库完否

                                                                      

输出图书信息

输出读者信息

 

 

 

 

 

 

图2 主程序流程图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.2 新书入库功能程序结构图

                            

 

                 

                                   

开始

 

 

输入新书名、新书号和新书数量

                                                                

                                         



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3