




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、滁州学院课程设计报告课程名称: 数据结构 设计题目: 图书管理基本业务模拟 系 别: 计算机科学与技术 专 业: 计算机科学与技术 组 别: 第九八组 起止日期: 2011年5月20日 2011年6月20日 指导教师: 杨斌 计算机科学与技术系二 O一一年制课程设计题目图书管理基本业务模拟组长杨海鹏学号2010211134班级10计科一班系别计算机科学与技术专业计算机科学与技术组员张毅苗 亢德燕 张琪指导教师杨斌课程设计目的深入理解数据结构的基本理论,掌握数据存储结构的设计方法,掌握数据结构基于的各种操作的实现方法课程设计所需环境Windows操作系统, Microsoft Visual C+
2、 6.0课程设计任务要求模拟图书馆办公系统,管理图书和用户的租借、归还、查询等问题课程设计工作进度计划序号起止日期工 作 内 容分工情况012010年5月202010年6月1日构造学生查询图书信息的子函数,查询成功显示图书各项信息,查询失败则提示查询失败张毅苗022010年5月202010年6月1日构造添加学生信息和删除学生信息的子函数,要求使用循环控制添加学生信息,输入特殊值结束,程序运行每次删除一个学生信息的子函数张琪032010年5月202010年6月1日构造添加图书信息和删除图书信息的子函数,要求使用循环控制添加图书信息,输入特殊值结束,程序运行每次删除一个图书信息的子函数亢德燕042
3、010年5月202010年6月1日为防止学生信息泄露,构建密码登陆和更改密码子函数,学生可以随便设置自己独特的密码,登陆时需要提供用户名和密码,否则无法进入图书管理系统进行相应操作杨海鹏052010年6月12010年6月6日各成员上交程序子函数,组长负责构建图书管理系统主函数,我使用switch语句的嵌套来组建各成员上交的程序子函数,实现友好简单的人机操作界面。杨海鹏指导教师签字: 年 月 日教研室审核意见:教研室主任签字: 年 月 日最好此页表放在上面页目录 1 引言12 需求分析23 概要设计34 详细设计45 调试与操作说明56 课程设计总结与体会67 致谢78参考文献89附表99.1附
4、表110按照第三组或者模板认真修改。一引言图书馆管理系统的建立,有利于对图书的管理,方便同学们的租借和归还,有利于对图书信息的整体把握。同学们可以用图书馆管理系统查询个人的图书租借情况以及查询可借的图书信息,大大方便了管理员的管理和同学们的租借。二需求分析1.课程设计名称:图书管理基本业务模拟2.课程设计任务和要求:写一个上述图书管理基本业务的事件驱动拟系统。通过模拟方法管理图书馆中图书的基本信息和同学们的租借信息。3.课程设计思路:把图书管理基本业务分成管理员操作和同学们操作,对此建立两个平台,用switch语句进行选择,在对应的菜单下面在利用switch语句进行选择对应的用户所应有的操作,
5、主函数使用多重switch语句的嵌套进行操作。开发环境:Windows和Microsoft Visual C+ 6.0开发工具:C语言。三概要设计(一)本课题的设计流程:1.我们先对图书馆业务情况进行分析,抽象成数学模型确定变量的个数,以及结构体类型,和使用的数据结构类型;2.进行整体框架的构建,确定程序的输入情况;3.书写主函数,并且分开书写各个由小组各成员完成相对应功能的子函数;4.最终组长组合各部分函数,构建主函数,进行调试;5进行测试,我们采用白盒测试,测试各种可能的情况,测试程序所要达到的功能是否满足;(二)我们所采用的方法:1.我们采用C语言中是文件的读写对数据进行存储,使程序可以
6、多次运行,可以真正的模拟接近图书馆基本管理方式。2.用两个结构体分别来描述图书信息和学生信息。3.为保护私人信息不被他人窃取,我们提供了密码登陆系统,学生可以更改自己的登陆密码,在程序下次运行即生效,更改的密码会保持在同目录下的文本文档中,从而实现数据的多次使用和信息的对比。 四.详细设计(一)设计结构体存储每一个成员的信息:所构造的结构体如下:typedef struct booklong bookbm;/书本的编码char booknamemax;/书本的名字char authormax;/书的作者int now;/该书的现存量int total;/该书的总量book;typedef st
7、ruct studentlong xuehao;/学生的学号char namemax; /学生的姓名char sexmax; /学生的性别char ximax; /学生的系别student;(二)各子函数的基本模拟:各子函数均使用对文件的基本操作,打开文件,对文件进行操作,关闭文件。根据操作的不同会选取不同的打开方式,我们使用打开方式“a”进行在文件末尾追加信息,达到信息的保存,相当于简单的数据库的作用,我们使用打开方式“r”读取硬盘上的文件信息,我们使用打开方式“r+”对文件的内容进行擦除,覆盖。该方式是密码修改的最重要方式。(三)计算过程(基本思路)如下:Code11、 管理员操作2、 用
8、户操作3、 退出操作系统4、5、6、 管理员操作用户操作 Code2 code3输入用户密码输入管理员密码NO Yes yes Yes No1、 图书查询2、 修改密码3、 退出操作系统1、 添加用户2、 删除用户3、 添加图书4、 删除图书5、 修改管理员密码6、 退出操作系统退出操作系统 缺少图名(四)运行部分结果展示: 1、进入程序人机操作界面(图一)进行选择 图一 不规范选择1:输入密码正确后进入(图二)人机界面 图二不规范 选择2:输入密码正确后进入(图三)人机界面 图三不规范选择3、直接退出人机操作系统(图四)图四不规范 图1 名称(五)编写的程序:参见附表1调试与操作说明我们的程
9、序有友好,简单的人机界面,很容易操作,在此就不多说了,运行了程序就知道了。课程设计总结与体会对用户及图书信息的删除相对而言比较麻烦,原计划以“r+”打开文件将要删除的图书或用户信息擦除掉,以便下次程序运行具有累加效果,但未能实现,后来用文件复制方法将删除指定用户和图书信息的文件复制到新的文件中,该方式可以实现,但是程序下次运行没有累加效果,程序无法打开复制后 的文件进行操作。致谢以上是我们小组的课程设计报告。谢谢杨斌老师的教导,令我们对课程设计有了认识,为我们的毕业设计打下良好的基础,半年的相处,感觉杨斌老师是个有热情,积极的老师。参考文献1严蔚敏,吴伟民.数据结构题集(C语言版)M.北京:清
10、华大学出版社,2003年6月2 胡学刚.数据结构(C语言版) M. 北京:高等教育出版,2008年6月3 苏运霖. 数据结构与算法M. 长沙:中南工业大学出版社, 2005年6月4 胡学钢.数据结构导论复习与考试指导M.北京:高等教育出版社,1999.附表附表1:我们小组的程序:#include"stdio.h"#include"stdlib.h"#include"string.h"#include"iostream.h"#include<conio.h>/using namespace std#def
11、ine max 20typedef struct booklong bookbm;/书本的编码char booknamemax;/书本的名字char authormax;/书的作者int now;/该书的现存量int total;/该书的总量book;typedef struct studentlong xuehao;char namemax;char sexmax;char ximax;student;/循环添加图书信息void tianjiatushu()book fang;int value;FILE *fp;if(fp=fopen("book.txt","
12、a")=NULL)/如果一开始不“W“创建,直接”a“进行追加,那么多次运行数据累加进行存储cout<<"打开文件错误"exit(0);cout<<"输入非0添加图书信息,输入0结束添加:n"cin>>value;while(value!=0)cout<<"*输入你要写入的图书信息*n"cout<<"依次输入:n 编码,书名,作者,现存量,总量n"cin>>fang.bookbm>>fang.bookname>>
13、;fang.author>>fang.now>>fang.total;fseek(fp,0L,0);fprintf(fp,"%d %s %s %d %dn",fang.bookbm,fang.bookname,fang.author,fang.now,fang.total);cout<<"输入非0继续添加学生信息,输入0结束添加:"cin>>value;if(fclose(fp)cout<<"关闭文件失败"exit(0);if(value=0)cout<<&quo
14、t;追加结束"<<endl;/删除图书信息void shanchutushu()book fang;long value;FILE *fp,*fq;if(fp=fopen("book.txt","r")=NULL)cout<<"打开文件错误"exit(0);cout<<"输入你要删除的图书的编码:"cin>>value;while(!feof(fp)fscanf(fp,"%d%s%s%d%d",&fang.bookbm,fang.
15、bookname,fang.author,&fang.now,&fang.total);if(value!=fang.bookbm)if(fq=fopen("copybook.txt","a+")=NULL)cout<<"打开文件错误"exit(0);fprintf(fq,"%d %s %s %d %d",fang.bookbm,fang.bookname,fang.author,fang.now,fang.total);if(fclose(fq)cout<<"关闭
16、文件失败"exit(0);if(fclose(fp)cout<<"关闭文件失败"exit(0);/删除学生信息void shanchuxueshen()student fang;long value,value1;FILE *fp,*fq;if(fp=fopen("student.txt","r")=NULL)cout<<"打开文件错误"exit(0);cout<<"输入你要删除的学生的学号:"<<endl;cin>>valu
17、e;while(!feof(fp)fscanf(fp,"%d%s%s%s",&value1,,fang.sex,fang.xi);if(value!=value1)if(fq=fopen("copystudent.txt","a+")=NULL)cout<<"打开文件错误"exit(0);fprintf(fq,"%d %s %s %s",value1,,fang.sex,fang.xi);if(fclose(fq)cout<<&
18、quot;关闭文件失败"exit(0);if(fclose(fp)cout<<"关闭文件失败"exit(0);/循环添加学生信息void tianjiaxueshen()student fang;int value;char mima7="000000"FILE *fp;FILE *fq;if(fp=fopen("student.txt","a")=NULL)cout<<"打开文件错误"exit(0);if(fq=fopen("学生密码库.txt&qu
19、ot;,"a")=NULL)cout<<"打开文件错误"exit(0);cout<<"输入非0添加学生信息,输入0结束添加:n"cin>>value;while(value!=0)cout<<"*输入你要写入的学生信息*n"cout<<"依次输入:n 学号,姓名,性别,那个系的n"cin>>fang.xuehao>>>>fang.sex>>fang.xi;fprintf(
20、fp,"%d %s %s %sn",fang.xuehao,,fang.sex,fang.xi);fprintf(fq,"%s %sn",,mima);cout<<"输入非0继续添加学生信息,输入0结束添加:"cin>>value;if(fclose(fp)cout<<"关闭文件失败"exit(0);if(fclose(fq)cout<<"关闭文件失败"exit(0);if(value=0)cout<<
21、;"追加结束"<<endl;/学生按图书编码查询图书信息void chashubian()book fang;long value;FILE *fp;if(fp=fopen("book.txt","r")=NULL) cout<<"打开文件错误"exit(0);cout<<"输入你要查询的图书的编码:"cin>>value;while(!feof(fp)fscanf(fp,"%d%s%s%d%d",&fang.bookb
22、m,fang.bookname,fang.author,&fang.now,&fang.total);if(value=fang.bookbm)printf("依次输出:编码,书名,作者,现存量,总量n%d %s %s %d %dn",fang.bookbm,fang.bookname,fang.author,fang.now,fang.total);break;if(fclose(fp)cout<<"关闭文件失败"exit(0);/学生按图书名字查询图书信息void chashuming()book fang;char sh
23、umingmax;FILE *fp;if(fp=fopen("book.txt","r")=NULL) cout<<"打开文件错误"exit(0);cout<<"输入你要查询的图书的作者:"cin>>shuming;while(!feof(fp)fscanf(fp,"%d%s%s%d%d",&fang.bookbm,fang.bookname,fang.author,&fang.now,&fang.total);if(strcmp(fa
24、ng.author,shuming)=0)printf("依次输出:编码,书名,作者,现存量,总量n%d %s %s %d %dn",fang.bookbm,fang.bookname,fang.author,fang.now,fang.total);if(fclose(fp)cout<<"关闭文件失败"exit(0);/管理员密码登陆int guanliyuanmima()FILE *fp;int j,k;char passwordmax;char code7;if(fp=fopen("管理员密码.txt","
25、r")=NULL)cout<<"打开文件错误"exit(0);fscanf(fp,"%s",password);cout<<"请输入六位数的密码:"<<endl;for(j=0;j<3;j+)for (k=0;k<6;k+)codek=getch();cout<<"*"<<endl; code6='0'/选入字符串结束符。if (strcmp(code,password)!=0)cout <<"
26、密码错误,请重新输入!" <<endl;cout<<" 请输入六位数的密码:"<<endl;else return 1;if(j=3) return 0;/登陆三次后还未成功则结束程if(fclose(fp)cout<<"关闭文件失败"exit(0);/管理员修改密码void guanlixiugaimima()char mima20;FILE *fp;if(!(fp=fopen("管理员密码.txt","r+")cout<<"打开文件
27、失败"<<endl;exit(0);cout<<"写入新密码"<<endl;cin>>mima;fprintf(fp,"%s",mima);if(fclose(fp)cout<<"关闭文件失败"<<endl;exit(0);/学生密码登陆int xueshendenglu()int flag,k;FILE *fp;char namemax;char xuenamemax;char passwordmax;char code7;if(fp=fopen(&q
28、uot;学生密码库.txt","r")=NULL)cout<<"打开文件错误"exit(0);cout<<"请输入用户名:"<<endl;cin>>xuename;while(!feof(fp)fscanf(fp,"%s%s",name,password);if(strcmp(xuename,name)=0)cout<<"请输入六位数的密码:"<<endl;for (k=0;k<6;k+)codek=getc
29、h();cout<<"*"<<endl; code6='0'/选入字符串结束符。if (strcmp(code,password)!=0)flag=0;cout<<"密码错误"<<endl;elseif(fclose(fp)cout<<"关闭文件失败"exit(0);flag=1;break;/else /cout<<"用户名错误"<<endl;return flag;/学生修改密码 void xueshenxiug
30、aimima()char mima20;char yangmax;char mingzimax;char zifumax;FILE *fp;if(!(fp=fopen("学生密码库.txt","r+")cout<<"打开文件失败"<<endl;exit(0);cout<<"输入姓名:"<<endl;cin>>yang;while(!feof(fp)fscanf(fp,"%s%s",mingzi,zifu);if(strcmp(yang,
31、mingzi)=0)cout<<"用户名正确"cout<<"输入新密码"<<endl;cin>>mima;fseek(fp,10L,0);fprintf(fp,"%s",mima);break;if(fclose(fp)cout<<"关闭文件失败"<<endl;exit(0);/int main()int code1,code2,code3,code4;int value,value1;char mimamax;cout<<&quo
32、t; *"<<endl;cout<<" 图书管理系统 *"<<endl;cout<<" *"<<endl; cout<<" * *"<<endl; cout<<" * *"<<endl; cout<<" * *"<<endl; cout<<" * 版权所有 杨海鹏 *"<<endl;cout<<&qu
33、ot; * 张琪 *"<<endl;cout<<" * 亢德燕 *"<<endl;cout<<" * 张毅苗 *"<<endl;cout<<" *"<<endl;cout<< 输入1管理员操作*输入2学生操作*输入3退出图示书系统"<<endl;cin>>code1;switch(code1)case 1:/管理员操作value=guanliyuanmima();if(value=1)system
34、("cls");system("date /t");system("time /t");cout <<"*" <<endl;cout <<"* 1 添加用户 *" <<endl;cout <<"* 2 删除用户 *" <<endl;cout <<"* 3 添加图书 *" <<endl;cout <<"* 4 删除图书 *" <
35、;<endl;cout <<"* 5 修改密码 *" <<endl;cout <<"* 6 退出操作图书管理系统 *" <<endl;cout <<"*" <<endl;cout<<" 请选择操作类型 " <<endl;cin>>code2;switch(code2)case 1:/循环添加学生信息system("cls");tianjiaxueshen();break;case 2:/按学生学号删除学生信息system("cls");shanchuxueshen();break;case 3:/循环添加图书信息system("cls");ti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- phpmysql考试试题及答案
- 电线回收知识培训课件
- 电瓶车维修技术知识培训课件
- 高空安全教育课件
- 北科大附中开学考试题及答案
- 北京大学高数期末考试及答案
- 北关医院招聘考试题目及答案
- 天车初级考试题及答案
- 电焊安全和防护知识培训课件
- 考试题及答案小学
- ISO9001工厂质量体系文件
- 应急广播系统维护管理制度
- 2025年春季学期 形势与政策讲稿第五讲-从教育大国迈向教育强国
- 柴油发电机组操作培训
- 体检中心知识
- 四川2024年12月四川省雅江县县乡机关度公开考调15名公务员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 《目标是成功的灯塔》课件
- 老年护理学试题库(含参考答案)
- 学校中层行政培训
- 甲状腺腔镜手术课件
- 项目的运营规划
评论
0/150
提交评论