




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南理工大学C程序设计报告河南理工大学计算机科学与技术学院课程设计报告2010 2011学年第 二 学期课程名称 C语言课程设计 设计题目 图书管理系统 学生姓名 李昉 学 号 31009050302 专业班级 网信10-3 指导教师 张黎娜 20010年 7月1日目录1. 设计任务书21.1 题目与要求21.2 本程序涉及的知识点2 2.功能设计22.1算法设计22.2部分模块流程图23. 程序代码设计44. C程序设计总结65.感想6参考文献61、 设计任务书1.1、 题目与要求本人计划编一个图书管理系统,主要是对图书的信息输入、查询、删除。1.2、 本程序涉及的知识点变量的定义、输入和输出函数、产生随机数函数、if语句、goto语句、转意字符的使用等等。2、 功能设计2.1、算法设计将题目分成若干模块或部分、各模块或部分的算法设计1Enter函数模块需要实现的功能要求:利用switch语句设计如图1所示:0 选择了图书菜单选项1 选择了会员菜单选项2 选择了帮助菜单选项2选择0之后,再嵌套使用switch语句,实现如图2所示的功能:0 调用BookAdd函数1 调用Bookconsult函数2 调用BookDel函数3 调用BookBorrow函数4 调用BookReturn函数5 退出选择1之后嵌套使用switch语句,如图3所示功能:0 调用MemberAdd函数1 调用MemberConsult函数2 调用MemberDel函数3 调用MemberBook函数选择2之后嵌套使用switch语句,如图4所示功能:0 调用Help函数1 调用Ver函数3根据功能编写相应的代码1) 从键盘敲入“0”之后,再次击键,利用Switch语句对各种不同的结果做出该调用哪一种函数的反应。2) 从键盘敲入“1”之后,再次击键,利用Switch语句对各种不同的结果做出该调用哪一种函数的反应。3) 从键盘敲入“2”之后,再次击键,利用Switch语句对各种不同的结果做出该调用哪一种函数的反应。版本信息帮助查询会员借书信息删除会员查询会员增加会员还书借书删除图书资料图书查询添加图书菜单选项的具体功能菜单选项的控制自定义清屏画边框显示下拉菜单具体操作过程正常菜单选中菜单显示主菜单定义菜单初始化界面主模块图书管理系统模块图 22部分模块流程图调用BA函数调用BC函数调用BD函数调用BB函数调用BR函数调用MA函数调用MC函数调用MD函数调用MB函数调用帮助函数调用版本信息函数BreakBreakSwitch(n)退出函数Switch(n)Switch(m)Switch(n)开始Break以写方式打开文件以追加方式打开文件调用clrscr函数调用clrscr函数输出“放入新书号” getsgotoxy输出“放入新书号”Fclose关闭文件块写fwrite置变量为链表的尾末将书表示成存在getsStrcpy调用gotoxyscanf输出“放入价格“开始读方式打开“Book、txt”文件Nn nooooooooooooooY3 程序代码设计Enter模块1) 函数原型:Vold Enter(int m,int n)功能用:利用switch语句的嵌套确定菜单选项的具体功能2) 变量及类型:int m,n:整型形参变量接收main()传过来的菜单选项命令。3) 说明:因为在本函数中用到switch的嵌套,因此要注意在每个人的case之后应当有break语句,而在小范围的switch语句中break语句也不可行。void Enter(int m,int n) switch(m) case 0:switch(n) /*选择了图书菜单选项*/ case 0:BookAdd();break;/*添加图书*/ case 1:BookConsult();break;/*图书查询*/ case 2:BookDel();break;/*删除一本图书资料*/ case 3:BookBorrow();break;/*借书*/ case 4:BookReturn();break;/*还书*/ case 5:exit(0);break; break;/*退出系统*/ case 1: switch(n) /*选择了会员菜单选项*/ case 0: MemberAdd();break;/*添加会员*/ case 1: MemberConsult();break;/*会员查询*/ case 2:MemberDel();break;/*删除一个会员资料*/ case 3:MemberBook();/*查询某个会员所借图书情况*/ break; case 2:switch(n) /*选择了帮助菜单选项*/ case 0:Help();break; case 1:Ver(); /*结束外switch*/MumberAdd函数模块:1) 函数原型:Void MemberAdd( )2) 功能:利用文件指针以及会员结构体变量对会员进行注册。3) 变量及类型:FILE *fp :文件指针,用它以各种形式打开关闭相应文件。Member consultmember: 会员结构体变量用来放如新会员的所有信息。4) 说明:因为在“member.txt”文件中有两中可能,一种是无会员,则需新建,即以写的方式打开打开文件,另一种是有会员,则仅需添加,即以追加的方式打开文件,因此在函数中需用if-else语句。RedText函数模块1) 函数原型:Void RedText(int x,int y,char *z)2) 功能:用textbackground,cprintf等函数以及for循 环语句来来完成正常的显示菜单的任务。3) 变量及类型:int x :整形形参变量,光标坐标横坐标,用来确定在屏幕上的横坐标。int y:整型形参变量,光标坐标纵坐标,用来确定在屏幕上的纵坐标。Char *z :字符型指针形参变量,用来存放Z数组的地址。4) 说明:在本函数中由于可能有多种可能,即若选择首项,第一个字母应显示红色;若选择其他,则为黑色,且输出菜单名,因此在for循环内部需有一个if-else语句。BookAdd函数模块:1) 函数原型: Void Book( );2) 功能:利用文件指针及书的结构体变量添加图书。3) 变量及类型:FILE *fp: 文件指针,用它的各种方式打开文件。Book Consultbook : 图书结构体变量,用来存放新图书的相关资料。4) 说明:因为在”book.txt”文件中有两种可能,一种是文件为空,即无书,此时需以写的方式打开文件;另一种是有书,则仅需添加即可,即以追加方式打开文件,因此在函数中需用if-else语句。void BookAdd() FILE *fp; Book consultbook; fp=fopen(book.txt,rb);/*读方式打开文件*/ if(fp=NULL) fp=fopen(book.txt,wb); /*写方式打开文件*/ else/*如果有书就添加*/ fclose(fp); fp=fopen(book.txt,ab);/*追加方式打开文件*/ ClrScr();/*清屏*/ printf(Intput new book num: );/*逐个输入新图书的资料*/ gets(consultbook.num); gotoxy(2,4); printf(Input new book name: ); gets(); gotoxy(2,5); printf(Please input new books price: ); scanf(%d%*c,&consultbook.price); strcpy(consultbook.person,); consultbook.yes=1;/*表示书存在未借出*/ consultbook.next=NULL; fwrite(&consultbook,sizeof(Book),1,fp);/*块写*/ fclose(fp); /*关闭文件*/ ClrScr();4 C程序设计总结41编程时遇到的困难,错误:1) 在编写main主函数时,大括号不成对,程序不能运行。解决方法:在适当的地方添加大括号。2) 在switch语句中,忘记添加break语句,无限循环。 解决方法:在每一个case之后添加break语句。 3) 在链表中为将链表表尾置空,程序不能正常;运行。解决方法:将链表的尾指针置为空,使程序能正常运行。42感想:经过为期一周紧张的C语言程序设计,我对C语言的知识有了进一步的了解,熟悉了流程图的画法,链表的使用,下拉菜单的设计及使用,增加了我对C语言的兴趣,在一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论