课程设计实验报告图书管理系统方案.docx
- 文档编号:29861807
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:68
- 大小:274.99KB
课程设计实验报告图书管理系统方案.docx
《课程设计实验报告图书管理系统方案.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告图书管理系统方案.docx(68页珍藏版)》请在冰豆网上搜索。
课程设计实验报告图书管理系统方案
课程报告
课程名称:
程序设计实践
专业班级:
计科1401
学生姓名:
牛草原
学号:
201416010101
任课教师:
玉宏
学期:
2013-2014学年第二学期
课程报告任务书
题目
图书信息管理系统
主要
容
开发一个图书信息管理系统,图书信息包括:
图书编号、书名、作者、、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。
使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
①按书名查询②按作者名查询
按照价钱排序
按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:
可以按照自己的程度进行扩展。
比如
(1)简单的权限处理
(2)报表打印功能(3)甚至根据自己情况,可以加上学生信息和借阅信息的管理,并扩充为图书借阅系统。
(4)模糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
容
20分
规程度
5分
程序测试
5分
基本功能20分
扩展功能10分
自述情况10分
答辩情况
30分
成绩评定教师:
引言.....................................................3
绪论.....................................................3
1.需求分析...............................................3
2.概要设计...............................................5
2.1数据结构..............................................................5
2.2数据需求..............................................................5
2.3模块划分..............................................................5
2.4程序总体框架..........................................................6
三.详细设计..................................................................6
3.1登陆界面..............................................................7
3.2功能服务.............................................................21
四.调试分析..............................................48
五.程序不足与改进........................................49
六.课程心得总结..........................................49
引言
经过对程序设计题目的分析可知,整个程序的设计实现大致可以分为五个模块,其中每个模块对应一个函数,他们分别是:
图书的添加函数voidadd_book(void);删除图书的函数voiddelete_book(void);查询图书的函数voidinquire_book(void);对图书进行修改的函数voidrevise_book(void);以及对图书进行排序的函数voidsort_book(void);在这几个函数中,其功能的实现严格按照题目的要求:
1图书信息录入函数:
主要功能是从键盘上输入图书信息并将其写入文件中,作为图书馆的书库。
以便对以下的函数进行运行,此函数应是整个程序的基础。
2查询图书函数:
主要功能是按照一定的图书特征(图书名,图书作者)先将图书查询到。
3删除图书函数:
主要功能是将已存图书按照一定的图书特征(图书编号,图书名,图书作者,图书出版日期等)先将图书查询到,然后删除。
4图书排序函数:
主要功能是将已存图书按照一定的图书特征将图书进行详细的排序,具体可以分为按图书名排序,按图编号排序;按图书出版日期排序,按图书价格排序。
5图书的修改函数:
功能是将已录入的图书的编号,作者,出版日期,价钱等进行修改。
6退出函数:
该函数主要实现退出运行界面的功能。
绪论
整个程序的设计实现大致可以分为五个模块,其中每个模块对应一个函数,他们分别是:
图书的添加函数voidadd_book(void);删除图书的函数voiddelete_book(void);查询图书的函数voidinquire_book(void);对图书进行修改的函数voidrevise_book(void);以及对图书进行排序的函数voidsort_book(void);
1需求分析
开发一个图书信息管理系统,图书信息包括:
图书编号、书名、作者、、类别、出版时间、价格等基本信息。
使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能、排序功能:
①按书名查询②按作者名查询
按照价钱排序
按出版时间排序
(4)图书信息的删除与修改
(5)学生登录和管理员登陆
(6)退出系统
程序扩展:
(7)管理员功能:
①学生信息管理
1:
学生卡添加
2:
学生卡信息查询
3:
学生卡密码查询
4:
学生卡删除
②图书信息管理
(8)学生功能:
①图书信息查询
通过此次课程设计,可以使我们增强自己的动手能力,并可以使自己编写的程序与程序之间的衔接更为自然,同时可以提高我们使用计算机解决实际问题的能力,了解并掌握C语言开发程序的全过程。
此外还可以较为综合地提高自己C语言编程能力及调试能力和自己对C语言语法的进一步认知,为自己的后续课程打好基础。
二概要设计
2.1数据结构
该程序设计采用结构体和文件操作,用于实现对图书信息的存储,修改,查询及排序等功能。
2.2数据需求
该程序需要系统输入及输出图书的编号,图书名,图书作者,图书出版日期以及图书价格等数据。
2.3模块划分
该程序总体上分为6个模块,分别为:
学生登录系统模块,管理员登陆系统模块,图书信息录入模块,图书信息修改模块,图书信息删除模块,图书信息查询模块及图书信息排序模块,学生卡添加模块,学生卡删除模块,学生卡信息查询模块,学生卡密码查询模块。
其中图书信息查询模块分为按书名查询,作者名字查询。
图书排序系统分为按图书编号排序,按图书价格排序,按图书出版时间排序。
各个模块之间相互独立但彼此之间有相互依附,通过彼此之间有规律的相互调用及参数的传递从而实现整个程序较为综合的功能。
简言之:
(1)voidmain_menu(void);主菜单
(2)voidstudent(void);学生登录函数
(3)intstu_login(void);学生登录验证
(4)voidstu_find(void);学生图书查询函数
1.voidbook_search_name(void);书名查找
2.voidbook_search_author(void);作者查找
3.voidinquire_book(void);查询图书(输出所有图书)
(5)voidadministrar(void);管理员登录模块
(6)intadm_login(void);管理员登录验证
(7)voidad_st_menu(void);学生信息管理菜单
1.voidadd_card(void);申请新学生卡
2.voiddelete_card(void);删除学生卡
3.voidpasswordlookup(void);学生卡密码查询
4.voidinquire_stu(void);查询学生卡(输出所有学生卡信息)
(8)voidad_bk_menu(void);图书信息管理菜单
1.voidadd_book(void);添加图书
2.voiddelete_book(void);删除图书
3.voidrevise_book(void);修改图书
4.voidinquire_book1(void);输出所有图书,管理员使用。
5.voidsort_book(void);图书排序菜单
①.voidsort_book_num(void);图书排序——编号
②.voidsort_book_price(void);图书排序——价格
③.voidsort_book_time(void);图书排序——出版时间
2.4程序总体框架(如图2.4-1)
主界面
学生登录
图书管理
查询图书
图书排序
按出版时间排序
退出
图2.4-1
三详细设计
3.1登陆界面:
(1)基本介绍:
用户进入当用户选择进入登录界面时(如图3.1.4-1所示),该界面会显示出“欢迎使用草原图书管理系统”字样和一个图书馆的图案,然后用户可以选择:
学生登录,管理员登陆和退出系统。
选择学生登录时(如图3.1.4-2所示)需要登录学生卡号和密码经行身份验证。
选择管理员登录时(如图3.1.4-3所示)需要登录管理员账号和登录密码。
而当用户选择退出系统时,按任意键系统退出(如图3.1.4-4所示)。
进入身份鉴定界面时,需要输入用户名及密码,允许输入三次密码。
(2)程序解析:
首先,使用了基本的输入输出的标准库函数printf与scanf函数,将所需的提示语输出并实现用户选择的输入。
之后,用switch语句选择判断用户输入的操作,以确定后续操作。
其中在提示文字的排版上,我使用的是用空格键来做调整,这样做虽然麻烦耗时,但是可以精准的实现自己预期效果。
在身份鉴定操作界面,首先使用字符串数组将密码存放。
在密码输入时,使用的是密文登陆方式,即输入密码时,判断若密码不是“回车符”,就输出“*”(如图3.1.4-5所示)并且密码还能够在发现输入错后进行退格处理,然后判断输入的密码是否与密码字符串数组中的一致,从而判断是否进入下一个选择服务界面。
输入密码时,用for循环语句限制用户只能输入三次密码,若三次全错,则提示输入密码次数已达上限按任意键退出。
(3)实验代码:
#include"header.h"
voidmain_menu(void)
{
charch;
system("cls");
printf("==============================================\n");
printf("欢迎使用草原图书管理系统\n\n");
printf("█████\n");
printf("█田█田█\n");
printf("█田█田█\n");
printf("█田█田█\n");
printf("█田█田█\n");
printf("█████\n");
printf("◢██□██◣\n");
printf("==============================================\n\n");
printf("请选择您的登录模式\n\n");
printf("【1】学生登录【2】管理员登陆\n\n");
printf("【0】退出\n\n");
printf("==============================================\n");
printf("请输入数字0~~2:
");
while((ch=getch())&&(ch>'2'||ch<'0'))//容错处理
printf("\n你的输入格式错误,请重新输入:
");
switch(ch)
{
case'0':
break;
case'1':
student();
break;
case'2':
administrator();
break;
}
}
voidadministrator(void)//管理员登录模块菜单
{
if(adm_login())//登录成功
{
ad_menu();
return;
}
else//登录失败
{
main_menu();
return;
}
}
intadm_login(void)//管理员登录
{
intm;
inti=0;
intflag=0;
charch,key1[20]={0};
FILE*fp=NULL;
ADMINad,ad1;
fp=fopen(".\\data\\administrator.txt","r");//判断是否有管理员注册
if(fp==NULL)
{
flag=1;
}
elseif(fgetc(fp)==EOF)//未读取到有管理员注册
{
flag=1;
}
if(flag)
{
system("cls");
printf("您还没有注册管理员,请先注册\n请输入账号:
");
scanf("%s",&ad.num);
printf("请输入用户名:
");
scanf("%s",&ad.user);
printf("请输入密码:
");
scanf("%s",&ad.key);
rc4_crypt(&ad.key,"952316946");//加密
if(fp!
=NULL)
fclose(fp);
fp=fopen(".\\data\\administrator.txt","w");
fwrite(&ad,sizeof(ADMIN),1,fp);
printf("注册成功!
按任意键继续...\n");
getch();
fclose(fp);
}
system("cls");
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★\n");
printf("\t★欢迎使用管理员系统,请登录!
★\n");
printf("\t★★\n");
printf("\t★★★★★★★★★★★★★★★★★★★★★★★★★★★\n");
printf("\t请输入管理员账号:
");
scanf("%s",&ad.num);
fp=fopen(".\\data\\administrator.txt","r");
while(fread(&ad1,sizeof(ADMIN),1,fp)!
=0)//以数据块方式读出数据管理员账号
{
if(strcmp(ad1.num,ad.num)==0)
{
flag=0;
break;
}
}
if(flag)
{
printf("没有找到此卡号,按任意键结束...\n");
getch();
fclose(fp);
return0;
}
else
{
printf("\t请输入登录密码:
");
while((ch=getch())!
='\r')
{
if(ch=='\b'&&i!
=0)//密码输入容错处理,退格
{
i--;
printf("\b\b");
continue;
}
else
{
key1[i++]=ch;
printf("*");
}
}
key1[i]='\0';
strcpy(&ad.key,key1);
rc4_crypt(&ad.key,"952316946");
fread(&ad1,sizeof(ADMIN),1,fp);
if(strcmp(&ad.key,&ad1.key)==0)
{
printf("\n登录成功,按任意键返回...");
strcpy(user_ad,&ad1.user);
getch();
fclose(fp);
return1;
}
else
{
printf("\n对不起,密码输入错误,您还有3次机会重新输入正确密码~~~\n");
for(m=2;m>=0;m--)
{
while((ch=getch())!
='\r')
{
if(ch=='\b'&&i!
=0)//密码输入容错处理,退格
{
i--;
printf("\b\b");
continue;
}
else
{
key1[i++]=ch;
printf("*");
}
}
key1[i]='\0';
strcpy(&ad.key,key1);
rc4_crypt(&ad.key,"952316946");
fread(&ad1,sizeof(ADMIN),1,fp);
if(strcmp(&ad.key,&ad1.key)==0)
{
printf("\n登录成功,按任意键返回...");
strcpy(user_ad,&ad1.user);
getch();
fclose(fp);
return1;
}
elseif(m>0)
printf("\n对不起,密码输入错误,您还有%d次机会重新输入正确密码~~~\n",m);
else
{
printf("您输入密码的次数已达上限不能继续输入,请按任意键退出~~~");
getch();;
fclose(fp);
return0;
}
}
}
}
}
voidstudent(void)//学生登录
{
if(stu_login())//登录成功
{
stu_find();
return;
}
else//登录失败
{
main_menu();
return;
}
}
intstu_login(void)//学生登录验证
{
intm;
inti=0;
intflag=0;
charch,key1[20]={0};
FILE*fp1=NULL;
if((fp1=fopen(".\\data\\studentcard.txt","r"))==NULL)//没有学生卡存在
{
printf("文件打开失败,按任意键结束...");
getch();
return0;
}
else
{
system("cls");
intflag;
STUst,st1;
printf("请输入学号:
");
scanf("%s",&st.num);
while(fread(&st1,sizeof(STU),1,fp1)!
=0)//以数据块方式读出数据学生卡号
{
if(strcmp(st1.num,st.num)==0)
{
flag=0;
break;
}
}
if(flag)
{
printf("没有找到此学号,请查证或与管理员联系。
按任意键结束...\n");
getch();
fclose(fp1);
return0;
}
else
{
printf("请输入登录密码:
");
while((ch=getch())!
='\r')
{
if(ch=='\b'&&i!
=0)//密码输入容错处理,退格
{
i--;
printf("\b\b");
continue;
}
else
{
key1[i++]=ch;
printf("*");
}
}
key1[i]='\0';
strcpy(&st.key,key1);
rc4_crypt(&st.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 实验 报告 图书 管理 系统 方案