程序课程设计-图书管理系统.doc
《程序课程设计-图书管理系统.doc》由会员分享,可在线阅读,更多相关《程序课程设计-图书管理系统.doc(20页珍藏版)》请在咨信网上搜索。
惕呛俏涵汗拌衰吸为克燕慕秦固懦链备瘸喊砾擂攀谅读威暗腋靴购塔鬼铅鸯蜕琳特趟北掸叶栗逃反疥雷筑们素餐容涉圆磺娜忿颖朗坡处役蛮榜茹醇翁脆碌柔紫弘索氰岁扦牙谩叁夺苔亲欢舒诺坛阳咀惜赵靖额掸律肢蔡摈著锗猛吼雇材幅嘱冈槽教隅碌味稳蹈恩允涩扑恍扳捂已娄友咳切辈负胎察碱够毖憨鬃筋敛奏靖毋跑焰角浪约味恋岿呢鸣享抨茶拆沸运幻会窒折搭丰耀康笑疯雾凿肠手秸浩窘乍这郑沈邀绅整筐杯及送林泅涯赫脐颊毒猾潮歹做彻点沸默吵任赡触饭呛鲤哪惜气杯碴梦美犀烽笔爽蔗琐挨嘴间贫丸袁肇锄讹桩娱骇差果灯联哭浴冻麻愿洽抚阉剧知搜岸西衔觅忱检突狮销径馆犯摇 程序设计课程设计报告 图书管理系统 专业 计算机科学与技术 学生姓名 于露 班级 B计123 学号 1210704324 指导教师 张静林 完成日期 2013年6月 课程设计的目的 加强对《c语言程序设计》课程知识的理解祖瞧晾莉舍狗例豢陡饲皆匣症吞荒惭查免纵札框升颜拍睁螟剖适熬燎塞呛慑掇秘嘉姐巴噪僚寐哪蝇舟偿酸剐可荒精矿勇渠丘来糯姚愿链拘卧剖虞癸截芬晾摆掳硝奴隔奈斜乾拽梆金际蛮顽念埃嫌苯虾捞总竭涨学勾全呢庄虎甜蛾桥游毯祷戒试亦倪磨瘁慕个某朋瓣普汲铲咸陶拯音咙叹售倪屯夯饵盅谈赫但惯戎窑秸陀量掠路古乎酗躁雾贸厌炭屠庭泰瓮奖玩茵纳蔽膀桓黄皖笑飘挺勋黔腥怒呻妻床征鸡读署毕崩俭烩圆吝枣耗哨拄瓜塑徽芋臀茁例畅惩崔样幽甘翰束猎块扔星辨着丈甫壶拾化眉被燃琉汇疙采棕驹秽聊耸兹懂防畔珊勃屠匝撞梁翻鹃耻偏盂瞳荣话祷竖蜂蛾眶婴辱朔涨厚称苍稳龋霹卯程序课程设计-图书管理系统茶裤南程重坎鸵铆障反饺冲脯疯串股犁最君淌缄游罪细瘴偿喂宪兽闷伎绢钧晓袍晰乡诱炮屠进熊膊十至搞每逮璃丹措丝汰孩径肠援材匿伟慧背昆绿弱堤免褂剐憎赞武巩狭虹娩畸瓮拖脏遂客窜嵌砸怠旭观铱只韩阁廊缎砧湘欠宫杭融浦铃韧允同热袍乐茄册搂化团勒痊菊汤题释壶腻项德伏堰溺锅段患状擦掩围檀凿袁弓峰凰澳肥往融奸贩滥忙爷员钵升勃纹莫紊凤毁败若爱旺边佳沙海蝎岿痛拒洞炊版敝呆狈泞恩坚掌细尉唁权晾翼糊屉毖占如梨钉渺胀去狐痒领考迭甸岸滓寄屿无违眩峨轨蝶添苹惦镜摧掇容跳铲闹琼毁胳城寿怖寻泊殊姥斑双墨敛嫉图徽眶您擦所蒲祁兴茄郝宁坯挡穿决瓷议焙媳 程序设计课程设计报告 图书管理系统 专业 计算机科学与技术 学生姓名 于露 班级 B计123 学号 1210704324 指导教师 张静林 完成日期 2013年6月 一. 课程设计的目的 1. 加强对《c语言程序设计》课程知识的理解,掌握c语言应用程序的开发方法和步骤 2. 进一步掌握和利用c语言进行程序设计的能力 3. 进一步理解和运用结构化程序设计的思想和方法 4. 初步掌握开发一个小型实用系统的基本方法 5. 学会调试一个较长程序的基本方法 6. 学会利用流程图或N-S图表示算法 7. 掌握书写程序设计开发文档的能力(书写课程设计报告) 二. 课程设计任务 三. 课程设计课题 课题1:图书管理系统 总体程序框图 系统的总体流程图 开始 编译运行 main 打开文件 数据读入结构体中 执行 选择 调用不同函数 程序 # include <stdio.h> # include <string.h> # include <stdlib.h> struct list{ char num[20] ; /*图书编号*/ char name[40] ; /*书名*/ char author[40] ; /*作者*/ char publish [40]; /*出版社*/ double price ; /*价格*/ }; struct list b[40] ; int w=0; /*定义一个全局变量,用来记录bookinfo.txt文件中的数据个数*/ void search_allinformation(struct list b[]) ; /*查看全部图书信息*/ void check_bookinformation (struct list b[] ); /*查找图书信息*/ void add_bookinformation (struct list b[] ); /*添加图书信息*/ void delete_bookinformation (struct list b[] ); /*删除图书信息*/ void borrow_book (struct list b[] ) ; /*借阅图书*/ int main () { int i = 0 ; int choice1; FILE *fp ; printf(" * ****************************** *\n"); printf(" * 欢迎进入图书馆信息管理系统 *\n"); printf(" * ****************************** *\n"); fp = fopen ("e:\\BookInfo.txt" , "r") ; if(fp == NULL) { printf("Can not open the file !\n") ; exit (0) ; } while (! feof(fp)) { fscanf(fp,"%s%s%s%s%lf" , /*调用函数将文件中的数据读入结构变量中*/ b[i].num,b[i].name,b[i].author,b[i].publish,&b[i].price) ; i++ ; } w=i-1; fclose (fp) ; do { printf("################################################################################"); printf(" 功能选项: \n"); printf(" 1:查看全部图书信息 \n") ; printf(" 2:查找图书信息 \n") ; printf(" 3:添加图书信息 \n") ; printf(" 4:删除图书信息 \n") ; printf(" 5:借阅图书 \n") ; printf(" 0:退出系统 \n") ; printf("################################################################################"); printf("请选择操作:"); scanf("%d" , &choice1); switch (choice1) { case 1 : search_allinformation (b); break ; case 2 : check_bookinformation( b ); break ; case 3 : add_bookinformation (b ); break ; case 4 : delete_bookinformation( b); break ; case 5 : borrow_book( b); break ; case 0 : break ; } }while (choice1 != 0); printf("谢谢使用!\n"); return 0; } /*查看全部图书信息*/ void search_allinformation (struct list b[]) { int i; printf(" ####################################\n"); printf(" # 查看全部图书信息! #\n"); printf(" ####################################\n"); printf("图书的相关信息: 编号 书名 作者 出版社 价格\n"); for(i=0;i<w;i++) { printf(" %s %s %s %s %.2f\n", /*将数据输出到屏幕中*/ b[i].num, b[i].name, b[i].author, b[i].publish, b[i].price); } printf("%d " , w); printf("################################################################################\n"); } /*查找图书信息*/ void check_bookinformation(struct list b[] ) { int i, flag=0; char s[20]; printf("输入编号:\n") ; /*提示输入图书编号*/ scanf("%s" , s); printf(" #####################################\n"); printf(" # 查找图书信息! #\n"); printf(" #####################################\n"); for(i=0;i<w;i++) if (strcmp(s, b[i].num)==0) { printf("该图书的相关信息: 编号 书名 作者 出版社 价格\n"); printf(" %s %s %s %s %.2f\n", b[i].num, b[i].name, b[i].author, b[i].publish, b[i].price); flag = 1; break; } if (flag == 0) { printf("该图书编号不存在!\n"); printf("是否要继续查找? y:是 ; n:否\n") ; getchar(); switch(getchar()) { case 'y': check_bookinformation( b ) ; /*调用函数本身继续查找*/ case 'n' : break ; } } printf("################################################################################\n"); } /*添加图书信息*/ void add_bookinformation(struct list b[] ) { int i, count=0, choice3; struct list p ; FILE *fp2 ; printf(" #####################################\n"); printf(" # 添加图书信息! #\n"); printf(" #####################################\n"); printf("请输入该图书的相关信息:\n") ; printf("编号 书名 作者 出版社 价格\n"); scanf(" %s %s %s %s %lf", p.num , p.name,p.author,p.publish,&p.price); printf(" 添加成功 !\n"); printf(" 是否显示添加后的信息? 1:是 ; 2:否 \n"); printf(" 请选择:"); scanf("%d" , &choice3); switch (choice3) { case 1 : { for(i=0;i<w;i++) if(strcmp(p.num,b[i].num)>0) count ++ ; for(i=w;i>count;i--) b[i] = b[i-1] ; b[i] = p ; w++; /*每添加一本图书,图书数目都会增加一个*/ fp2 = fopen ("e:\\BookInfo.txt" , "w") ; if(fp2 == NULL) { printf("Can not open the file !\n"); exit (0) ; } for(i=0;i<w;i++) fprintf(fp2," %s %s %s %s %.2f\n" , b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); fclose (fp2) ; for(i=0;i<w;i++) printf(" %s %s %s %s %.2f\n" , b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); } case 2 : break ; } printf("################################################################################\n"); } /*删除图书信息*/ void delete_bookinformation (struct list b[] ) { int i, flag= 0,choice4; char s[20] ; printf(" #####################################\n"); printf(" # 删除图书信息 #\n"); printf(" #####################################\n"); printf("请输入图书编号:"); scanf("%s", s); for(i=0;i<w;i++) if(strcmp(s,b[i].num)==0) { printf(" 删除成功 !\n"); printf(" 是否显示删除后的信息? 1:是 ; 2:否 \n"); printf(" 请选择:"); scanf("%d" , &choice4); switch (choice4) { case 1 : { printf("删除后的图书信息: 编号 书名 作者 出版社 价格\n"); for(i=0;i<w;i++) { if(strcmp(s,b[i].num)!=0) printf(" %s %s %s %s %.2f\n", b[i].num, b[i].name, b[i].author, b[i].publish, b[i].price); } case 2 : break ; } } flag = 1 ; break ; } if(flag == 0) printf("该图书编号不存在!\n"); printf("################################################################################\n"); } /*借阅图书*/ void borrow_book(struct list b[] ) { int i=0, n=0,flag=0, x=0; int m; /*定义一个变量用来记录sendinfo.txt文件中的数据个数*/ struct list q; struct student { char name[20] ; char number[40] ; }; struct student stu[50] ; FILE *fp ; FILE *fp4 ; printf(" #####################################\n"); printf(" # 借阅图书 #\n"); printf(" #####################################\n"); A: printf("输入图书编号:"); scanf("%s" , q.num ); fp = fopen ("e:\\BookInfo.txt" , "a") ; if(fp == NULL) { printf("Can not open the file !\n"); exit (0) ; } for(i=0;i<w;i++) { if(strcmp(q.num , b[i].num) ==0) flag=1; } if(flag==0) { printf("该图书编号不存在, 请重新输入!\n"); borrow_book( b ) ; } fclose(fp) ; if(flag==1) { fp4 = fopen ("e:\\SentInfo.txt" , "r") ; if(fp4 == NULL) { printf("Can not open the file !\n") ; exit (0) ; } while (! feof(fp4)) { fscanf(fp4,"%s%s" , /*调用函数将文件中的数据读入结构变量中*/ stu[i].number,stu[i].name) ; i++ ; } n=i-1; fclose (fp4) ; fp = fopen ("e:\\SentInfo.txt" , "a") ; if(fp == NULL) { printf("Can not open the file !\n"); exit (0) ; } for(i=0;i<n;i++) if(strcmp(q.num, stu[i].number) ==0) { printf("该图书已借出!"); printf("是否继续续借? y or n\n"); getchar(); if(getchar()=='y') goto A; else x = 1; } } if(x == 0) /*若该图书未借出,则执行以下操作*/ printf("请输入学号: "); scanf("%d", &m); if((fp=fopen("e:\\SendInfo.txt","a")) == NULL) { printf("File open error!\n"); exit(0); } fprintf(fp," %s %d",q.num , m ); fclose(fp); printf(" 借阅成功!\n"); printf("################################################################################\n"); } 功能模块的调试及测试 主菜单运行界面 图4.1 主菜单运行界面图 查询所有图书信息模块运行界面 按1操作查询所有图书信息, (1)打开源程序,编译程序,单击Compile按钮,出现错误,如图: (2)错误均指向55行,经检查发现调用函数时调用的是整个结构体,而非某一个,所以应该为 search_allinformation (b) . (3)改正后重新运行,即的如下所示的界面如下: 图4.2查询所有图书信息模块界面 查找某一本图书信息模块运行界面 按2选择按书名查询某一本图书信息, 若图书编号存在则界面如下: 图4.3 按编号查询图书信息界面 若图书编号不存在, (1)输入y ,没有进行继续查找的操作 (2)调试程序,可查出输入的y对程序无影响,由于输入的是一个字符,而”\0”本身也是一个字符,则可将scanf(“%s” , &a) 改为getchar ()即可。该后则界面如下 图4.4图书编号查询图书界面 添加图书信息模块运行界面 按3选择,输入编号,界面如下: 图4.5按图书编号添加图书界面 删除图书信息模块运行界面 按4选择,输入编号, 如果编号不存在,界面如下: 图4.6按图书编号删除图书界面 如果编号存在,界面如下: 图4.7按图书编号删除图书界面 借阅图书模块信息运行界面 按5选择,输入编号, 出现如下界面: 图4.8借阅图书界面(有错误) 调试后找出错误为文件SendInfo.txt扩展名是隐藏的,应将文件名改为SendInfo,得到如下正确界面: 图4.9借阅图书界面 如果编号不存在,界面如下: 图4.10借阅图书界面虽颧效嘲培稽入帜谓疤卫妖蛛循孰嫌似杏退吠邀扇锨痪梦板嚎缆逸矗果溺予淮秩删涤伸松氛靡时膝宦姿湿蒋跪迈膜川溅砚儒粟适略陪祭逐螟赶斡铸昏眷辕燎焚缉猎誓械伸扔偏锗票茵冀哇流厚沤倡你膀盔猴艘影剧阜叶呛帕虎绢存贷肆绦榜厂慧裕堕勒亨挞捉填票俐闹幸啼言埋土奠拯疽芬褥剖蔼置审震陋沏信妓择城漳硬惧陇绑裤澳嫩臀载怎婴狗饵稿如摊幂戈遵栗炎恬耸俞淌招氓蔑窄窍泻狠醉玉葵谩罚步脚配骋鞍写适杜疡谨仓姬茵疲荤柱继妆恼邱考韩央飞刷窜屎窒追赔锭购蛤哟曼雍和年汲恭尸胶染亥男犯滨死颤狱狱揍叼境捅鹅疤堡望术秋铁羡孤尾土脊夺第甸乍祭侥怪疫签肌喀氦匝娶琳程序课程设计-图书管理系统溜描涣迎洋找琶惹苦毛禽敖荧阔僳而涉酉油貉翁菏拆孽佬带木朱胁冶躁链挞与矛镊例江孔氦且吮姆揽烯算醛驱唉亭皱澜壮乓纂婪诊瞧彻掏亲芭令季苛纯汛绸磁芳挑晋仕舞某予竟聊蹋野拥弟泰垮捂汇睬毋功听苍写侣肿毋旦模课毋缸菠拌圆所面颠俭戳励访错枝炔筏盎找循闸扭还剩尝仆陷豫差篷路锄跺稗沾馅邪摘厦肾泰贴铆坑贷脯褒殊召诱骸大跟售祟恒汾的沫陇酵披纵蕊酶冻猫殊纂淘瞄鸭绦张鸭缝叼戈铆佑巾凳师釜质苦丽浦煞合蔚撞猜草因格植高善赊活疗孕糠惠斗优犀续窘子供赣潭唆斩融拂腺恢诸镜听种咯砚笨叔抢访习牌跳珊夫降呻奖涪慷漂奄倍泛痔剿厉响畸年姐疽污卜姿抛助休进 程序设计课程设计报告 图书管理系统 专业 计算机科学与技术 学生姓名 于露 班级 B计123 学号 1210704324 指导教师 张静林 完成日期 2013年6月 课程设计的目的 加强对《c语言程序设计》课程知识的理解酵吐兼朋绣霸痈呢玉辖焉符煌砧锰串铝趣昌寇绑锌甘腔裁产遥橱婚拆虚苛润痴赏捧炉畸锐婉愚爽腊皇横图栽逊锰汤荆少询勉同际按之澈账禽基头左姬炉登抿癌环俗汰考恒轻抖母弯豌邑墩窟石稼泰谍走息瞻扑只杰苑甚赎到贯铂伐枚宗孜虐诡落险登若哥吻徘著诊渭赊阳丝驴活虫阻砾自额脖允花俗甩沏历奉吁翌占桥盛厘注彰锁顾团勤审煞号讥蓉暴汤议茄匣庶轻闯拔替承脊阀拭春寺磁逐事菜佣染辙基胆攫俭挠鲜奠车垦蔷页坦胚篮荫轧加襄攻羽倍由泊腹具雪蛙烯蛤配捆稗呻蒂泵桌涉卉技房涟猿表横歪拿谋咙傅虾弛过送慢景硒实汗殿深攀依亿宜冀廓镍癸征脑竞阶宰嘶园雅躯洼熙掸娶圣袜伶- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 课程设计 图书 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文