c语言课程设计报告图书管理系统

上传人:痛*** 文档编号:102961037 上传时间:2022-06-07 格式:DOC 页数:62 大小:135KB
返回 下载 相关 举报
c语言课程设计报告图书管理系统_第1页
第1页 / 共62页
c语言课程设计报告图书管理系统_第2页
第2页 / 共62页
c语言课程设计报告图书管理系统_第3页
第3页 / 共62页
点击查看更多>>
资源描述
第一章1.1题目描述图书管理系统设计:【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。试设计一图书管理系统,使之能提供以下功能:(1) 新图书基本信息的输入;(2) 图书基本信息的查询;(3) 对撤销图书信息的删除;(4) 办理借书手续;(5) 办理还书手续;【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同数字代表借还状态。借书和还书手续要注意修改结构体的成员变量存在状态的值。1.2算法设计1设计思想:在整个系统编写的过程中,涉和了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。 2实现注释:这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。在处理过程中各项可以作为一本图书的不同属性来进行处理。3 结构体系设计 图1.1:主函数结构;图1.2:新书信息录入流程;图1.3:图书信息查询(管理员)流程;图1.4:图书信息查询(学生)流程;图1.5:图书信息删除流程;图1.6:办理借书手续流程;图1.7:办理还书手续流程;1.3程序设计和代码分析1程序设计:下面,我大致介绍一下我的系统的主要功能和注意事项:当运行此程序时,首先进入系统主界面,然后可以选择1.管理员登陆(密码:123),2.学生登陆,0.退出系统;选择1后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。管理员功能菜单中,1.新书信息录入,2.图书信息查询,3.图书信息删除,4.返回主菜单,0.退出系统;当出现“请选择”时,输入选项前的数字,输完之后按回车(下同)。首次运行系统需要先选择1录入库存书籍信息,图书各信息项须用空格键隔开,输入完毕后信息自动储存并更新至数据库,然后再选择其他操作。当选择3时会进入图书信息删除,在这里可以选择删除图书信息等操作,需要注意的是每次执行删除操作需要手动选择保存图书信息的操作,不然磁盘文件信息不会改变。选择2后进入学生系统,然后显示学生功能菜单,按数字键选择所需服务。学生功能菜单中,1.图书信息查询,2.办理借书手续,3.办理函数手续,4.返回主菜单,0.退出系统;当出现“请选择”时,输入选项前的数字。当进入办理借书和还书手续功能时需要注意的是每次执行操作需要手动选择确认等操作,否子磁盘文件信息不会改变。所有信息最后均以磁盘文件方式保存,而且格式固定,输入和输出均按这种格式,用户在使用时必须要按这种格式输入,否则会出现文件信息错误。2 代码分析:/*源程序代码*/#include#include#include#define LONG sizeof(struct Book)struct Bookchar title100;char author50;char press100;char year5;char claim_number30;int collection;int can_borrow;char unit_price10;char student_name50;char sex5;char student_id20;long long int number;/*函数声明*/void main_meun();/【主界面函数】void manager_menu();/【管理员功能界面函数】void student_meun();/【学生功能界面函数】int book_add(int back);/【新书信息录入函数】int search_2(int back);/【图书信息查询(学生版)】int search_1(int back);/【图书信息查询函数(管理员版)】int search_number(int back);/【按编号查询函数(管理员版)】int search_title(int back);/【按书名查询函数(管理员版)】void search_menu();/【图书查询函数界面(管理员版)】int book_delete(int back);/【图书信息删除函数】int borrow(int back);/【办理借书手续函数】int return_book(int back);/【办理还书手续函数】/*主函数*/int main()int a,b,c,z;int back=0,back2=0,back3=0;A:system(cls);/A为一个标志位,用于从子函数返回主界面back=0;back2=0;back3=0;main_meun();/【主界面函数】while(1)/主程序循环运行scanf(%d,&a);switch(a)case 1:/进入管理员界面printf(登陆密码【123】:);scanf(%d,&z);if(z!=123)goto A;B:system(cls);/B为一个标志位,用于从子函数返回管理员功能界面back=0;back2=0;back3=0;manager_menu();/【管理员功能界面函数】while(1)scanf(%d,&b);switch(b)case 1:back2=book_add(back2);if(back2=1)goto B;/进入新书信息录入case 2:back2=search_1(back2);if(back2=1)goto B;/进入图书信息查询case_3:back2=book_delete(back2);if(back2=1)goto B;/进入图书信息删除case 4:goto A;/返回主菜单case 0:/退出系统system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);break;case 2:/进入学生界面C:system(cls);/C为一个标志位,用于从子函数返回学生功能界面back=0;back2=0;back3=0;student_meun();/【学生功能界面函数】while(1)scanf(%d,&c);switch(c)case 1: back3=search_2(back3);if(back3=1)goto C; /进入图书信息查询case 2: back3=borrow(back3);if(back3=1)goto C; /办理借书手续case 3: back3=return_book(back3);if(back3=1)goto C; /办理还书手续case 4:goto A;/返回主菜单case 0:/退出系统system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);break;case 0:/退出系统system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);/*其他函数*/void main_meun()/【主界面函数】printf( =n);printf( | |n);printf( | 欢迎使用图书管理系统 |n);printf( | |n);printf( | |n);printf( | 1.管理员登陆 2.学生登陆 0.退出系统 |n);printf( | |n);printf( =n);printf(请选择:);void manager_menu()/【管理员功能界面函数】printf( =n);printf( | |n);printf( | 1.新书信息录入 |n);printf( | |n);printf( | 2.图书信息查询 |n);printf( | |n);printf( | 3.图书信息删除 |n);printf( | |n);printf( | 4.返回主菜单 |n);printf( | |n);printf( | 0.退出系统 |n);printf( | |n);printf( =n);printf(请选择:);void student_meun()/【学生功能界面函数】 printf( =n);printf( | |n);printf( | 1.图书信息查询 |n);printf( | |n);printf( | 2.办理借书手续 |n);printf( | |n);printf( | 3.办理还书手续 |n);printf( | |n);printf( | 4.返回主菜单 |n);printf( | |n);printf( | 0.退出系统 |n);printf( | |n);printf( =n);printf(请选择:);int book_add(int back)/【新书信息录入函数】 FILE *fp; struct Book *p1; long long int a,b; int n; fp=fopen(图书信息数据库.txt,a+); if(fp=NULL)printf(数据库打开错误!请检查.n);exit(0); while(1)A:system(cls);/A为一个标志位,用于返回本函数首界面p1=(struct Book*)malloc(LONG);fseek(fp,-11,SEEK_END);fscanf(fp,%lld,&a);if(anumber=a+1;strcpy(p1-student_id,未知);strcpy(p1-student_name,未知);strcpy(p1-sex,未知);scanf(%s %s %s %s %s %s %d,p1-title,p1-author,p1-press,p1-year,p1-claim_number,p1-unit_price,&p1-collection);p1-can_borrow=p1-collection;fprintf(fp,%s %s %s %s %s %s %d %d %s %s %s %lldn,p1-title,p1-author,p1-press,p1-year,p1-claim_number,p1-unit_price,p1-collection,p1-can_borrow,p1-student_name,p1-sex,p1-student_id,p1-number);fflush(fp);if(1collection)for(b=2;bcollection;b+)p1-number=a+b;fprintf(fp,%s %s %s %s %s %s %d %d %s %s %s %lldn,p1-title,p1-author,p1-press,p1-year,p1-claim_number,p1-unit_price,p1-collection,p1-can_borrow,p1-student_name,p1-sex,p1-student_id,p1-number);fflush(fp);printf(a);printf( -n);printf( 1.继续录入 2.结束录入 n);printf( -n);printf(请选择:);scanf(%d,&n);switch(n)case 1:goto A;case 2:fclose(fp);back=1;return(back);int search_2(int back)/【进入图书信息查询(学生版)】FILE *fp;char title100;struct Book *p;int a1=0,b1;A:system(cls);/A为一个标志位,用于返回本函数首界面back=0;printf(请输入书名:);scanf(%s,title);fp=fopen(图书信息数据库.txt,r);if(fp=NULL)printf(数据库打开错误!请检查.n);exit(0);p=(struct Book*)malloc(LONG);while(!feof(fp)fscanf(fp,%s %s %s %s %s %s %d %d %s %s %s %lldn,p-title,p-author,p-press,p-year,p-claim_number,p-unit_price,&p-collection,&p-can_borrow,p-student_name,p-sex,p-student_id,&p-number);if(strcmp(title,p-title)=0)a1=1;printf(=n);printf(书名 作者 出版社 年份 索取号 馆藏 可借n);printf(-n);printf(%-28s%-8s%-19s%-6s%-11s%-5d%dn,p-title,p-author,p-press,p-year,p-claim_number,p-collection,p-can_borrow);break;if(a1=1)fclose(fp);printf(n);printf( -n);printf( 1.继续搜索 2.返回学生功能菜单 0.退出系统 n);printf( -n);printf(请选择:);scanf(%d,&b1);while(1)switch(b1)case 1:goto A;break;case 2:return(back=1);case 0:system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);if(a1=0)fclose(fp);printf(a n 未找到与条件相符的图书!nn);printf( -n);printf( 1.继续搜索 2.返回学生功能菜单 0.退出系统 n);printf( -n);printf(请选择:);scanf(%d,&b1);while(1)switch(b1)case 1:goto A;break;case 2:return(back=1);case 0:system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);int search_1(int back)/【进入图书信息查询函数(管理员版)】int a,back3; A:system(cls);/A为一个标志位,用于返回本函数首界面back=0;back3=0;search_menu();scanf(%d,&a);while(1)switch(a)case 1:back3=search_number(back3);if(back3=1)goto A;/进入编号查询case 2:back3=search_title(back3);if(back3=1)goto A;/进入书名查询case 3:return(back=1);int search_number(int back)/【按编号查询函数(管理员版)】FILE *fp;long long int number;struct Book *p;int b1;A:system(cls);/A为一个标志位,用于返回本函数首界面back=0;printf(请输入图书编号(数字):);scanf(%lld,&number);fp=fopen(图书信息数据库.txt,r);if(fp=NULL)printf(数据库打开错误!请检查.n);exit(0);p=(struct Book*)malloc(LONG);while(1)if(feof(fp)fclose(fp);printf(an 未找到与条件相符的图书!nn);printf( -n);printf( 1.继续搜索 2.返回上一级菜单 0.退出系统 n);printf( -n);printf(请选择:);scanf(%d,&b1);while(1)switch(b1)case 1:goto A;break;case 2:return(back=1);case 0:system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);fscanf(fp,%s %s %s %s %s %s %d %d %s %s %s %lldn,p-title,p-author,p-press,p-year,p-claim_number,p-unit_price,&p-collection,&p-can_borrow,p-student_name,p-sex,p-student_id,&p-number);if(number=p-number)fclose(fp);printf(=nn);printf( %-6s%-12lld%-8s%-12s%-6s%-8s%s%snn,编号:,p-number,索取号:,p-claim_number,年份:,p-year,单价:,p-unit_price);printf( 书名:%snn,p-title);printf( %-6s%-12s%s%snn,作者:,p-author,出版社:,p-press);printf( %-6s%-12d%s%dnn,馆藏:,p-collection,可借:,p-can_borrow);printf( 借书人信息| %-6s%-10s%-6s%-7s%-7s%snn,姓名:,p-student_name,性别:,p-sex,学号:,p-student_id);printf(=n);printf( -n);printf( 1.继续搜索 2.返回上一级菜单 0.退出系统 n);printf( -n);printf(请选择:);scanf(%d,&b1);while(1)switch(b1)case 1:goto A;break;case 2:return(back=1);case 0:system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);int search_title(int back)/【按书名查询函数(管理员版)】FILE *fp;char title100;struct Book *p;int a1,b1;A:system(cls);/A为一个标志位,用于返回本函数首界面back=0;a1=0;printf(请输入书名:);scanf(%s,title);fp=fopen(图书信息数据库.txt,r);if(fp=NULL)printf(数据库打开错误!请检查.n);exit(0);p=(struct Book*)malloc(LONG);while(!feof(fp)fscanf(fp,%s %s %s %s %s %s %d %d %s %s %s %lldn,p-title,p-author,p-press,p-year,p-claim_number,p-unit_price,&p-collection,&p-can_borrow,p-student_name,p-sex,p-student_id,&p-number);if(strcmp(title,p-title)=0)a1=1;printf(=nn);printf( %-6s%-12lld%-8s%-12s%-6s%-8s%s%snn,编号:,p-number,索取号:,p-claim_number,年份:,p-year,单价:,p-unit_price);printf( 书名:%sn,p-title);printf( %-6s%-12s%s%snn,作者:,p-author,出版社:,p-press);printf( %-6s%-12d%s%dn,馆藏:,p-collection,可借:,p-can_borrow);printf( 借书人信息| %-6s%-10s%-6s%-7s%-7s%snn,姓名:,p-student_name,性别:,p-sex,学号:,p-student_id);printf(=n);if(a1=1)fclose(fp);printf( -n);printf( 1.继续搜索 2.返回上一级菜单 0.退出系统 n);printf( -n);printf(请选择:);scanf(%d,&b1);while(1)switch(b1)case 1:goto A;break;case 2:return(back=1);case 0:system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);if(a1=0)fclose(fp);printf(a n未找到与书名相符的图书!nn);printf( -n);printf( 1.继续搜索 2.返回上一级菜单 0.退出系统 n);printf( -n);printf(请选择:);scanf(%d,&b1);while(1)switch(b1)case 1:goto A;break;case 2:return(back=1);case 0:system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);void search_menu()/【图书查询函数界面(管理员版)】 printf( =n);printf( | |n);printf( | 1.按图书编号查询 |n);printf( | |n);printf( | 2.按图书名称查询 |n);printf( | |n);printf( | 3.返回上一级菜单 |n);printf( | |n);printf( =n);printf(请选择:);int book_delete(int back)/【图书信息删除函数】FILE *fp;char title100,d100;struct Book n1000;int i,j;struct Book *p;int a,b,c,e,f;A:system(cls);/A为一个标志位,用于返回本函数首界面back=0,i=0,j=0,b=0,a=0;printf(请输入书名:);scanf(%s,title);fp=fopen(图书信息数据库.txt,r);if(fp=NULL)printf(数据库打开错误!请检查.n);exit(0);p=(struct Book*)malloc(LONG);while(!feof(fp)fscanf(fp,%s %s %s %s %s %s %d %d %s %s %s %lldn,p-title,p-author,p-press,p-year,p-claim_number,p-unit_price,&p-collection,&p-can_borrow,p-student_name,p-sex,p-student_id,&p-number);if(strcmp(title,p-title)=0)a=1;if(strcmp(p-student_name,未知)!=0)b=1;printf(=nn);printf( %-6s%-12lld%-8s%-12s%-6s%-8s%s%snn,编号:,p-number,索取号:,p-claim_number,年份:,p-year,单价:,p-unit_price);printf( 书名:%sn,p-title);printf( %-6s%-12s%s%snn,作者:,p-author,出版社:,p-press);printf( %-6s%-12d%s%dn,馆藏:,p-collection,可借:,p-can_borrow);printf( 借书人信息| %-6s%-10s%-6s%-7s%-7s%snn,姓名:,p-student_name,性别:,p-sex,学号:,p-student_id);printf(=n);fclose(fp);if(b=1)fclose(fp);printf(a nn此书正在出借,无法删除信息!nn);printf( -n);printf( 1.重新搜索 2.返回管理员功能菜单 0.退出系统 n);printf( -n);printf(请选择:);scanf(%d,&b);while(1)switch(b)case 1:goto A;break;case 2:return(back=1);case 0:system(cls);printf( -n);printf( -= 感谢使用,再见! =- n);printf( -n);exit(0);if(a=1&b!=1)printf(ann 确认删除?n);printf( -n);printf( 1.是 2.否 n);printf( -n);scanf(%d,&c);while(1)switch(c)case 1:fp=fopen(图书信息数据库.txt,r);if(fp=NULL)printf(数据库打开错误!请检查.n);exit(0);while(!feof(fp)fscanf(fp,%s %s %s %s %s %s %d %d %s %s %s %lldn,&ni.title,&ni.author,&ni.press,&ni.year,&ni.claim_number,&ni.unit_pr
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!