ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:551.26KB ,
资源ID:10735964      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10735964.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(12小组大作业剖析.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

12小组大作业剖析.docx

1、12小组大作业剖析Hefei University 面向过程程序设计大作业报告 BACHELOR DISSERTATION项目题目: 图书管理系统的设计与实现 年级系别专业班级:15级电子系通信工程(二)班 组员姓名: 张凯 谢跃兵 李亚南 导师姓名: 方小红 完成时间: 2016.6.16 目录一基本概念 1.C/C+语言的特点 2.指针的使用方法 3.数组传递技术 二需求分析 三概要分析 四界面设计 五. 模型设计 六. 模块设计 1.Main.cpp文件 2.Menu.cpp文件 3.Input.cpp文件 4.Output.cpp文件 5.Search.cpp文件 6.Delete.c

2、pp文件 7.Keep.cpp文件 8.Load.cpp文件 9.Menu.h文件 10.BookManager.h文件 11.Book.h文件 七运行测试 八项目总结 九课程心得 张凯的心得: 李亚南的心得: 谢跃兵的心得: 十致谢 十一参考文献 中 文 摘要对于本次实验,工程要求包含图书的数据输入功能,数据的显示(输出)功能,数据查询(按照作者姓名查询)功能,数据删除(根据输入图书序号)功能,图书数据保存功能和调用图书数据功能。针对这些我们运用到选择语句,循环语句,结构体,数组,指针,宏定义等方式共同创建工程代码。我们的大致思路是:首先针对每个功能进行创建工程代码,以结构体,数组形式表示图

3、书的编号、书名、作者姓名、价格、书籍出版社、书籍ISBN。运用循环语句将每本书的数据依次输入、输出、保存、调用;根据指针,地址传递的方式(根据输入的编号)删除图书数据;根据指针,地址传递的方式(根据输入的作者姓名)查询并输出该图书的数据。然后创建程序起始页面(Menu)模块。最后创建主模块将所有的模块连接起来(使用函数调用,传递地址)。通过以上三步将程序代码串联在一起,并结合相应的头文件声明来结束这个工程。通过调试,使工程达到预期要求。关键词:结构体;数组;指针;宏定义;循环 一基本概念1.C/C+语言的特点C语言兼有高级语言和低级语言的特点:高级语言特点:语言简洁,运算符丰富,使用灵活方便,

4、适合结构化编程。低级语言特点:可操作内存单元和数据位操作,目标代码质量高,适合开发系统软件和嵌入式软件。C+保留了C的所有特点(编译生成的目标代码质量、效率只比C稍差),并在其基础上增加了面向程序设计的语法,更容易完成复杂环境模型建立和问题解决。2.指针的使用方法指针的使用包含三个步骤:抛地址(抛钥匙或抛绣球)如:调用交换模块代码:swap(&a,&b),实参&a、&b分别是a、b的地址,也就是抛地址。当一个模块中的变量需要在另一个模块中即时改变,除了将这些变量地址抛出去之外,别无他法。类型匹配(门当户对)交换模块定义头部:如:void swap(0int *pA,int*pB),定义了两个形

5、参,这两个形参的类型是整数型的指针变量,必须与抛过来的地址类型匹配。当然,一切函数参数传递都要遵循类型匹配这个规则,匹配有两个含义:第一,要求相同类型;第二,数据个数相同。使用间接方式操作(芝麻开门)如:在swap模块内部使用pA和pB的时候,前面都加上了指针运算符*,这是间接操作数据方式(芝麻开门)。读者揣测一下发送者和接收者的心思,接收者接到了地址接着就是对*pA和*pB操作。3.数组传递技术传地址数组名实质是一个固定地址,数组名作为实参传递,实际是将这个数组的头地址传过去(抛过去的不是一个数,是一把打开宝库的钥匙)。自定义函数的形参拿到了头地址(钥匙)后,实质上控制了原来的数组,就可以按

6、图索骥地改变原来数组中的元素内容。所以,自定义模块sort的形参形式float pArrayN等价于float *pArray,本质上是指针变量。正是由于数组名作为函数参数传递的实质是地址传递,所以不需要显示ruturn语句。传长度Float pArryN等价于float *pArry,这说明Float pArryN中的N可有可无。事实上,sort模块的头部写成:void sort(float pArray0)或void sort (float PArry1000)都可以,排序代码真正决定轮次变化的是模块前“define N 4”中定义的常量N。这里有一个很不好的现象:sort模块代码写死了,

7、被N限制住了,N被定义为4,sort代码只能进行长度是4的数组排序,N被定义为5,sort代码只能进行长度是5的数组排序。Sort模块只能满足固定长度为N的数组排序,sort模块不具通用性。之所以造成这种现象的根本原因是没有将一个数组的完整信息传递过来,除了传递数组名之外,还应传递数组的长度。二需求分析列出所有功能(以图形表达),并给以必要文字说明各功能的作用。图1其中“输入功能”:要求将图书的编号、书名、作者姓名、书本价格、图书出版社、图书ISBN使用数组和指针地址传递、循环语句输入系统。其中“输出功能”:要求将图书的编号、书名、作者姓名、书本价格、图书出版社、图书ISBN使用数组和指针地址

8、传递、循环语句输出系统。其中“查找功能”:要求根据输入的作者姓名使用指针以及循环语句从图书管理系统中,一个一个的查找直到找的与之对应的书籍,并将书籍的其他信息(如:价格,书名)输出显示。其中“删除功能”:要求根据输入的书籍序号使用指针和循环语句从图书管理系统之中找到对应书籍并删除此书籍的所有信息。其中“保存功能”:要求使用指针、循环语句、函数调用、文件指针函数等将所有的图书数据保存在Book.txt文件中。其中“调用功能”:要求使用指针、循环语句、函数调用、文件函数等将所有的图书数据从文件Book.txt中调出来。三概要分析本系统使用结构体数组来保存图书信息并给信息进行相应的处理,结构体结构如

9、下:struct Book float fNumber; /编号 char fName41; /书名 char fAuthor21; /作者姓名 float fPrice; /定价 char fSource20; /出版社 char fISBN20; /ISBN;四界面设计运行的多个界面的设计。*主界面欢迎进入图书管理系统 1 输入功能 2输出功能 3 查询功能 4删除功能 5 保存功能 6调入功能 7 退出系统请选择功能(1,2,3,4,5,6,7):图2*输入界面请输入数据(编号/书名/作者/价格/出版社/ISBN):图3输出界面 *数据输出如下* * 编号 书名 作者 价格 出版社 IS

10、BN *图4查询界面请输入作者的姓名: 编号 书名 作者 价格 出版社 ISBN 图5删除界面请输入要删除的序号: 图6五. 模型设计图7六. 模块设计1.Main.cpp文件主模块 main模块功能:编写一个程序,任意选择一个功能号然后执行相应的功能。输入输出:系统模块,暂不考虑模块级别的输入输出,输入输出在内部完成。形式:int main()归属:Main解决思路:选择自己要进行的程序,通过功能号选择功能执行。算法提纲:第一步:先选要进行的程序项目,选择功能号; 第二步:到达功能号后按要求输入相应数据即可。模块代码:#include#include#include#includeMenu.

11、h#define N 1000#includeBookManager.h#includeBook.hint main() Book bookAllN; int num=0; while(1) switch(menu() case 1: inputBook(bookAll,N,&num); coutendl; break; case 2: outputBook(bookAll,N,num); coutendl; break; case 3: searchBook(bookAll,N,num); coutendl; break; case 4: delBook(bookAll,N,&num); o

12、utputBook(bookAll,N,num); coutendl; break; case 5: keepBook(bookAll,N,num); coutendl; break; case 6: loadBook(bookAll,N,&num); outputBook(bookAll,N,num); coutendl; break; case 7: exit(0); default: cout提示出错endl; return 0;2.Menu.cpp文件自定义模块 menu模块功能:在打开程序时显示文字“欢迎进入图书管理系统”输入输出:有输入,有输出,在打开程序时显示文字“欢迎进入图书管

13、理系统”形式:int menu()归属:Menu解决思路:算法提纲:模块代码:#includeint menu() int choose; coutt*endl; coutt*tt欢迎进入图书管理系统tt *endl; coutt* 1 输入功能ttttt2输出功能*endl; coutt* 3 查询功能ttttt4删除功能*endl; coutt* 5 保存功能ttttt6调入功能*endl; coutt* 7 退出系统ttttt*endl; coutt*endl; coutchoose; coutendl; return choose;3.Input.cpp文件自定义模块 inputBoo

14、k模块功能:进行数据录入输入输出:图8形式:void inputBook(Book *pBookAll,int n,int *pNum)归属:BookManager解决思路:若实际人数等于n,停止输入,否则继续输入图书数据。算法提纲:第一步:判断人数是否等于n,选择Y或者N。 第二步:选择Y继续输入书籍的编号、书名、作者、价格、出版社、ISBN,选择N停止输入。模块代码:#include#includeBook.hvoid inputBook(Book *pBookAll,int n,int *pNum) if(*pNum=n) cout对不起,图书已满; else char choice;

15、do cout请输入数据(编号/书名/作者/价格/出版社/ISBN):pBookAll*pNum.fNumber pBookAll*pNum.fName pBookAll*pNum.fAuthor pBookAll*pNum.fPrice pBookAll*pNum.fSource pBookAll*pNum.fISBN; (*pNum)+; while(coutchoice,choice=y); 4.Output.cpp文件自定义模块 outputBook模块功能:对图书的有关数据进行显示。输入输出:图9形式:void outputBook(Book *pBookAll,int n,int

16、pNum)归属:BookManager解决思路:先显示序号,再显示书籍的有关数据。通过循环语句,对输入的所有数据进行输出。算法提纲:第一步:定义变量j,若j小于真实人数,输入第一本书籍的数据。 第二步:令j递增,根据循环语句,对输入数据进行显示。模块代码:#include#includeBook.hvoid outputBook(Book *pBookAll,int n,int pNum) coutt*数据输出如下*endl; coutt*endl; coutt编号tt书名tt作者tt价格ttt出版社tttISBNendl; for(int j=0;j=pNum-1;j+) couttpBoo

17、kAllj.fNumber tpBookAllj.fName tpBookAllj.fAuthor tttpBookAllj.fPrice ttpBookAllj.fSource ttpBookAllj.fISBNendl; coutt*endl;5.Search.cpp文件自定义模块 searchBook模块功能:根据输入作者姓名查到对应书籍信息并显示出来。输入输出:图10 形式:void searchBook(Book *pBookAll,int n,int pNum)归属:BookManager解决思路:选择功能序号,然后按要求输入作者姓名,利用循环语句查找该作者,找到之后显示该书籍的其

18、他信息。算法提纲:第一步:定义一个数组,作者姓名数组长度为21。 第二步: 由循环语句及逻辑结构判断有无该作者的姓名,从而判断有无该作者的书籍。 第三步:若无该作者的姓名,则输出无该作者,若有该作者的姓名,则显示该作者所编写的图书的相关信息。模块代码:#include#includeBook.h#includestring.h#includeBookManager.h#includeMenu.hvoid searchBook(Book *pBookAll,int n,int pNum) char name21; bool b = false; coutname; for(int i=0;in;

19、i+) if(strcmp(pBookAlli.fAuthor,name)=0) b = true; break; if(b) coutt编号tt书名tt作者tt价格tt出版社tttISBNendl; couttpBookAlli.fNumber tpBookAlli.fName tpBookAlli.fAuthor ttpBookAlli.fPrice ttpBookAlli.fSource ttpBookAlli.fISBNendl; else cout没有该作者主编的著作n;6.Delete.cpp文件自定义模块 delBook模块功能:对输入的某个图书数据进行删除。输入输出:图11形式

