1、C语言实训大作业软件学院大作业任务书题 目: 图书馆管理系统 专 业: 软件工程 班 级: 133班 姓名学号: 高爽超* 学 号: * 完成人数: 1人 起讫日期: 2014. 2. 172014. 3. 18 任课教师: 刘伯成 职称: 讲师 部分管主任: 完成时间: 2014年 月 日 说 明1.本任务书由任课教师填写后,下达到学生。2.任务完成后,任课教师需填写小结表。3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。4.另附一份全班大作业总结大作业的要求和内容:(包括题目选择范围、技术要求、递交时间、考核方法等)请根据所学的C语言的内容,完
2、成一个完整的C语言程序,程序的内容和功能,可以自己根据需要进行自定义,但不能过于简单,代码行数要在1000行以上,且所设计的程序满足如下要求:1.程序中要具备结构体类型的数据操作、链表操作等;2.程序中要具备文件读取和写入的操作(含顺序、随机);3.程序中要具备常用的排序和查找功能;4.要有断点调试、改错过程及相应截图;5.要求程序具备简单的菜单功能,根据用户的输入,执行相应的操作;6.在菜单界面,必须显示程序的名称、版本信息,开发者的名字、班级、学号等信息。最终提交的作业,除提交完整的程序工程代码外,还必须以大作业报告的形式说明程序的流程、结构以及设计、实现过程,具体参见课程设计说明书和教材
3、。作业评分将以完成的程序质量和复杂程度为基础,并根据大作业报告进行综合评分。教师小结:成绩: 教 师 签 名: 教研部负责人: 学生姓名: 高爽超 NANCHANG UNIVERSITYC语言工程实训课程设计 题 目: 图书馆管理系统 学 院: 软件学院 专 业: 软件工程 班 级: 软工133班 完成人数: 1人 成 员: 1人 起讫日期: 2014. 2. 172014. 3. 18 任课教师: 刘伯成 职称: 讲师 完成时间: 2014年 3月15 日 填表日期: 2014 年 3 月 15 日一、需求分析(参考教材第2章)1.1项目介绍图书管理系统是一个高度集成的图书信息处理系统,通过
4、图书馆的各种功能进行整合,从而达到显示检索信息,提高工作效率,降低管理成本等目的。1.2功能需求一个完整的图书管理系统应该能管理所有的图书种类,图书信息以及读者信息,还要提供各种图书信息的检索和查询功能。该系统还需要对图书的借阅,归还进行管理,并对读者的罚款进行自动合计。主要实现以下几个功能:1读者信息功能2查询图书信息3查看以借图书4图书借阅5查看罚款6借阅历史7书目查询8图书编目管理二、系统分析(参考教材第2章)2.1本程序需解决的关键技术问题需要解决的关键继续包括以下几点:1程序中要具备结构体类型的数据操作、链表操作; 2程序中要具备文件读取和写入的操作(含顺序和随机) 3程序中要具备常
5、用的排序和查找功能; 4要会使用断点调试、改错; 5要求程序具备简单的菜单功能,根据用户的输入,执行相应的操作;2.2程序流程 Y N三、程序设计与实现(参考教材第3-7章)3.1程序设计#include#include #include #include FILE *fp;typedef struct Reader char Code20; /证件号 char Name30; /姓名 char Sex5; /性别 char Dept50; /工作单位 int Tag; /状态: 0-正常, 1-挂失 Reader;typedef struct ReaderLink char Code20;
6、/证件号 char Name30; /姓名 char Sex5; /性别 char Dept50; /工作单位 int Tag; /状态: 0-正常, 1-挂失 struct ReaderLink *next;ReaderLink;#ifndef Catalog_H #define Catalog_H #define MAX_TREE_SIZE 100typedef struct Catalog /目录结构类型 char Key20; /编号 char Caption80; /标题,类名 char Parent20; /父类编号 / int num; Catalog; typedef stru
7、ct CatalogTree /目录顺序存储结构类型Catalog NodeMAX_TREE_SIZE;int root; /根节点位置,根节点默认在0号单元;int num; /最后一个结点的数组编号CatalogTree;#ifndef Book_H #define Book_H #define MAX_BOOK_SIZE 5000#define true 1#define false 0typedef int bool ;typedef struct Book char ISBN50; /ISBN号 char Title200; /书名 char Author200; /作者 char
8、Publisher100; /出版社 char Date20; /出版日期 float Price; /价格 char CatalogNum200; /分类编号Book; typedef struct BookLink /图书单链表存储结构类型 char ISBN50; /ISBN号 char Title200; /书名 char Author200; /作者 char Publisher100; /出版社 char Date20; /出版日期 float Price; /价格 char CatalogNum200; /分类编号struct BookLink *next;BookLink;ty
9、pedef struct BookList /图书顺序存储结构类型 Book *Node; int Num; /图书个数BookList;#ifndef Lend_H #define Lend_H #define MAX_BOOK_LEND 4 /最多借15本#define MAX_DAY_LEND 90 /*最长借期90天*/typedef struct LendInfo char Code20; /证件号 char ISBN50; char LendDate20 ; /借书日期 char LastDate20; /应还日期 char ReturnDate20; /归还日期 int Tag;
10、 /状态0;借出,1:归还LendInfo;typedef struct LendInfoLink char Code20; /证件号 char ISBN50; char LendDate20 ; /借书日期 char LastDate20; /应还日期 char ReturnDate20; /归还日期 int Tag; /状态0;借出,1:归还 struct LendInfoLink *next;LendInfoLink;void MainMenu();void ReadMenu();void ReadMenuChoose();void CatalogMenu();void CatalogM
11、enuChoose();void BookMenu();void BookMenuChoose();void CirculMenu();void CirculMenuChoose();void AddCatalog( ); /增加分类void PrintCatalog( ); /输出目录,(编号,类名,父类号)void CreatCatalogTree( ); /建立分类目录树,调用PrintCatalogTree( )void PrintCatalogTree(CatalogTree *tree ); /输出分类目录树,调用PreOrder( );void PreOrder(CatalogT
12、ree* ,int ,int ); /递归遍历结构体数组输出树void AlterCatalog( ); /修改分类#endifvoid BrowseReader( ) ; /浏览所有读者信息ReaderLink * InputReader( ); /输入读者信息,建立链表void SaveReader(ReaderLink *); /保存读者链表到文件void FindReader_Code(); /从文件中按照证件号查找void FindReader_Name(); /从文件中按照姓名查找 void AlterReader( ); /修改读者信息,从文件中读取信息, /建立链表,查找并修改
13、,再写回文件ReaderLink * CreatReaderLink( );/从文件读取读者信息并创建链表void SaveReaderW(ReaderLink * );/读者信息写入文件,删除旧信息浏览void LostReader( );/证件挂失#endif/*从文件读出数据,建立单链表,删改查后,重新写回文件增加图书就直接追加写入文件*/BookLink *InputBook( ); /输入多个图书目录,建立链表void SaveBook( BookLink * ); /保存图书链表到文件BookLink *CreatBookLink( ) ; /读取文件信息,建立图书目录链表void
14、 SaveBookW( BookLink * ); /保存链表到文件,重写BookLink *InsertSortBook( BookLink *head ); /图书目录直接插入排序void DeleteBook( ) ; /删除图书目录void AlterBook( ) ; /修改图书目录#endifvoid BookBrowseCatalog( ); /图书分类浏览BookList CreatBookList( ) ; /建立图书结构体数组void FindISBN( ); /BookList BubbleSort(BookLis );int BinSearchISBN(BookList
15、 B,char ) ;void FindISBN_BubbleSort( );void FindISBN_SelectSort( );void FindISBN_InsertSort( );BookList SelectSort(BookList );int BinSearchTitle(BookList ,char ) ;void FindAuthor( );BookList InsertSort(BookList );int SearchAuthor(BookList ,char ) ; /顺序查找多个void FindPublisher( );BookList BInsertSort(B
16、ookList );int SearchPublisher(BookList ,char ); /顺序查找多个void FindTitle( );void LendBook( ); /借阅图书Reader FindReaderL(char); /查询读者/int LendBookNum(char);/计算已借本数void SaveLendInfo(LendInfo ); /保存借阅信息到文件void ReturnBook( ) ;/还书LendInfoLink* CreatLendLink();/建立借阅信息链表void SaveLendInfoW(LendInfoLink *);/保存借阅信
17、息到文件,覆盖旧信息void FindLendInfo( );/查询个人借阅记录void main() int MenuNum; do MainMenu(); printf(请输入你的选择!0-4 : ); scanf(%d,&MenuNum); switch(MenuNum) case 1: ReadMenu( ); ReadMenuChoose(); printf(n-回车继续操作!-n); getch( ); system(cls); break; case 2: CatalogMenu( ); CatalogMenuChoose(); printf(n-回车继续操作!-n); getc
18、h( ); system(cls); break; case 3: BookMenu(); BookMenuChoose(); printf(n-回车继续操作!-n); getch( ); system(cls); break; case 4: CirculMenu(); CirculMenuChoose(); printf(n-回车继续操作!-n); getch( ); system(cls); break; case 0: ; break; while(MenuNum!=0); void MainMenu( ) printf( * n); printf( 南昌大学图书馆管理系统 n); p
19、rintf( 主菜单 n); printf( * n); printf( * 1.读者管理 *n); printf( * 2.图书分类管理 *n); printf( * 3.图书编目管理 *n); printf( * 4.图书流通管理 *n); printf( * 0.退出系统 *n); printf( * n); printf( 版权所有 南昌大学 软件工程 高爽超 n); printf( 学号:8000113177 时间:2014 /3/15 n); printf( * n);void ReadMenu( ) printf( * n); printf( 读者管理菜单 n); printf(
20、 * n); printf( * 1.浏览所有读者 *n); printf( * 2.增加读者 *n); printf( * 3.查询读者 *n); printf( * 4.修改读者 *n); printf( * 5.证件挂失 *n); printf( * 0.返回上级 *n); printf( * n); void CatalogMenu( ) printf( * n); printf( 分类管理菜单 n); printf( * n); printf( * 1.增加分类 *n); printf( * 2.输出分类 *n); printf( * 3.输出树形分类树 *n); printf( *
21、 4.修改分类 *n); printf( * 0.返回上级 *n); printf( * n); void BookMenu( ) printf( * n); printf( 图书编目管理菜单 n); printf( * n); printf( * 1.新书录入 *n); printf( * 2.删除图书目录 *n); printf( * 3.修改图书目录 *n); printf( * 4.查询图书目录 *n); printf( * 0.返回上级 *n); printf( * n); void CirculMenu( ) printf( * n); printf( 图书流通管理菜单 n); p
22、rintf( * n); printf( * 1.图书分类浏览 *n); printf( * 2.图书检索 *n); printf( * 3.借书 *n); printf( * 4.还书 *n); printf( * 5.查询借阅记录 *n); printf( * 0.返回上级 *n); printf( * n); void CirculMenuChoose() int MenuNum; int num; printf(请输入你的选择!0-5 : ); scanf(%d,&MenuNum); switch(MenuNum) case 1: BookBrowseCatalog( ); break
23、; case 2: printf(n输入选择(ISBN 1,书名2,作者3,出版社4):); scanf(%d,&num); switch(num) case 1: FindISBN_BubbleSort();break; case 2: FindTitle();break; case 3: FindAuthor();break; case 4: FindPublisher();break; break; case 3: LendBook( ); break; case 4: ReturnBook(); break; case 5: FindLendInfo(); break; case 0:
24、 ;break; void CatalogMenuChoose() int MenuNum; int num; printf(请输入你的选择!0-4 : ); scanf(%d,&MenuNum); switch(MenuNum) case 1: AddCatalog( ); break; case 2: PrintCatalog( ); break; case 3: CreatCatalogTree(); break; case 4: AlterCatalog( ); break; case 0: ;break; void ReadMenuChoose() int MenuNum; int
25、num; printf(请输入你的选择!0-5 : ); scanf(%d,&MenuNum); switch(MenuNum) case 1: BrowseReader( ); break; case 2:InputReader( ); break; case 3: printf(n输入选择(证件号:1,姓名:2):); scanf(%d,&num); if(num=1) FindReader_Code(); else FindReader_Name(); break; case 4: AlterReader( ); break; case 5: LostReader( ); break; case 0: ; break; void BookMenuChoose() int MenuNum; int num; printf(请输入你的选择!0-4 : ); scanf(%d,&MenuNum);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1