ImageVerifierCode 换一换
格式:DOCX , 页数:56 ,大小:704.49KB ,
资源ID:8300637      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8300637.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言图书管理系统设计实践报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言图书管理系统设计实践报告.docx

1、c语言图书管理系统设计实践报告工程实践1项目报告设 计 题 目 C语言图书管理系统 学 生 姓 名 杨伟 学 号 * 所 在 学 院 计算机学院 年 级 班 级 13级6班 指 导 教 师 李莉丽 2014年 6 月成都信息工程学院 计算机学院1 问题描述图书管理系统作为一个应用软件将为学校的老师和学生提供一个与学校图书馆图书以及个人信息进行交互的平台。根据系统界面的提示信息,操作者就可以对图书信息进行查询,借阅,还书,登陆个人账户则可以个人账户信息,管理员通过登陆管理员账户可以整理和修改书籍和学生信息。2 开发环境visual C+ 6.03功能分析角色1: 管理员序号功能描述备注1书籍借阅

2、2书籍归还账户状态有提示3查询书籍信息能按书名、作者、编号查找4修改账户密码5修改学生数据仅管理员有此权限6修改图书数据仅管理员有此权限7查询账户状态会提示还书角色2: 学生序号功能描述备注1书籍借阅2书籍归还账户状态有提示3查询书籍信息能按书名、作者、编号查找4修改账户密码7查询账户状态会提示还书4项目设计4.1 程序结构设计4.2 数据结构设计程序中用到的特殊数据结构(非标准C的基本数据类型)。存储学生数据的结构体:typedef struct information char bookNum10; char bookNam50; char bookAut20; float bookPri

3、; int status; struct information *next;info;存储图书数据的结构体: typedef struct student char stuNam20; char number10; char passKey20; int borrowSta; char key; struct student *next;studentDat;4.3 主要算法(1)查询书籍函数:findBo 1 2 3 4 0(2)登录函数: checkAcc Y N(3)更改书籍函数: changeBo 1 2 3 4 0 (4)删除书籍函数: delBook Y N (5)添加书籍信息函

4、数: addBook Y N5程序运行及调试(1)进入系统(2)创建数据 (3)主菜单(4)实现的主要功能6总结首先说说系统运用的原理,主要是是图书数据和学生数据的 动态存储与调用,通过函数之间的相互调用实现系统各级菜单的 层次递进。操作者运行系统时需要先检查是否存在相应的 数据文件,如果没有则说明系统首次运行,待初始化数据后,需要建立针对图书数据和学生数据的两个不同的 独立链表,并且将链表数据存储到文件中,随后向各个函数传入 链表首地址(首地址固定),根据各个函数功能的不同,如果需要更改学生或者图书数据,则直接通过 对链表的删除、增加和查询实现对学生信息以及图书信息的访问、修改和调用操作。随

5、后系统将修改后的链表数据再次存入 固定文件中,操作者每次运行系统时,重复以上对链表和文件的操作,以此实现外界和系统存储数据的 动态交互,提高系统运行效率。另外图书数据和学生数据都以 结构体数据块的形式存储,以便于操作。这个图书管理系统几乎里面所有的东西都是C语言课程所讲的,比如说链表的创建、删除、排序、添加,结构体的正确使用,文件的创建、存储、读取,指针的操作,函数之间参数的传递等等。在开始着手完成整个系统之前,我先写出了所有会用到的函数声明,同时根据系统的各级之间嵌套关系和调用关系确定了所有必须用到的和需要传递的参数,甚至预先还画出了流程图,我觉得这样的话思路会比较清晰,而不是写一点代码,再

6、想想会用到的东西。虽然这样,最后我还是发现了代码存在一些问题,因为写每个函数时没有单独调试,到最后还是稍显麻烦,同时也是因为层层嵌套的原因,导致一个地方改动的话,很多地方都要稍加改动,这些以后都可以稍加注意,可以提高自己的工作速率。对于自己着手的这个图书管理系统,我觉得功能实现的还是比较完善的,本参照一个真正的系统的使用情况,我对多方面都进行了考虑,也从用户自身的角度来对代码进行了相应的优化,比如每个一些函数结束之后会自动弹出功能菜单来提示操作者接下来可能要执行的各种操作,还有就是如果用户某一项操作没有成功之后,会清楚地提示让用户做出正确的选择,而不是程序死在一个地方或是毫无提示信息。不过仍然