20、:void delBook(Book *pBookAll,int n,int *pNum)归属:BookManager解决思路:删除某个序号no,将no+1至*pNum-1的所有内容前移一格。算法提纲:第一步:输入要删除的某个序号。 第二步:利用指针变量将删除的第i个数据后的所有数据都赋值给i-1个数据。即pBookAlli-1=pBookAlli; 第三步:利用循环语句,将第i个数据后的所有数据都赋值给i-1个数据。模块代码:#include#includeBook.hvoid delBook(Book *pBookAll,int n,int *pNum) int no; coutno; f

21、or(int i=no;i*pNum-1;i+) pBookAlli-1=pBookAlli; (*pNum)-;7.Keep.cpp文件自定义模块 keepBook模块功能:对输入的数据进行保存。输入输出:图12形式:void keepBook(Book *pBookAll,int n,int pNum)归属:BookManager解决思路:对输入的数据进行保存。算法提纲:第一步:定义一个Book.txt文件。 第二步:分别读如第i本书籍编号、书名、作者姓名、价格、出版社、ISBN; 第三步:利用循环语句,将第i个数据后的所有数据都读入Book.txt文件中。模块代码:#include#in

22、cludeBook.hvoid keepBook(Book *pBookAll,int n,int pNum) FILE*pF; pF=fopen(Book.txt,w); for(int i=0;ipNum;i+) fprintf(pF,%f t %s t %s t %f t %s t %s n,pBookAlli.fNumber,pBookAlli.fName,pBookAlli.fAuthor,pBookAlli.fPrice,pBookAlli.fSource,pBookAlli.fISBN); fclose(pF);8.Load.cpp文件自定义模块 loadBook模块功能:将保存

