C语言实训大作业.docx

上传人:b****6 文档编号:7773375 上传时间:2023-01-26 格式:DOCX 页数:67 大小:1.05MB
下载 相关 举报
C语言实训大作业.docx_第1页
第1页 / 共67页
C语言实训大作业.docx_第2页
第2页 / 共67页
C语言实训大作业.docx_第3页
第3页 / 共67页
C语言实训大作业.docx_第4页
第4页 / 共67页
C语言实训大作业.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

C语言实训大作业.docx

《C语言实训大作业.docx》由会员分享,可在线阅读,更多相关《C语言实训大作业.docx(67页珍藏版)》请在冰豆网上搜索。

C语言实训大作业.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1