[理学]秦思军C语言课程设计课程设计.doc
《[理学]秦思军C语言课程设计课程设计.doc》由会员分享,可在线阅读,更多相关《[理学]秦思军C语言课程设计课程设计.doc(38页珍藏版)》请在三一办公上搜索。
1、Yangtze University College of Arts and Science学生实习手册(课程设计报告)学 部: 理 工 学 部 专 业: 电 子 信 息 工 程 班 级: 5111班 姓 名: 秦 思 军 学 号: 20114002 课程名称: C语言程序设计课设 指导教师: 杜红 呙明辉 实习时间:2012年7月6日至2012年7月14日一、课设题目 图书管理系统二、设计目的 问题描述:本程序属于非数值计算型算法设计,学生需要设计出图书馆模拟系统所需要的基本功能,并设计简单的界面(无需图形化)。 实现功能: 1、通过提示菜单选择可以进行的操作2、将图书的基本信息存入文件中,
2、并命名为book.txt3、将图书借阅统计信息存入文件中,并命名为record.txt4、将图书卡号统计信息存入文件中,并命名为card.txt4、在本系统中可以进行管理系统包含的基本操作,其中包括:a) 输入图书的图书名或作者名,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息;b) 添加图书的基本信息,通过输入图书相关信息,首先查找是否存在该图书名的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置;c) 修改图书的基本信息,通过输入图书名,首先查找是否存在该图书名的图书,如果存在则提示重新输入,否则将提示修改项(序号、书名、作者、单价),依据
3、提示进行修改;d) 删除图书的基本信息,通过输入图书名,首先查找是否存在该图书名的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在;e) 借阅图书,需要给出卡号和图书书名,如果图书名不存在则重新输入,直到输入正确为止,并将学号和相应的图书名存入record.txt文件中。f) 归还图书,需要输入卡号和图书书名,如果图书名不存在则重新输入,直到输入正确为止,然后确认归还;g) 统计分为对在架图书、学生借阅图书、借书卡三项的统计,申请卡号借阅书籍会对三项统计进行修改,显示。5、图书基本信息包括图书序号、书名、作者、单价、状态这些简单信息。6、图书信息文件中每一行存放一本图书的信息。
4、7、借阅信息文件中每一行存放一本书的借阅情况。掌握知识点:本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组和文件的相关操作,包括数组的输入、输出、查找、插入、删除、修改和文件不同形式的读取、写入等操作,需要对数组和文件有比较深入的掌握。三、总体设计1、图书管理系统组成框图2、调用的借阅、卡号统计函数流程图3、调用的删除图书、卡号函数流程图4、调用修改图书函数流程图四、详细设计模块功能说明: (包括结构体、借阅统计函数、卡号统计函数、删除图书函数、 删除卡号函数、修改图书函数)1、结构体:包括学生借阅信息、图书相关信息、借阅卡信息struct student/学生借阅信息结构体i
5、nt cardnum;/卡号char borrowbook10;/借阅图书student100;struct book/图书相关信息结构体int booknum;/图书序号char bookname20;/图书名 int bookprice;/图书单价char bookauthor20;/图书作者 int status;/图书状态book100;struct card/借阅卡信息结构体 int cardnum;/卡号 char sex4;/性别 char studentname20;/学生姓名 int studentclass;/学生班级card100;2、借阅统计函数功能:在被调用时,将图书
6、库里的所有被借图书统计起来, 当增加或删除图书时,不能改变此统计结果;当借出或归还时,才能改变它;(此函数无参数,所以无参数说明和函数调用关系)borrowcount()/借阅统计system(cls); /清屏FILE *fp;int i,n=0;printf(nttt借书统计nn); /进入借书统计界面fp=fopen(record.txt,r); /将文件record.txt以读的方式打开for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+)printf(t卡号tt借出的书籍n);printf(t%dtt%sn,studen
7、ti.cardnum,studenti.borrowbook);n=n+1; /读一次就在统计上加一fclose(fp);printf(目前共有%d本书借出n返回三级菜单n,n);getche();return 0;3、卡号统计函数功能:在被调用时,将在此图书馆办理借阅卡统计起来, 当增加或删除卡时,能改变此统计结果;(此函数无参数,所以无参数说明和函数调用关系)cardcount()/卡号统计system(cls); /清屏FILE *fp;int i,n=0;printf(nttt卡号统计nn); /进入卡号统计界面fp=fopen(card.txt,r); /将文件card.txt以读的
8、方式打开for(i=0;fread(&cardi,sizeof(struct card),1,fp)!=0;i+) printf(第%d张卡n,i+1);printf(t卡号tt性别tt姓名tt班级n);printf(ttn);printf(t%dtt%stt%stt%dn,cardi.cardnum,cardi.sex,cardi.studentname,cardi.studentclass);n=n+1; /读一次就在统计上加一fclose(fp);printf(n目前共有%d个学生n按任意键返回三级菜单n,n);getche();4、删除图书函数功能:在被调用时,将图书库里需要删除的书籍
9、删除,不需考虑其是 借出(此函数无参数,所以无参数说明和函数调用关系)delbook()/删除图书system(cls);FILE *fp,*fp2;int i;char bookname10,choice;printf(nttt删除图书nn); /进入删除图书界面fp=fopen(book.txt,r); /将文件book.txt以读的方式打开fp2=fopen(book1.txt,w); /将文件book1.txt以写的方式打开printf(t书名:nt ); scanf(%s,bookname);for(i=0;fread(&booki,sizeof(struct book),1,fp)
10、!=0;i+)if(strcmp(bookname,booki.bookname)!=0) / 通过比较,在图书库里寻找所删除的图书 fwrite(&booki,sizeof(struct book),1,fp2);/将非删除的所有书写到book1.txtfclose(fp);fclose(fp2);printf(t确认删除(y/n)?nt );getchar();scanf(%c,&choice);if(choice=y|choice=Y)fp=fopen(book.txt,w);fp2=fopen(book1.txt,r);for(i=0;fread(&booki,sizeof(struc
11、t book),1,fp2)!=0;i+)fwrite(&booki,sizeof(struct book),1,fp); /将book1.txt里数据写到book.txtfclose(fp);fclose(fp2);fp2=fopen(book1.txt,w);fclose(fp2); /清空临时文件book1.txtprintf(t删除成功,按任意键返回三级菜单n);getchar();return 0;else printf(t按任意键返回n);getche();return 0;5、删除卡号函数功能:在被调用时,将卡号库里面需要删除的卡号删除;(此函数无参数,所以无参数说明和函数调用关
12、系)delcard()/删除卡号system(cls);FILE *fp,*fp2;int i;int cardnum;char choice;printf(nttt删除卡号nn); / 进入删除卡号界面fp=fopen(card.txt,r);fp2=fopen(book1.txt,w);printf(t要删除的卡号(不存在则不作改动):nt );scanf(%d,&cardnum);for(i=0;fread(&cardi,sizeof(struct card),1,fp)!=0;i+)if(cardi.cardnum!=cardnum) / 通过比较,在卡号库里寻找所删除的卡号fwrit
13、e(&cardi,sizeof(struct card),1,fp2); /将非删除的卡号写到book1.txtfclose(fp);fclose(fp2);printf(t确认删除?(Y/N)!nt );getchar();scanf(%c,&choice);if(choice=y|choice=Y)fp=fopen(card.txt,w);fp2=fopen(book1.txt,r);for(i=0;fread(&cardi,sizeof(struct card),1,fp2)!=-0;i+)fwrite(&cardi,sizeof(struct card),1,fp); /将book1.
14、txt里数据写到card.txtfclose(fp);fclose(fp2);fp2=fopen(book1.txt,w);fclose(fp2); /清空临时文件book1.txt printf(t删除成功,返回三级菜单n);getchar();return 0;else getchar();printf(t操作已取消!n按任意键返回n);getche();return 0;6、修改图书函数功能:在其被调用时,将需修改的图书基本信息进行修改,分为对图书序号、图书名、作者及单价的修改;(此函数无参数,所以无参数说明和函数调用关系)changebook()/修改图书system(cls);FIL
15、E *fp,*fp2;char bookname10,choice;int i;printf(nttt修改图书nn); /进入修改图书界面fp=fopen(book.txt,r);fp2=fopen(book1.txt,w);printf(t书名:nt ); /输出需修改的书名scanf(%s,bookname);getchar();for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+)if(strcmp(booki.bookname,bookname)=0)/寻找所需修改的图书printf(t你所要修改的书的资料如下,请选择你要修改的内容:
16、n); printf(t序号tt书名tt作者tt单价n); printf(t%dtt%stt%stt%dn,booki.booknum,booki.bookna me,booki.bookauthor,booki.bookprice);printf(nt1:修改书号:n);printf(t2:修改书名:n);printf(t3:修改作者:n);printf(t4:修改单价:n);printf(t请输入-4:nt );choice=getchar();switch(choice) /选择1-4的不同修改项case 1:printf(t新的书号:nt );scanf(%d,&booki.bookn
17、um);fwrite(&booki,sizeof(struct book),1,fp2);break;case 2:printf(t新的书名:nt );scanf(%s,booki.bookname);fwrite(&booki,sizeof(struct book),1,fp2);break;case 3:printf(t新的作者:nt );scanf(%s,booki.bookauthor);fwrite(&booki,sizeof(struct book),1,fp2);break;case 4:printf(t新的单价:nt );scanf(%d,&booki.bookprice);f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理学 秦思军 语言 课程设计
链接地址:https://www.31ppt.com/p-4544311.html