23、的数据重新调入系统中。输入输出:图13形式:void loadBook(Book *pBookAll,int n,int *pNum)归属:BookManager解决思路:将Book.txt中的数据调入到系统中。算法提纲:第一步:打开Book.txt文件,进行读取数据。 第二步:当第i个数据有三个变量时,i自增; 第三步:利用循环语句,当第i个数据有三个变量时,将第i个数据后的所有数据都读出来; 第四步:关闭Book.txt文件。模块代码:#includeBook.h#include#includeMenu.h#includeBookManager.hvoid loadBook(Book *p

24、BookAll,int n,int *pNum) FILE*pF = fopen(Book.txt,r); if(pF) while(!feof(pF) fscanf(pF,%f t %s t %s t %f t %s t %s n,&pBookAll*pNum.fNumber,pBookAll*pNum.fName,pBookAll*pNum.fAuthor,&pBookAll*pNum.fPrice,pBookAll*pNum.fSource,pBookAll*pNum.fISBN); (*pNum)+; else pF=fopen(Book.txt,w); fclose(pF);9.Me

25、nu.h文件#ifndef menu_h#define menu_hint menu();#endif10.BookManager.h文件#ifndef BookManager_h#define BookManager_h#includeBook.hvoid inputBook(Book *pBookAll,int n,int *pNum);void delBook(Book *pBookAll,int n,int *pNum);void keepBook(Book *pBookAll,int n,int pNum);void searchBook(Book *pBookAll,int n,int pNum);void outputBook(Book *pBookAll,int n,int pNum);void loadBook(Book *pBookAll,int n,int *pNum);#endif;11.Book.h文件#ifndef Book_h#includestring.h#define Book_hstruct Book float fNumber; /编号 char fName41; /书名 char fAuthor21; /作者姓名 float fPrice; /定价 char fSource2

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2