C语言图书管理系统.docx
- 文档编号:28995168
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:20
- 大小:268.13KB
C语言图书管理系统.docx
《C语言图书管理系统.docx》由会员分享,可在线阅读,更多相关《C语言图书管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
C语言图书管理系统
《程序设计与算法综合实习》课程设计报告
图书馆管理系统
题目:
班级:
软件学院软件工程R6班
学生学号:
学生姓名:
指导老师:
提交时间:
2014年5月2号
成绩:
华南农业大学信息学院
一、需求分析
1、系统概述:
(1)题目概述:
设计一个图书登记管理程序,该程序具有以下功能:
a.录入某本图书的信息(图书信息包括的内容:
ISBN号、书名、作者、出版社、出版日期、价格)
b.给定图书ISBN编号,显示该图书信息;
c.给定图书ISBN编号,修改该图书信息;
d.给定图书ISBN编号,删除该图书信息;
e.给定某个字符串,查找并显示所有书名中包括该字符串的图书的信息;
f.给定出版社名称,查找并显示该出版社的所有图书的信息;
g.统计功能:
提供一些统计各类信息的功能。
(2)题目要求:
a.按照分析、设计、编码、调试和测试过程完成应用程序;
b.学习并使用流程图等工具,并在撰写报告中使用;
c.程序的各项功能在程序运行时,以菜单方式选择并执行;
d.要求用户输入数据时,要给出清晰、明确的提示,包括:
输入数据的内容、格式及结束方式等;
e.所有的信息存储在一个文件或多个中,并实现文件读写操作。
f.记录添加删除操作时,先从文件载入数据,用链表存放,批量操作完后,数据从链表写入文件;
g.查看数据时,先从文件载入数据,用数组存放,并排序,使用二次查找加速查找过程,一次载入允话使用者多次查看数据。
(3)系统功能:
管理员功能:
(1)图书管理:
a.增加图书
b.删除图书
c.修改图书
d.查找图书
(2).用户管理:
a.增加用户
b.删除用户
c.查找用户
(3)修改管理员密码
普通用户功能:
(1)查找图书:
a.图书借阅
b.图书归还
c.查询图书信息
(2)修改用户密码
2、系统运行环境:
(1)硬件环境:
CPU:
奔腾3以上
内存:
1G以上
显卡:
集成显卡
硬盘:
10M
(2)软件环境:
操作系统:
windows7/8
DOS系统支持中文输出
3、功能需求描述:
(1)管理员功能:
在图书管理功能中,管理员能够将新购的图书信息录进系统中,也能将已丢失的图书的信息从系统中删除,还能将录入有错误信息的图书进行信息修改;在查找图书功能上,显示图书信息时,管理员查找出现的图书信息能显示该图书的借阅者情况。
若被借阅,便会显示出借阅者的用户名;若是没被借阅,则显示“无”。
在用户管理功能中,管理员能够添加新的普通用户并且为该用户设置初始密码。
还能删除普通用户,查看普通用户。
最后,就是剩下修改管理员密码这个功能。
第一次进入该系统时,管理员的初始密码是“123456”,管理员第一次进去后必须进行修改。
避免被非管理员人员登录后进行操作,造成灾难性的损失。
修改密码成功后,密码经过加密程序被写进文件里面。
避免被他人打开该文件直接找到密码。
(2)普通用户功能:
普通用户能查找图书,并且在查找过程中后能够对图书进行借阅或者事归还。
借阅和归还都必须进行信息的登记和消除。
这是管理员所不具备的功能。
最后还有一个修改自己用户名密码的功能,这起到信息保密的作用,避免有人使用其他人的账号进行借书。
二、总体设计
1、总体开发思想:
(1)主要的数据结构:
两个单链表结构,其中一个单链表存放图书信息,另一个存放普通用户信息。
(2)数据存贮方式:
顺序存储。
每当数据发生变动时,都将文件里面的数据清空,再重新把链表里面的数据写进文件中。
......
(3)使用的语言:
C语言。
2、系统模块结构图:
3、功能设计:
1.选择管理员登陆程序框图
2.增加图书程序框图
3删除图书程序框图
4修改图书程序框图
5.查找图书程序框图
6.修改密码程序框图(管理员和普通用户一样)
7.添加新用户
8.删除用户
9.查找用户
10.借书,还书程序框图
三、功能实现
1、主要函数:
函数名及参数含义;
voidread_txt();//对文件进行读操作,把图书信息读取到链表中;
intwrite_txt();//对文件进行写操作,把链表中图书信息写进文件,成功则返回1;失败则返回0;
vcoidadd_book();//添加图书,申请一个链表结点用以添加图书;
voidbook_ISBN(linklistp);//p为要操作图书所在的结点,将p结点数据域所存的ISBN码按顺序插入
图书链表中;
voiddelete_book();//删除图书;
voiddelete_ISBN(linklistp);//p为指定要删除图书所在的结点,将结点p删除;
voidalter_book(Linklistp,intbookkey);//修改图书;p为所要修改的图书所在的结点;bookkey为判断功
能;若是在添加图书时图书信息错误进行修改,则执行bookkey的功
能;若是在修改图书功能进入进行修改,则不执行bookk功能;
voidseek();//查找图书总菜单;
voidseek_ISBN();//按ISBN码查找(二分查找);
voidseek_name();//按书名查找(管理员页面进入时使用模糊查找,普通用户则是精确查找);
voidseek_press();//按出版社找(遍历同个出版社的所有图书);
voidmanage_user();//用户管理;
voidread_user_txt();//对文件进行读操作,把普通用户的信息读取到链表中;
intwrite_user_txt();//对文件进行写操作,把链表中普通用户的信息写进文件,成功则返回1;失败则
返回0;
voidadd_user();//添加用户,申请一个链表结点用以添加新图书;
voiddelete_user();//删除用户;
voidseek_user();//查找用户;
voidread_password();//将文件中加密的管理员密码解密并且放到字符数组里面;
voidenter_password();//输入密码,并使密码在屏幕显示成星号;
intlend_return_book(chars[]);//s[]为图书的ISBN码;图书借阅和归还,借阅成功或者归还成功返回1,失败则返回0;
intuser_judge(charss[]);ss[]为普通用户账号;图书借阅和归还时对普通用户身份进行鉴别,用户正确
则返回1,不正确并且返回放弃继续输入则返回0;
2、各菜单页面
开机界面
====================================================================
|**|
|**|
|*欢迎使用图书馆系统*|
|**|
|*管理员的初始密码为:
123456*|
|*请务必在第一次登陆后进行修改*|
|**|
|**|
====================================================================
按Enter键继续__
用户选择界面
====================================================================
|**|
|*用户选择*|
|**|
|**|
|*1.图书管理员*|
|**|
|*2.普通用户*|
|**|
|*0.退出系统*|
|**|
====================================================================
请输入你的操作选择__
输入密码界面
====================================================================
|**|
|*是否输入密码进行管理员操作*|
|**|
|**|
|*1.输入密码*|
|**|
|*0.返回前一菜单*|
|**|
====================================================================
请输入你的操作选择__
管理员功能界面
====================================================================
|*功能选择*|
|**|
|*1.增加图书*|
|*2.删除图书*|
|*3.修改图书*|
|*4.查找图书*|
|*5.用户管理*|
|*6.修改密码*|
|*0.返回前一菜单*|
|**|
====================================================================
请输入你的操作选择__
查找图书界面
====================================================================
|*查找图书条件*|
|**|
|*1.按图书ISBN码查找*|
|**|
|*2.按书名查找*|
|**|
|*3.按出版社查找*|
|**|
|*0.返回前一菜单*|
|**|
====================================================================
请输入你的操作选择__
用户管理界面
====================================================================
|*选择用户操作*|
|**|
|*1添加用户*|
|**|
|*2.删除用户*|
|**|
|*3.查找用户*|
|**|
|*0.返回前一菜单*|
|**|
====================================================================
请输入你的操作选择__
修改密码界面
====================================================================
|**|
|*功能选择*|
|**|
|**|
|*1.输入原密码进行密码修改*|
|**|
|*0.返回前一菜单*|
|**|
====================================================================
请输入你的操作选择__
四、总结
在做课程设计的作业时,我分到的题目是图书馆管理系统。
开始时,我并不知道如何起步,后来,经过一个星期的思考,做了一个小小的设计思路。
由于我是第一次编写软件,所以,程序写了又改,改了又写。
直到思路很清晰以后才一直写下去,不用做大的改动。
最开始写的是,管理员登录和管理员密码修改。
由于缺乏经验,所以写得很乱,用了很多函数,有些子函数很短很短。
写到后来,才发现其实前面几个子函数是可以合并在一起的。
可以减少子函数的数目,方便对程序的检查。
接下来是做增删查改,这个要用到链表和文件。
在把文件里面的数据加载到链表这里总是出错。
因为用了eof()函数。
总是多循环了一次了;上网找了一下,发现问题所在,也按照网上所说方法进行改正,但还是出错。
在尝试了几个钟之后,用了最笨最直接的方法。
在用eof()函数把文件的的数据加载到链表时,当eof()函数结束后,直接把链表最后一个结点给删除掉。
很容易地解决了该函数做为循环条件时多循环一次的问题。
有时候,某些很基础的方法就能解决掉问题,多实践多尝试是有很多好处地。
虽然做这课程设计用了很多时间,但在这个过程中发现了很多自己上学期学程序设计那本书时没发现的问题。
果然实践是验证真理的唯一方法。
很多事情只有去尝试了才会有所发现有所收获。
评分表
题目:
教务信息管理系统
学号:
姓名:
评分项目分数
1.功能是否满足葽求(50分)
2.界面是否美观(10分)
3.所学知识在设计中的运用是否得当(10分)
4.对效率要求较高的部分是否有更深的思考与设计(10分)
5.答辩情况(20分)
总成绩:
评语:
评阅老师:
评阅时间:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 管理 系统