第一章
§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
#define LONG sizeof(struct Book) struct Book {
char title[100]; char author[50]; char press[100]; char year[5];
char claim_number[30]; int collection; int can_borrow;
char unit_price[10]; char student_name[50]; char sex[5];
char student_id[20]; 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(\为一个标志位,用于从子函数返回主界面 back=0;back2=0;back3=0;
main_meun();//【主界面函数】 while(1)//主程序循环运行 {
scanf(\ switch(a) {
case 1://进入管理员界面 {
printf(\登陆密码【123】:\ scanf(\ if(z!=123)goto A;
B:system(\为一个标志位,用于从子函数返回管理员功能界面 back=0;back2=0;back3=0;
manager_menu();//【管理员功能界面函数】 while(1) {
scanf(\ 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(\ printf(\
------------------------------------------------------------\\n\
printf(\感谢使用,再见! =- \\n\
printf(\
------------------------------------------------------------\\n\ exit(0); } } } }break;
case 2://进入学生界面 {
C:system(\为一个标志位,用于从子函数返回学生功能界面
back=0;back2=0;back3=0;
student_meun();//【学生功能界面函数】 while(1) {
scanf(\ 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(\ printf(\
------------------------------------------------------------\\n\
printf(\感谢使用,再见! =- \\n\
printf(\
------------------------------------------------------------\\n\ exit(0); } } } }break;
case 0://退出系统 {
system(\ printf(\
------------------------------------------------------------\\n\
printf(\感谢使用,再见! =- \\n\
printf(\
------------------------------------------------------------\\n\ exit(0); } } } }
/**********其他函数**********/ void main_meun()//【主界面函数】 {
printf(\
printf(\ printf(\欢迎使用图书管理系统 |\\n\ printf(\ printf(\ printf(\管理员登陆 [2].学生登陆 [0].退出系统 |\\n\ printf(\ printf(\ printf(\请选择:\}
void manager_menu()//【管理员功能界面函数】 {
printf(\ printf(\ printf(\新书信息录入 |\\n\ printf(\ printf(\图书信息查询 |\\n\ printf(\ printf(\图书信息删除 |\\n\ printf(\ printf(\返回主菜单 |\\n\ printf(\ printf(\退出系统 |\\n\ printf(\ printf(\ printf(\请选择:\}
void student_meun()//【学生功能界面函数】 {
printf(\ printf(\ printf(\图书信息查询 |\\n\ printf(\ printf(\办理借书手续 |\\n\ printf(\ printf(\办理还书手续 |\\n\ printf(\ printf(\返回主菜单 |\\n\ printf(\ printf(\退出系统 |\\n\ printf(\ printf(\ printf(\请选择:\}
int book_add(int back)//【新书信息录入函数】 {