7、有一些东西我觉得还有点欠缺,函数之间的嵌套关系导致了很多函数需要传入更多的参数、系统从链表读取数据之后是以二进制的形式来存入文件中的,这样虽然在数据量大的情况下能够提高程序的运行效率,但是操作者却不能像修改TXT文件那样直接在文件中修改数据,管理员要想更改数据还必须在运行系统之后调用相应的系统功能函数来实现更改操作,这样的话在数据量巨大的情况下略显繁琐。7 主要源代码#include #include #include #include #define STU sizeof(studentDat)#define BOK sizeof(info)#define stuNUM 10#define

8、boNUM 10typedef struct information char bookNum10; char bookNam50; char bookAut20; float bookPri; int status; struct information *next;info;typedef struct student char stuNam20; char number10; char passKey20; int borrowSta; char key; struct student *next;studentDat;void sysMenu (); /系统初级主菜单 void cho

9、Menu (); /登录账号界面studentDat *loadStu(); /载入学生数据Info *loadBo(); /载入图书数据void menuFir (char stuNumber, studentDat *Shead, info *Bhead, char manaLimit); /主要功能界面void borRet (info *Bhead, char stuNumber, studentDat *Shead, char manaLimit); /借还书界面 void findBo (info *Bhead, char stuNumber, studentDat *Shead,

10、 char manaLimit); /查询书籍studentDat *creatStu (); /创建学生数据Info *creatInfo(); /创建图书数据void stuDat(studentDat *Shead, char stuNumber); /学生状态信息void checkAcc (char stuNumber, studentDat *Shead, info *Bhead, char manaLimit); /登录账户检查void bottowBo (char number, info *Bhead, studentDat *Shead, char manaLimit);

11、/借书系统void returnBo (char number, info *Bhead, studentDat *Shead, char manaLimit); /还书系统 void print (info *Bhead); /全部显示void changeDat (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber); /更改系统数据void delStu (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber); /删除学生void addSt

12、u (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber); /增添学生void delBook (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber); /删除书籍void addBook (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber); /增添书籍void changeBo (info *Bhead, studentDat *Shead, char manaLim

13、it, char stuNumber); /更改图书数据void changeStu (info *Bhead, studentDat *Shead, char manaLimit, char stuNumber); /更改学生数据void changeAcc (char stuNumber, studentDat *Shead, info *Bhead, char manaLimit); /更改账户密码 void checkNam (info *Bhead); /按书名查找void checkNum (info *Bhead); /按编号查找void checkAut (info *Bhea

14、d); /按作者查找Int system(const char *string); /清屏操作int main(void) sysMenu (); return 0;void sysMenu () /系统初级菜单 int choise1; printf(n 欢迎使用图书管理系统 n); printf( - n); printf( - -n); printf( - 1.进入系统 | 0.退出系统 -n); printf( - -n); printf( - n); printf(n 请选择: ); scanf(%d, &choise1); while (choise1 != 0) if (choi

15、se1 = 1) system(cls); choMenu ( ); else printf(输入数据有误!请重输: ); scanf(%d, &choise1); if (choise1 = 0) exit(0); void choMenu () /登录账号界面 int choise2; char manaLimit, number10; studentDat *Shead; info *Bhead; printf(n 系统登录 n); printf( -n); printf( - -n); printf( - 1.管理员登录 -n); printf( - 2.普通账号登录 -n); pri

