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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

一图书信息管理系统.docx

1、一图书信息管理系统一图书信息管理系统1.1 题目要求 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 试设计一图书信息管理系统,使之能提供以下功能:a) 系统以菜单方式工作b) 图书信息录入功能(图书信息用文件保存)输入c) 图书信息浏览功能输出d) 查询和排序功能:(至少一种查询方式)算法(1) 按书名查询(2) 按作者名查询e) 图书信息的删除与修改(可选项)v提示建立职工信息结构体,结构体成员包括职工号、姓名、性别、年龄、学历、工资、住址、电话。1.2 需求分析根据题目要求,要求对图书信息进行输入、输出等操作;在程序中需要浏览图书的信息,应提供显示、查找、浏览、

2、插入、修改等操作;另外还应提供键盘式选择菜单实现功能选择。1.3总体设计根据需求分析,可以对这个系统的设计分为以下几个模块:图1.3 系统功能模块图1.4详细设计1.4.1 主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图:显示各功能选项图1.4.1 主函数流程图程序: /*主函数*/main ()menu();/*menu函数*/void menu() int n,w1;/*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围*/ do puts(tt*menu*nn); puts(tttt1.Enter new da

3、ta); puts(tttt2.Browse all); puts(tttt3.Search );puts(tttt4.add); puts(tttt5.Exit); puts(nntt*n); printf(Choice your number(1-5): bb); scanf(%d,&n); if(n5) /*对选择的数字作出判断,是否在菜单功能数字范围内*/ w1=1;getchar(); else w1=0; while(w1=1); switch(n)/*根据输入的数字,进入到相应的操作模块中*/ case 1:enter();break;/*输入模块*/ case 2:browse

4、();break; /*浏览模块*/ case 3:search();break; /*查找模块,其中包括按不同类别进行查找的多个子模块*/ case 4:add();break;/*插入模块*/ case 5:exit(0); /*退出*/ 注:menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。 用结构体来存放职工信息:/*结构体*/struct workerchar number11;char name20;char sex20;char adress20;char xueli20;cha

5、r telephone20;char age20;char salary20;worN;/* worN中每个数组元素对应一个职工*/其中可以根据宏定义# define N随时对N的值进行调整,扩大信息的储存量。1.4.2各功能模块设计(1)输入模块需求分析 对信息进行输入。流程图:图1 输入模块流程图程序:/*输入模块*/void enter()/*输入函数*/int i,n; printf(How many workers(0-%d):,N-1); scanf(%d,&n);/*输入记录的个数,赋值给n*/ printf(n Enter data nownn); for(i=0;in;i+)

6、/*通过for循环语句依次输入N个职工信息数据*/ printf(n Input %dth worker record.n,i+1); input(i);/*调用单个输入函数*/ if(i!=0)save(n);/*调用保存函数*/ printf_back(); /*一个任务结束时让用户选择是浏览还是返回*/ (2)浏览模块需求分析 该模块的功能是显示所有职工记录信息。流程图显示职工记录(10个一屏):按任意键显示下一屏按任意键返回主菜单图2 浏览模块流程图程序:/*浏览(全部)模块*/browse() /*浏览(全部模块)*/ int i,j,n; n=load(); /*调用加载函数,并计

7、算可以记录的个数*/ printf_face(); /*调出显示数据结构项目函数*/ for(i=0;inn1).number2).xueli3).cancel and back);printf(Which you needed?: bb);scanf(%d,&c);if(c3|c3|c1);switch(c) /* switch语句提供按不同类别进行查找功能*/case 1:search1();break; /*按职工号进行查找*/ case 2:search2();break; /*按姓名进行查找*/ case 3:menu();break; /*返回主菜单*/*按职工号查找模块*/流程图

8、:按职工号查找模块用户作出选择,输入一整型数值1,2,还是3修改返回主菜单继续查找图4 按职工号查找模块流程图 程序:search1()int i,n,k,w1=1,w2,w3,w4; struct worker s; /*定义结构体变量s,用以储存输入的number的值,便于进行比较*/ n=load(); /*加载将要记录的个数*/ do /*该do- while循环语句判断是否继续执行该函数*/ do /*该do- while循环语句判断是否找到要查找的对象*/ k=-1; printf(nnEnter number that you want to search! number:);

9、scanf(%s,s.number); printf_face();/*调出显示数据结构项目函数*/ for(i=0;in;i+) /* for循环语句用来判断原数据信息中是否有与输入职工号相 同的职工号*/ if(strcmp(s.number,wori.number)=0) /*原数据信息中找到与输入职工号相 同的职工号*/ k=i; printf_one(k);break; if(k=-1) / *原数据信息中没有找到与输入职工号相同的职工号*/ printf(nnNo exit!please); printf(nnAre you again?nt1).again 2).No and b

10、ack bb); scanf(%d,&w1); if(w1=2) menu();/*返回主菜单*/ while(k=-1&w1=1);/*在没有找到且想再次查找的情况下继续进行循环*/ w4=0;w3=0; if(k!=-1) /*在查找到的情况下*/ printf(nnWhat do you want to do?nt1).Search another 2).Modify 3).Back menu bb); scanf(%d,&w2); switch(w2) case 1:search1();break;/*继续按照职工号查找其他对象*/ case 2:w3=modify_data(k,n)

11、;break;/*对查找到的对象进行修改*/ case 3:menu();break;/*返回主菜单*/ while(w2=1);menu();/*返回主菜单*/ /*按学历查找模块*/流程图按职工学历查找模块用户作出选择,输入一整型数值1,2,还是3修改返回主菜单继续查找图5按职工学历查找模块流程图程序:search2()int i,n,k,w1=1,w2,w3,w4; struct worker s; /*定义结构体变量s,用以储存输入的xueli的值,便于进行比较*/ n=load(); /*加载将要记录的个数*/ do /*该do- while循环语句判断是否继续执行该函数*/ do

