C语言实训大作业.docx
- 文档编号:7773375
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:67
- 大小:1.05MB
C语言实训大作业.docx
《C语言实训大作业.docx》由会员分享,可在线阅读,更多相关《C语言实训大作业.docx(67页珍藏版)》请在冰豆网上搜索。
C语言实训大作业
软件学院大作业任务书
题目:
图书馆管理系统
专业:
软件工程
班级:
133班
姓名学号:
高爽超**********
学号:
**********
完成人数:
1人
起讫日期:
2014.2.17—2014.3.18
任课教师:
刘伯成职称:
讲师
部分管主任:
完成时间:
2014年月日
说明
1.本任务书由任课教师填写后,下达到学生。
2.任务完成后,任课教师需填写小结表。
3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。
4.另附一份全班大作业总结
大作业的要求和内容:
(包括题目选择范围、技术要求、递交时间、考核方法等)
请根据所学的C语言的内容,完成一个完整的C语言程序,程序的内容和功能,可以自己根据需要进行自定义,但不能过于简单,代码行数要在1000行以上,且所设计的程序满足如下要求:
1.程序中要具备结构体类型的数据操作、链表操作等;
2.程序中要具备文件读取和写入的操作(含顺序、随机);
3.程序中要具备常用的排序和查找功能;
4.要有断点调试、改错过程及相应截图;
5.要求程序具备简单的菜单功能,根据用户的输入,执行相应的操作;
6.在菜单界面,必须显示程序的名称、版本信息,开发者的名字、班级、学号等信息。
最终提交的作业,除提交完整的程序工程代码外,还必须以大作业报告的形式说明程序的流程、结构以及设计、实现过程,具体参见课程设计说明书和教材。
作业评分将以完成的程序质量和复杂程度为基础,并根据大作业报告进行综合评分。
教师小结:
成绩:
教师签名:
教研部负责人:
学生姓名:
高爽超
NANCHANGUNIVERSITY
C语言工程实训课程设计
题目:
图书馆管理系统
学院:
软件学院
专业:
软件工程
班级:
软工133班
完成人数:
1人
成员:
1人
起讫日期:
2014.2.17—2014.3.18
任课教师:
刘伯成职称:
讲师
完成时间:
2014年3月15日
填表日期:
2014年3月15日
一、需求分析(参考教材第2章)
1.1项目介绍
图书管理系统是一个高度集成的图书信息处理系统,通过图书馆的各种功能进行整合,从而达到显示检索信息,提高工作效率,降低管理成本等目的。
1.2功能需求
一个完整的图书管理系统应该能管理所有的图书种类,图书信息以及读者信息,还要提供各种图书信息的检索和查询功能。
该系统还需要对图书的借阅,归还进行管理,并对读者的罚款进行自动合计。
主要实现以下几个功能:
1》读者信息功能
2》查询图书信息
3》查看以借图书
4》图书借阅
5》查看罚款
6》借阅历史
7》书目查询
8》图书编目管理
二、系统分析(参考教材第2章)
2.1本程序需解决的关键技术问题
需要解决的关键继续包括以下几点:
1》程序中要具备结构体类型的数据操作、链表操作;
2》程序中要具备文件读取和写入的操作(含顺序和随机)
3》程序中要具备常用的排序和查找功能;
4》要会使用断点调试、改错;
5》要求程序具备简单的菜单功能,根据用户的输入,执行相应的操作;
2.2
程序流程
Y
N
三、程序设计与实现(参考教材第3-7章)
3.1程序设计
#include
#include
#include
#include
FILE*fp;
typedefstructReader
{
charCode[20];//证件号
charName[30];//姓名
charSex[5];//性别
charDept[50];//工作单位
intTag;//状态:
0-正常,1-挂失
}Reader;
typedefstructReaderLink
{
charCode[20];//证件号
charName[30];//姓名
charSex[5];//性别
charDept[50];//工作单位
intTag;//状态:
0-正常,1-挂失
structReaderLink*next;
}ReaderLink;
#ifndefCatalog_H
#defineCatalog_H
#defineMAX_TREE_SIZE100
typedefstructCatalog//目录结构类型
{
charKey[20];//编号
charCaption[80];//标题,类名
charParent[20];//父类编号
//intnum;
}Catalog;
typedefstructCatalogTree//目录顺序存储结构类型
{
CatalogNode[MAX_TREE_SIZE];
introot;//根节点位置,根节点默认在0号单元;
intnum;//最后一个结点的数组编号
}CatalogTree;
#ifndefBook_H
#defineBook_H
#defineMAX_BOOK_SIZE5000
#definetrue1
#definefalse0
typedefintbool;
typedefstructBook
{
charISBN[50];//ISBN号
charTitle[200];//书名
charAuthor[200];//作者
charPublisher[100];//出版社
charDate[20];//出版日期
floatPrice;//价格
charCatalogNum[200];//分类编号
}Book;
typedefstructBookLink//图书单链表存储结构类型
{
charISBN[50];//ISBN号
charTitle[200];//书名
charAuthor[200];//作者
charPublisher[100];//出版社
charDate[20];//出版日期
floatPrice;//价格
charCatalogNum[200];//分类编号
structBookLink*next;
}BookLink;
typedefstructBookList//图书顺序存储结构类型
{
Book*Node;
intNum;//图书个数
}BookList;
#ifndefLend_H
#defineLend_H
#defineMAX_BOOK_LEND4//最多借15本
#defineMAX_DAY_LEND90/*最长借期90天*/
typedefstructLendInfo
{
charCode[20];//证件号
charISBN[50];
charLendDate[20];//借书日期
charLastDate[20];//应还日期
charReturnDate[20];//归还日期
intTag;//状态0;借出,1:
归还
}LendInfo;
typedefstructLendInfoLink
{
charCode[20];//证件号
charISBN[50];
charLendDate[20];//借书日期
charLastDate[20];//应还日期
charReturnDate[20];//归还日期
intTag;//状态0;借出,1:
归还
structLendInfoLink*next;
}LendInfoLink;
voidMainMenu();
voidReadMenu();
voidReadMenuChoose();
voidCatalogMenu();
voidCatalogMenuChoose();
voidBookMenu();
voidBookMenuChoose();
voidCirculMenu();
voidCirculMenuChoose();
voidAddCatalog();//增加分类
voidPrintCatalog();//输出目录,(编号,类名,父类号)
voidCreatCatalogTree();//建立分类目录树,调用PrintCatalogTree()
voidPrintCatalogTree(CatalogTree*tree);//输出分类目录树,调用PreOrder();
voidPreOrder(CatalogTree*,int,int);//递归遍历结构体数组输出树
voidAlterCatalog();//修改分类
#endif
voidBrowseReader();//浏览所有读者信息
ReaderLink*InputReader();//输入读者信息,建立链表
voidSaveReader(ReaderLink*);//保存读者链表到文件
voidFindReader_Code();//从文件中按照证件号查找
voidFindReader_Name();//从文件中按照姓名查找
voidAlterReader();//修改读者信息,从文件中读取信息,//建立链表,查找并修改,再写回文件
ReaderLink*CreatReaderLink();//从文件读取读者信息并创建链表
voidSaveReaderW(ReaderLink*);//读者信息写入文件,删除旧信息浏览
voidLostReader();//证件挂失
#endif
/*从文件读出数据,建立单链表,删改查后,重新写回文件
增加图书就直接追加写入文件*/
BookLink*InputBook();//输入多个图书目录,建立链表
voidSaveBook(BookLink*);//保存图书链表到文件
BookLink*CreatBookLink();//读取文件信息,建立图书目录链表
voidSaveBookW(BookLink*);//保存链表到文件,重写
BookLink*InsertSortBook(BookLink*head);//图书目录直接插入排序
voidDeleteBook();//删除图书目录
voidAlterBook();//修改图书目录
#endif
voidBookBrowseCatalog();//图书分类浏览
BookListCreatBookList();//建立图书结构体数组
voidFindISBN();//
BookListBubbleSort(BookLis);
intBinSearchISBN(BookListB,char[]);
voidFindISBN_BubbleSort();
voidFindISBN_SelectSort();
voidFindISBN_InsertSort();
BookListSelectSort(BookList);
intBinSearchTitle(BookList,char[]);
voidFindAuthor();
BookListInsertSort(BookList);
intSearchAuthor(BookList,char[]);//顺序查找多个
voidFindPublisher();
BookListBInsertSort(BookList);
intSearchPublisher(BookList,char[]);//顺序查找多个
voidFindTitle();
voidLendBook();//借阅图书
ReaderFindReaderL(char[]);//查询读者
//intLendBookNum(char[]);//计算已借本数
voidSaveLendInfo(LendInfo);//保存借阅信息到文件
voidReturnBook();//还书
LendInfoLink*CreatLendLink();//建立借阅信息链表
voidSaveLendInfoW(LendInfoLink*);//保存借阅信息到文件,覆盖旧信息
voidFindLendInfo();//查询个人借阅记录
voidmain()
{
intMenuNum;
do
{
MainMenu();
printf("请输入你的选择!
0-4:
");
scanf("%d",&MenuNum);
switch(MenuNum)
{
case1:
ReadMenu();
ReadMenuChoose();
printf("\n---------------回车继续操作!
------------------\n");
getch();
system("cls");
break;
case2:
CatalogMenu();
CatalogMenuChoose();
printf("\n---------------回车继续操作!
------------------\n");
getch();
system("cls");
break;
case3:
BookMenu();
BookMenuChoose();
printf("\n---------------回车继续操作!
------------------\n");
getch();
system("cls");
break;
case4:
CirculMenu();
CirculMenuChoose();
printf("\n---------------回车继续操作!
------------------\n");
getch();
system("cls");
break;
case0:
;
break;
}
}while(MenuNum!
=0);
}
voidMainMenu()
{
printf("****************************************\n");
printf("南昌大学图书馆管理系统\n");
printf("主菜单\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");
}
voidReadMenu()
{
printf("****************************************\n");
printf("读者管理菜单\n");
printf("****************************************\n");
printf("*1.浏览所有读者*\n");
printf("*2.增加读者*\n");
printf("*3.查询读者*\n");
printf("*4.修改读者*\n");
printf("*5.证件挂失*\n");
printf("*0.返回上级*\n");
printf("****************************************\n");
}
voidCatalogMenu()
{
printf("****************************************\n");
printf("分类管理菜单\n");
printf("****************************************\n");
printf("*1.增加分类*\n");
printf("*2.输出分类*\n");
printf("*3.输出树形分类树*\n");
printf("*4.修改分类*\n");
printf("*0.返回上级*\n");
printf("****************************************\n");
}
voidBookMenu()
{
printf("****************************************\n");
printf("图书编目管理菜单\n");
printf("****************************************\n");
printf("*1.新书录入*\n");
printf("*2.删除图书目录*\n");
printf("*3.修改图书目录*\n");
printf("*4.查询图书目录*\n");
printf("*0.返回上级*\n");
printf("****************************************\n");
}
voidCirculMenu()
{
printf("****************************************\n");
printf("图书流通管理菜单\n");
printf("****************************************\n");
printf("*1.图书分类浏览*\n");
printf("*2.图书检索*\n");
printf("*3.借书*\n");
printf("*4.还书*\n");
printf("*5.查询借阅记录*\n");
printf("*0.返回上级*\n");
printf("****************************************\n");
}
voidCirculMenuChoose()
{
intMenuNum;
intnum;
printf("请输入你的选择!
0-5:
");
scanf("%d",&MenuNum);
switch(MenuNum)
{
case1:
BookBrowseCatalog();
break;
case2:
printf("\n输入选择(ISBN1,书名2,作者3,出版社4):
");
scanf("%d",&num);
switch(num)
{
case1:
FindISBN_BubbleSort();break;
case2:
FindTitle();break;
case3:
FindAuthor();break;
case4:
FindPublisher();break;
}
break;
case3:
LendBook();
break;
case4:
ReturnBook();
break;
case5:
FindLendInfo();
break;
case0:
;break;
}
}
voidCatalogMenuChoose()
{
intMenuNum;
intnum;
printf("请输入你的选择!
0-4:
");
scanf("%d",&MenuNum);
switch(MenuNum)
{
case1:
AddCatalog();
break;
case2:
PrintCatalog();
break;
case3:
CreatCatalogTree();
break;
case4:
AlterCatalog();
break;
case0:
;break;
}
}
voidReadMenuChoose()
{
intMenuNum;
intnum;
printf("请输入你的选择!
0-5:
");
scanf("%d",&MenuNum);
switch(MenuNum)
{
case1:
BrowseReader();
break;
case2:
InputReader();
break;
case3:
printf("\n输入选择(证件号:
1,姓名:
2):
");
scanf("%d",&num);
if(num==1)
FindReader_Code();
else
FindReader_Name();
break;
case4:
AlterReader();
break;
case5:
LostReader();
break;
case0:
;
break;
}
}
voidBookMenuChoose()
{
intMenuNum;
intnum;
printf("请输入你的选择!
0-4:
");
scanf("%d",&MenuNum);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实训大 作业