《软件开发基础实践》报告徐婷

上传人:z**** 文档编号:114367932 上传时间:2022-06-28 格式:DOC 页数:32 大小:420.50KB
返回 下载 相关 举报
《软件开发基础实践》报告徐婷_第1页
第1页 / 共32页
《软件开发基础实践》报告徐婷_第2页
第2页 / 共32页
《软件开发基础实践》报告徐婷_第3页
第3页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中国矿业大学徐海学院计算机系软件开发基础实践报告姓 名:徐婷学号:22130520专 业:计算机科学与技术(嵌入式方向)设计题目图书管理系统成 绩:指导教师:刘丹2014年6月目录1 题目概述 11.1 题目要求 11.2 主要难点 13 数据结构和算法 44 核心代码分析 84.1 主界面函数 84.2 删除图书 94.3 录入函数 105 复杂度分析 116 调试与分析 137 参考文献 18附录 191 题目概述当今计算机应用在生活中可以说是无处不在,本次题目能够完成图书馆日 常操作,数据要能够保存,能够随时取出,并在任何操作后都能保持信息完整 性,图书的原始数据需保存到磁盘文件中。1.1 题目要求1)添加图书:增加新的图书,同时需检查新书的图书编号是否在原图书当中存在,若是则应取消添加并提示重新输入。2)查询图书:通过书名查询图书信息。3)添加一个管理员登陆界面 需要输入密码 修改图书 通过书名查询该图书,若找到则允许修改,否则提示无该图书信息。 删除图书资料:通过编号查询该图书,若找到则允许删除,否则提示无该图书信息。4)退出系统1.2 主要难点1. 添加图书,输入图书编号,判断是否重复输入,作者,出版社,以及图 书数量,输入数量时判断是否为数字,如果不是提示错误并且重新输入,如果 两次都错误则返回主页面,否则录入成功。2. 查询图书,判断输入的书名,如果图书不存在,则提示不存在,如果图 书库存为 0,则提示图书已借完,否则借阅成功。3. 图书管理员系统,输入密码必须为 1-9 之间一位数。增加图书与录入差 不多,删除图书只要输出书名即可。2 系统流程图2.1 流程图3数据结构和算法3.1 全局变量定义一个存放图书信息的结构体struct book结构体内容:定义书名、作者、出版商、图书数量以及结构体数组用来存 放书的主要内容。struct bookint num;char bh5;char name20;char writer20;char pub20;int money;int initial_num;struct date;introduce100000;录入图书信息:void insert(struct book introduce)图书管理员登陆void denglu(struct book introduce)查询图书void find(struct book introduce)主界面函数void mainPage()保存信息void save()void save2()3.2 主函数控制整个系统的执行流程,使系统菜单可以循环执行。根据图书馆信息管 理系统的要求,可设计一个主函数,及定义多个用户自定义函数。直接调用主 界面函数,通过将 switch 语句与 break 语句联合使用来实现多分支选择结构程 序的设计。Casel至case4分别实现不同的功能,并能返回主界面;caseO直接 返回主界面。int main() mainPage(); return 0;3.3 算法图1. 主界面函数:显示功能总页面,通过 switch 语句来选择执行 1-4 所对应 的函数。3.1主界面流程图2.查询函数,运用 if 语句进行选择查询的方法。/输出所查图书3.2查询流程图3保存函数,先定义指向FILE类型的文件指针,然后用两个for循环来移 动文件位置,读取一个数据块到结构体变量。开始3.3保存流程图4 核心代码分析4.1 主界面函数判断输入的是否是数字,是否在1 到 4 之间,如果不是提示错误并重新输入。void mainPage() char ch5=0;choose:/定义返回位置 printf(nnnt*nn);printf(t* *n);printf(t* *n);printf(t* *n);printf(t*n);printf(t* *nnn);这是电子书管理系统请选择您需要的功能1. 查 找 您 需 要 的 书 籍2. 录入图书3. 管理员登陆 (需要密码,密码 1-9)4. 退出系统printf(t*如果是第一次使用该系统请先录入图书 *nnn);scanf(%s, ch);if (!(ch0-0 = 0 & ch0-0 = 0 & ch1-0 = 7)/对输入的内容进行判断 printf(“请输入准确数字进行选择!不要重复输入n); goto choose;switch(chO-O) 选择函数case 1: find(introduce); break;case 2: insert(introduce); break;case 3: denglu(introduce); break;case 4:exit(0);break;default:printf(“请输入1-4的整数! n);goto choose;/返回主界面4.2删除图书删除的同时将书名字赋值成NULL,将删除的图书数量赋值成0if(ch0-0=2)printf(请输入你需要删除的书籍名字:n);scanf(%s,name2);for(j=0;j2)printf(输入有误 nnn);denglu(introduce);4.3 录入函数提供录入图书信息功能。在for循环下,一次提示用户输入图书序号、书 名、作者、出版社以及价格。每循环一次,提示用户是否继续.判断是否有重复 的输入的,输入图书数量时判断是否为数字,如果不是,提示错误并且重新输 入,然后调用save()函数进行保存。void insert(struct book introduce)/ 录入函数char name20,writer20,pub20,num5=0,bh5;int i,num2,j;int initial_num;char ch2,c;system(cls);/ 清屏for(i=0;i=a&num0=A&num0=l)判断输入内容printf(请再次输入图书数量n); scanf(%d,&num2); introducei.num=num2; introducei.initial_num=num2; printf(继续录入图书y/n?n); scanf(%s,ch);c=getchar(); if(ch0=n) break;save();调用保存函数5 复杂度分析1.首先设置一个结构体数组用来存放书的主要内容,想到用 introduce 的形式 2.主界面函数中用 switch 选择函数 Switch()case1;default;3.定义保存函数,判断图书编号是否已存在。这段代码主要是应该写在保 存函数当中,保存了之后在进行判断。for(i=0;iN;i+)for(j=0;jN;j+)if(introducei.bh=introducej.bh)printf(输入编号有重复是否继续? n);scanf(%c,&a);if(a=y)printf(图书数量为:n);printf(%dn,introducei.num=introducei.num+introducej.num); mainPage();if(a=n)insert(introduce);break; 总的来说难度还是有的,关键是要想到调用什么样的函数,仔细分析,认 真审题。6调试与分析6.1 主菜单运行界面连接,检错完毕后,运行程序,开始进入主菜单。结果显示如下这是电子书管理系统N NN JCHJCX坯坯 XN NN JCHJCX坯坯 XN NN JCHJCX坯坯 XN NN JCHJCX坯坯 XN NN JCHJC2.AE-T;.皐盲理虽登陆c需要密码咛密码1- 4摄出萦统口果是第一次使用该系统请先录入图书mg6.1 菜单运行图6.2 图书录入界面在主菜单上选择“2”,根据提示录入图书信息。屏幕显示如下输入书编号123输入书名字盜墓笔记输入作者南派三叔输入岀版社新华输入图书数量2请再績输入图书数量2继续录次图书少n?y输入书编号123输入书名字酉游记输入作者吴军恩输入出師科一新华输入图书数量3请再績输入图书数量继续录八.图书扁入编号有重复是否继续?n6.2 图书录入运行图6.3 图书查询界面 在主菜单上选择“1”,显示以下全部图书信息并回到主界面。6.3 图书查询运行图6.4图书管理员登陆界面在主菜单上选择“3”,显示以下全部图书管理员信息并回到主界面。6.4 管理员登陆运行图在主菜单上选择“1”,显示增加图书界面。输入密码3这是管理员登陆请选择氛删除團审孺入图书名字爲入图书作者 爲入图书岀版社 爲入图书数量 备次输其图书数量226.5 增加图书运行图在主菜单上选择“2”,显示删除图书界面并返回主界面输入密码3这是管理员登陆请选择鑒删除图韦6.6 删除图书运行图6.5 退出系统在主菜单上选择“4”,退出系统。这是电子书管理系统EX EX XXEX EX XXEX EX XXEX EX XXEX EX XXEX EX XXEX EX XXEX EX XXEX EX XXEX EX XX*pess any key to continue2-f A图电亠_ .皐宜理员鳌陆(需要密码;:密码” 4-返茁系统|果是第使用该系统请先录吸图书X H6.7 退出系统运行图7 参考文献1)C 程序设计 谭浩强 清华大学出版社2) C 语言程序设计杨磊 中国矿业大学出版社附录源代码#include#include#include#includevoid find(struct book); 查找图书函数void denglu(struct book); 管理员登陆函数void insert(struct book); 录入图书函数void save();保存函数void save2();void mainPage(); 主界面函数int N=1000;struct book/定义结构体int num;char bh5;char name20;char writer20;char pub20;int initial_num;introduce100000;结构体数组用来存放书的主要内容int main()mainPage();/调用主界面函数return 0;void mainPage()/ 主界面函数char ch5=0;choose:/定义返回位置printf(nnnt*nn);printf(t*n);printf(t*n);printf(t*n);printf(t*n);printf(t*nnn);这是电子书管请选择您需要1. 查 找 您 需 要理系统的功能的书籍2. 录 入 图 书3. 管理员登陆(需要密码,密码 1-9)4. 退 出 系 统printf(t* 如 果 是 第 一 次 使 用 该 系 统 请 先 录 入 图 书 *nnn);scanf(%s, ch);if (!(ch0-0 = 0 & ch0-0 = 0 & ch1-0 = 7)/对输入的内容进行判断 printf(请输入准确数字进行选择!不要重复输入n); goto choose;switch(ch0-0) 选择函数case 1: find(introduce); break;case 2: insert(introduce); break;case 3:denglu(introduce); break;case 4:exit(0);break;default:printf(“请输入1-4的整数! n);goto choose;/返回主界面void find(struct book introduce)FILE *fp;定义指向FILE类型文件的指针变量int i,l,count=0,k,o;char name20,writer20;char a4,b4=yes,c4;system(cls); 清屏printf(1 .按书名查找2.按作者查找n);if(fp=fopen(bookl.dat,rb)=NULL) 打开输出文件 printf(errorn);打开错误就输出错误exit(O);/终止程序 scanf(%d,&o);if(o=1)printf(请输入书名:); for(l=0;lN;l+)fread(&introducel,sizeof(struct book),1,fp);/读出储存在文件里的 内容scanf(%s,name);输入查询书籍的名字 for(i=0;i0)/ 如 果 printf(编号tt书名tt作者tt出版社tt数量n);printf(%stt%stt%stt%stt%dnn,introducei.bh,introducei.name,introduce i.writer,introducei.pub,introducei.num);count+;elseif(!strcmp(name,introducei.name)&i ntroducei.numv=0) 如果书籍名字匹配 且书的数量为零printf(此书已经借完欢迎继续使用n); break;elseprintf(请输入书作者:); for(l=0;lN;l+)fread(&introducel,sizeof(struct book),l,fp);读出储存在文件里的 内容scanf(%s,writer);输入查询书籍的作者 for(i=0;i0) 女口 果 输入匹配 printf(编号tt书名tt作者tt出版社tt数量n);printf(%stt%stt%stt%stt%dnn,introducei.bh,introducei.name,introduce i.writer,introducei.pub,introducei.num);count+;elseif(!strcmp(writer,introducei.writer )&introducei.numv=0) 如果书籍作者匹配 且书的数量为零printf(此书已经借完欢迎继续使用n);break;if(count=0)printf(查无此书!是否重新输入? yes/no/n);scanf(%s,c);if(!strcmp(c,b)find(introduce);/返回查询函数elsegoto M;elseprintf(查找成功!是否继续? yes/non);scanf(%s,c);if(!strcmp(c,b)find(introduce);/返回查询函数elsegoto M;M:mainPage();void denglu(struct book introduce)/ 管理员登陆int i,j,k,p,num2;char name20,writer20,pub20,num5=0,bh5; char bh220;char a20=NULL;char ch2=0; system(cls); 清屏 printf(输入密码 n);scanf(%d,&p); if(p=0&p=9)printf(t这是管理员登陆请选择n); printf(tl.增加图书 n);printf(t2.删除图书 n); scanf(%s,ch);if(ch0-0=l) printf(输入图书名字n); scanf(%s,name); for(i=0;i=a&nu mOv=zllnumO=A&nu mOv=Z) 判断输入内容printf(输入有误请输入数字nn);goto choose;if(num0-0=1)printf(再次输入图书数量n);scanf(%d,&num2);printf(%d,num2);if(introducei.num=0)strcpy(introducei.name,name); 增加书籍strcpy(introducei.bh,bh); strcpy(introducei.writer,writer); strcpy(introducei.pub,pub); introducei.num=num2;对书数量进行赋值 save2();break;elsebreak;if(ch0-0=2)printf(请输入你需要删除的书籍编号:n);scanf(%s,bh2);for(j=0;j2)printf(输入有误 nnn);denglu(introduce);void insert(struct book introduce)/ 录入函数char name20,writer20,pub20,num5=0,bh5;int i,num2,j;char ch2,c;system(cls);/ 清屏for(i=0;i=a&num0=A&num0=l)判断输入内容printf(请再次输入图书数量n); scanf(%d,&num2); introducei.num=num2; introducei.initial_num=num2;save();调用保存函数 printf(继续录入图书y/n?n); scanf(%s,ch);c=getchar(); if(ch0=n)printf(录入成功!); break;void save()FILE *fp;/定义指向FILE类型的文件指针int i,j,p;char a;if(fp=fopen(book1.dat,wb)=NULL)printf(can not open filen); return; for(i=0;iN;i+) for(j=0;jN;j+) if(introducei.bh=introducej.bh)printf(输入编号有重复是否重输:n); scanf(%c,&a);if(a=n) mainPage(); if(a=y) insert(introduce);else break; for(i=0;iN;i+)if(fwrite(&introducei,sizeof(struct book),1,fp)!=1) printf(write errorn);fclose(fp);FILE *fp;定义指向FILE类型的文件指针int i,j,p; if(fp=fopen(book1.dat,wb)=NULL) printf(can not open filen); return; /rewind(fp);for(i=0;iN;i+) fseek(fp,i*sizeof(struct book),0); 移动文件位置 fread(&introducei,sizeof(struct book),l,fp);读取一个数据块到结构体 变量 for(i=0;iN;i+)fseek(fp,i*sizeof(struct book),0); fwrite(&introducei.num,sizeof(struct book),l,fp);fclose(fp);/ 关闭文件30
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!