12、/*该do- while循环语句判断是否找到要查找的对象*/ k=-1; printf(nnEnter xueli that you want to search! xueli:); scanf(%s, s.xueli ); printf_face();/*调出显示数据结构项目函数*/ for(i=0;in;i+) /* for循环语句用来判断原数据信息中是否有与输入职工学历相同的 职工*/ if(strcmp(s. xueli,wori. xueli)=0) /*原数据信息中找到与输入职工学历相同的职工*/ k=i; printf_one(k);break; if(k=-1) / *原数据信

13、息中没有找到与输入职工学历相同的职工*/ printf(nnNo exit!please); printf(nnAre you again?nt1).again 2).No and back bb); scanf(%d,&w1); if(w1=2) menu();/*返回主菜单*/ while(k=-1&w1=1);/*在没有找到且想再次查找的情况下继续进行循环*/ w4=0;w3=0; if(k!=-1) /*在查找到的情况下*/ printf(nnWhat do you want to do?nt1).Search another 2).Modify 3).Back menu bb); s

14、canf(%d,&w2); switch(w2) case 1:search1();break;/*继续按照职工学历查找其他对象*/ case 2:w3=modify_data(k,n);break;/*对查找到的对象进行修改*/ case 3:menu();break;/*返回主菜单*/ while(w2=1);menu();/*返回主菜单*/(4)插入模块需求分析 该模块的功能是插入职工记录信息并且不能覆盖原有职工信息。流程图 插入模块调用加载函数让用户输入要插入的职工信息个数 调用整条信息输入函数 用户作出选择,输入1or21还是22返回主菜单1 浏览全部图6插入模块流程图【程序】/*插

15、入模块*/add() /*插入模块*/ int i,n,m,k; FILE*fp; n=load(); /*加载将要记录的个数*/printf(How many worker are you want to add(0-%d)?:,N-1-n); scanf(%d,&m); /*输入要查如职工信息的个数*/k=m+n; for(i=n;ik;i+) /*用for循环实现m个信息的录入*/ printf(nInput %dth workers record.n,i-n+1 ); input(i); /*调用整条职工信息输入函数*/ if(fp=fopen(worker.txt,ab)=NULL)

16、 printf(cannot open filen); for(i=n;ik;i+) /*用for循环实现对m个信息录入到文件worker.txt */if(fwrite(&wori,sizeof(struct worker),1,fp)!=1) printf(file write errorn); fclose(fp); printf_back(); /*一个任务结束时的选择浏览还是返回的函数*/1.4.3公共函数(1)保存函数 save(int n) 说明:形参n控制保存的个数。程序:void save(int n) FILE *fp; /*定义文件指针*/ int i; if(fp=fo

17、pen(worker.txt,wb)=NULL)/*以只写方式打开二进制文件,若打不开返回NULL值*/ printf(nCannot open filen); for(i=0;in;i+) /* for循环语句作用为读写n个数据块*/ if(fwrite(&wori,sizeof(struct worker),1,fp)!=1)/*若读写成功,则返回值1*/ printf(file write errorn); fclose(fp); /*关闭文件*/ (2)加载函数 load()说明:该函数可以用来加载所有记录,并且可以返回所有记录的个数。程序:int load()FILE *fp;int

18、 i;if(fp=fopen(worker.txt,rb)=NULL) /*以只读方式打开二进制文件,若打不开返回NULL值*/printf(nCannot open filen);return NULL;for(i=0;!feof(fp);i+)/*在文件关闭之前,向磁盘文件中读入数据块*/fread(&wori,sizeof(struct worker),1,fp);fclose(fp);return(i-1); /*返回数据块数值*/(3)职工号输入函数no_input(int i,int n)说明:该函数对输入职工号进行判断,确保输入的职工号唯一。形参i表示第i个职工记录,形参n表示总

19、共有n个职工记录。程序:void no_input(int i,int n)int j,k,w1;do /*该do- while循环语句用来输入职工号信息并判断号码是否重复*/w1=0;printf(number:);scanf(%s,wori.number);for(j=0;wori.numberj!=0;j+) /*判断输入的号码是否由0-9间的数字组成*/if(wori.numberj9)/*输入数字不是有0-9之间的数字组成*/puts(Input error!Only be made up of (0-9).Please reinput!n);w1=1;break;if(w1!=1)

20、 /* w1!=1表示输入数字正确*/for(k=0;knn 1).number 2).name 3).cancel and back);printf(Which you needed?: bb);scanf(%d,&c);if(c3|c3|c1);do /*按照选择输出对应数据块*/switch(c)case 1:no_input(i,n);break;case 2:printf(name:);scanf(%s,wori.name);break;case 3:menu();break;puts(nNow:n);printf_face();printf_one(i); /*显示一个记录的函数

21、*/printf(nAre you sure?nnt1).sure 2).no and remodify 3).back without save in this time bb);scanf(%d,&w1);if(w1=1)save(n); /*对所输入或修改数据进行保存*/while(w1=2);return(w1);/*返回保存控制值*/1.5 上机操作1.5.1数据源;1.5.2编译、连接和运行;1.5.3结果;下面是各个模块的截面图:(1) 主菜单函数 图7主菜单截图(2) 输入模块:主界面出现后输入1回车显示下图: 图8输入模块截图 输入要输入的记录然后逐条增加,并进行职工号是否重复的检查,如重复则显示输入重复请重新输入:如下图: 图9 截图(3) 浏览模块 图10浏览模块截图(4) 查找模块 图11 截图按职工号查找 图12 按职工号查询截图按学

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

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