16、ntf( - 0.退出系统 -n); printf( - -n); printf( -n); printf(请选择: ); scanf(%d, &choise2); while (choise2 != 0) if (choise2 = 1) manaLimit = 1; checkAcc (number, Shead, Bhead, manaLimit); else if(choise2 = 2) manaLimit = 0; checkAcc (number, Shead, Bhead, manaLimit); else printf(输入数据有误!请重输: ); scanf(%d, &ch

17、oise2); exit(0);studentDat *loadStu() /载入学生数据 int n; FILE *fp; studentDat *head, *p1, *p2; fp = fopen(Account.dat, rb+); n = 0; p1 = p2 = (studentDat *)malloc(STU); fread(p1, STU, 1, fp); head = NULL; while (!feof(fp) if (n = 0) head = p1; n = n + 1; else p2- next = p1; p2 = p1; p1 = (studentDat *)m

18、alloc(STU); fread(p1, STU, 1, fp); p2- next = NULL; fclose (fp); return head;Info *loadBo() /载入图书数据 FILE *fp; info *head, *p1, *p2; int n; fp = fopen(bookInfo.dat, rb+); n = 0; p1 = p2 = (info *)malloc(BOK); fread(p1, BOK, 1, fp); head = NULL; while (!feof(fp) if (n = 0) head = p1; n = n + 1; else p

19、2- next = p1; p2 = p1; p1 = (info *)malloc(BOK); fread(p1, BOK, 1, fp); p2- next = NULL; fclose(fp); return head;void menuFir (char stuNumber, studentDat *Shead, info *Bhead, char manaLimit) /主要功能界面 int choise2; printf( |功能 菜单| n); printf( -n); printf( - -n); printf( - 1.查询书籍信息 -n); printf( - 2.借书与还

20、书 -n); printf( - 3.个人账户状态 -n); printf( - 4.修改账户信息 -n); printf( - 5.修改数据【权限】 -n); printf( - 0.返回上级菜单 -n); printf( - 6.注销登录 -n); printf( - -n); printf( -n); printf( 注:“1”- yes “0”- no n ); printf(n 请选择:n); scanf(%d, &choise2); if (choise2 = 6) exit(0); while (choise2 != 0) if (choise2 = 1) system(cls)

21、; findBo (Bhead, stuNumber, Shead, manaLimit); if (choise2 = 2) system(cls); borRet (Bhead, stuNumber, Shead, manaLimit); if (choise2 = 3) system(cls); stuDat(Shead, stuNumber); if (choise2 = 4) system(cls); changeAcc (stuNumber, Shead, Bhead, manaLimit); if (choise2 = 5) if (manaLimit = 0) system(c

22、ls); printf(很抱歉,你没有管理权限! 系统返回登录界面n); choMenu ( ); else system(cls); changeDat(Bhead, Shead, manaLimit, stuNumber); if (choise2 = 6) exit(0); printf(nnn); printf( |功能 菜单| n); printf( -n); printf( - -n; printf( - 1.查询书籍信息 -n); printf( - 2.借书与还书 -n); printf( - 3.个人账户状态 -n); printf( - 4.修改账户信息 -n); prin

23、tf( - 5.修改数据【权限】 -n); printf( - 0.返回上级菜单 -n); printf( - 6.注销登录 -n); printf( - -n); printf( -n); printf( 注:“1”- yes “0”- no n ); printf(n 请选择: ); scanf(%d, &choise2); system(cls); choMenu ();void borRet (info *Bhead, char stuNumber, studentDat *Shead, char manaLimit) /借还书界面 int choise4; printf(n |借书与

24、还书| n); printf( -n); printf( - -n); printf( - 1.书籍借阅 -n); printf( - 2.书籍归还 -n); printf( - 0.返回上级菜单 -n); printf( - -n); printf( -n); printf(n 请选择:n); scanf(%d, &choise4); while (choise4 != 0) if (choise4 = 1) system(cls); bottowBo (stuNumber, Bhead, Shead, manaLimit); if (choise4 = 2) system(cls); returnBo (stuNumber, Bhead, Shead, manaLimit); system(cls); menuFir (stuNumber, Shead, Bhead, manaLimit);void findBo (info *Bhead, char stuNumber, studentDat *Shead, char manaLimit) /查询书籍 int choise3; printf(n | 查询书籍 | n); printf( -

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1