《数据结构程序设计说明文档(共44页).docx》由会员分享,可在线阅读,更多相关《数据结构程序设计说明文档(共44页).docx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数据结构课题报告说明书日期MICROSOFT公司地址数据结构课题报告 指导教师: 揭安全 组长: 肖清泉 组员: 朱智红、苏彦洲 班级: 计算机科学与技术(正大) 专业: 计算机科学与技术(师范) 时间: 2015-01-202015-03-01 课程设计题目:图书管理系统 前言 图书馆管理系统或许众所周知,任何一个学校,有关单位似乎都需要这个类似的系统以此管理图书与读者借阅情况。借此,我们合作也做出一个系统,尽管可能有些逊色,但感觉还是可以。本系统总结了前人牛人的经验,剔除了其中的不足创造了自己独有的特色。传承了牛人的优点,经过我们仔细的观摩,思考后创造此系统。“书
2、上得来终觉浅,要知此事需躬行。”是呀!在没亲身动手去编写程序时,我总觉得我会了。书本上的我都懂了。可我真的懂了吗?答案是否定的。在编写过程中,会出现很多的问题,而这些问题你是在书本上是接触不到的。只有发现问题,解决问题,你才会有提高。在过去人们对信息管理的主要方式是基于文本、表格等纸质的手工处理之上的,而用手工进行图书借阅管理存在多种弊端,其中包括图书过于繁多,包含很多的信息数据的管理对于图书借阅情况如:借阅天数、超过限定借阅时间等等的统计和核实,往往采用对借阅卡的人工查询进行,对借阅天数等用人工计算、手抄进行。信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说缺乏系统、
3、规范的管理手段人们操控起来是很困难的;因此,使用电子化的管理手段将是大势所趋,建立一个图书管理系统也是图书管理部门提高工作效益的有效手段。系统能够合理高效地利用图书资源,使得图书借阅更加的科学合理。 目录第一章 需求分析与目的概述 - 041.1 需求分析概述- 041.2 系统功能分析- 04第二章 系统设计-043.1 系统功能模块设计-04 3.1.1 信息录入-05 3.1.2 学生菜单-05 3.1.3 老师菜单-06 3.1.4 图书管理员菜单-07 3.1.5 系统管理员菜单-093.2 逻辑结构设计-09 3.2.1 系统结构体设计-10 3.2.2 系统业务流程设计-13 3
4、.2.3 数据结构逻辑设计-14第三章 系统的实施-294.1 运行相关界面-29 4.1.1 登入界面-29 4.1.2 学生界面-314.1.3 教师界面-314.1.4 图书管理员界面-324.1.5 系统管理员界面-324.2 系统测试-334.2.1 学生测试-334.2.2 教师测试-334.3.4 图书管理员测试-344.4.4 系统管理员测试-34第四章 总结与体会-34第五章 参考文献-35 第一章 需求分析与目的概述 1.1 需求分析概述 我们组设计的是“图书管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的学号、姓名、
5、性别、专业、班级等等。在编写过程中主要运用C语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。 能够输入图书的综合情况和进行新书入库,对现有 图书信息修改以及删除; 能够实现对读者档案进行查询和编辑管理; 能够实现罚款记录,查询功能; 能够实现借阅历史的查询功能。1.2 系统功能分析 图书维护:为了保存好图书,读者的全部数据,本 系统将对每一本图书和每位读者的信息进行管 理。系统维护包括对各种表记录的修改,删除,添 加等操作。
6、 系统查询:可以对图书,借书信息,读者等相关信 息进行查 询。 增添或删除学生等有关读者信息。 其他操作:包括修改密码,添加读者等。 第二章 系统设计3.1 系统功能模块设计 3.1.1 信息录入 (一)绘制函数表如下: 函 数 功 能 操 作 简 述BOOK *creat_book(); 图书录入将图书信息采用链表存储STUDENT *creat_student(); 学生录入将学生信息存储TEACHER *creat_teacher(); 老师录入将老师信息存储TUSHU_ADMINISTRATION *creat_tushu_administration(); 图书管理员录入将图书管理员
7、信息存储XITONG_ADMINISTRATION *creat_xitong_administration(); 系统管理员录入将系统管理员信息存储READERBOOKS *creat_readerbooks(); 读者录入将读者信息存储(二)示意图如下:(1) 3.1.2 学生菜单 (一)绘制函数表如下: 函 数 功 能 操 作 简 述Void student_menu(BOOK *head1,STUDENT *r,STUDENT *head2,FILE*fp2,READERBOOKS *head6); 显示学生清单显示菜单void student_info(STUDENT *r); 学生
8、个人信息调用学生函数实现查学生信息void student_borrow(READERBOOKS *head6,STUDENT *r); 学生所借图书信息实现借书情况void student_borrowagain(READERBOOKS *head6,STUDENT *r);学生网上续借通过书名进行续借图书int student_changepassword(STUDENT *r); 学生更改密码通过学生更改原始密码void present_tushu_info(BOOK *head1); 查询图书信息查询书馆图书信息 (二)示意图如下:(2)3.1.3 老师菜单(一)绘制函数表如下: 函
9、数 功 能 操 作 简 述 void teacher_menu(TEACHER *s,TEACHER *head3,FILE *fp3,BOOK *head1,READERBOOKS *head6,TEACHER *tea); 教师清单显示教师菜单便于选择void teacher_info(TEACHER *s,TEACHER *head3,FILE *fp3,BOOK *head1,READERBOOKS *head6,TEACHER *tea); 教师个人信息显示教师个人基本信息void teacher_changexinxi(TEACHER *s,TEACHER *head3,FILE
10、*fp3,BOOK *head1,READERBOOKS *head6,TEACHER *tea); 教师更改自己信息调用教师信息函数,实现更改原有信息void teacher_changepassword(TEACHER *s,TEACHER *head3,FILE *fp3,BOOK *head1,READERBOOKS *head6,TEACHER *tea); 更改密码调用教师信息函数,实现更改原有密码void teacher_borowagin(TEACHER *s,TEACHER *head3,FILE *fp3,BOOK *head1,READERBOOKS *head6,TEA
11、CHER *teaa); 查询图书信息实现查询图书基本信息(二)示意图如下:(3) 3.1.4 图书管理员菜单(一)绘制函数表如下: 函 数 功 能 操 作 简 述void tushu_administration_menu(TUSHU_ADMINISTRATION *t,TUSHU_ADMINISTRATION *head4,FILE *fp4,BOOK *head1,READERBOOKS * head6);图书管理员菜单为实现图书管理员清单void tushu_administration_info(TUSHU_ADMINISTRATION *t);显示图书管理员信息实现该职工信息voi
12、d look_reader_borrow(READERBOOKS *head6); 查看读者借阅信息用于查询读者借阅情况int tushu_administration_changepassword(TUSHU_ADMINISTRATION *t);图书管理员更改密码调用函数实现更改自己密码void help_reader_borrow_lend(READERBOOKS *head6,BOOK *head1);为读者借还书籍实现读者借还书籍void present_tushu_info(BOOK *head1);显示图书信息通过链表查询图书信息,便于记录void book_in(BOOK *h
13、ead1);新书入库管理新书并入库void book_out(BOOK *head1);旧书出库管理新书并入库(二)示意图如下:(4)3.1.5系统管理员菜单(一)绘制函数表如下: 函 数 功 能 操 作 简 述void xitong_administration_menu(STUDENT *head2,TEACHER *head3,TUSHU_ADMINISTRATION *head4,XITONG_ADMINISTRATION *head5,FILE *fp5,XITONG_ADMINISTRATION *y);系统管理员菜单显示管理员菜单void xitong_administratio
14、n_info(XITONG_ADMINISTRATION *y);管理员基本信息调用函数实现管理员信息查询int xitong_administration_changepassword(XITONG_ADMINISTRATION *y);管理员修改密码实现管理员的自己密码void xitong_administration_find_reader(STUDENT *head2,TEACHER *head3,TUSHU_ADMINISTRATION *head4);查看读者和职工查用户的信息便于登记和保存void xitong_administration_add_or_delete_read
15、er(STUDENT *head2,TEACHER *head3,TUSHU_ADMINISTRATION *head4);增删读者或职工信息调用相关函数删除已不存在的用户和新添用户(二) 示意图如下:系统管理员菜单查询个人信息 系 统 管 理 员 功 能修改密码查询用户信息增删用户信息3.2 逻辑结构设计 3.2.1 系统结构体设计/*结构体如下,存储图书,学生教师,管理员等信息*/typedef struct date1 int year; int mouth; int day;DATE1;日期/*图书结构体*/typedef struct book char categoryN;/书的类
16、别 int every_leibie_shu_totalcount;/每一类别不同书的样式总数 DATE1 books_in_libraryN;/书入库时间 char tushubianhaoNN;/书的编号 char shumingNN;/书的名字 int totalCountN;/该书共有多少本 int leftCountN;/剩余本数 double priceN;/书的价格 char authorNN;/书的作者 char publishing_companyNN;/书的出版社 struct book *next1;BOOK;/*学生结构体*/typedef struct student
17、 char studentIDN; char studentNameN; char passwordN; char studentSexN; char TellN; char xueyuanN; char majorN; char ClassN; char student_emailN; struct student *next2;STUDENT;/*教师结构体*/typedef struct teacher char teacherIDN; char teacherNameN; char teacherPasswordN; char teacherSexN; char teacherTell
18、N; char teacherPositionN; char teacher_emailN; struct teachar *next3;TEACHER;/*图书管理员结构体*/typedef struct tushu_administration char tushu_administrationIDN; char tushu_administrationNameN; char tushu_administrationPasswordN; char tushu_administrationSexN; char tushu_administrationTellN; char tushu_adm
19、inistration_emailN; struct tushu_administration *next4;TUSHU_ADMINISTRATION;/*系统管理员结构体*/typedef struct xitong_administration char xitong_administrationIDN; char xitong_administrationNameN; char xitong_administrationPasswordN; char xitong_administrationSexN; char xitong_administrationTellN; struct xi
20、tong_administration *next5;XITONG_ADMINISTRATION;typedef struct date2 int year; int mouth; int day;DATE2;/*读者结构体*/typedef struct readerBooks char readerIDN;/读者ID int total_bookCount;/共借多少本 DATE2 borrowed_BooksTimeN;/借书的日期,二次借记第二次的 DATE2 Return_BooksTimeN;/还书的日期 char readerBooksNN;/借的图书名字 int reader_
21、BooksTimesN;/该书被本人连续借的次数 struct readerBooks *next6;READERBOOKS;3.2.2 系统业务流程设计(一) 首先,设计登入界面,供用户登入;(二) 设计用户菜单便于用户登入后可选择;(三) 实现各菜单功能供用户实现各功能;(四) 退出系统。(五)具体流程图如下图所示; 注 销 学生菜单 登 入学生 老师菜单 老师图书管理员菜单学生 图书管理员 系统管理员菜单 系统管理员 图书管理员业务流程 3.2.3 数据结构逻辑设计本系统中主要采用的数据结构是链表的基本操作,增,删,改,查等基本相关操作的实现,目的在于熟练掌握链表的基本操作,其实也只用到
22、了链表操作,其他数据结构知识暂时还用不上。 如:(1)下为学生查找个人信息,所用的是链表的查操作。/查询生个人信息void student_info(STUDENT *r) system(cls); printf(nn); printf(tt* * * * * * * 学 生 个 人 信 息 * * * * * * * *n); printf(tt- - - - - - - - - - - - - - - - - - - - - - - -nn); printf(tt学 号:%s,r-studentID); printf(tt邮箱:%snn,r-student_email); printf(t
23、t姓 名:%s,r-studentName); printf(tt联 系 方 式:%snn,r-Tell); printf(tt性 别:%s,r-studentSex); printf(tt学 院:%snn,r-xueyuan); printf(tt班 级:%s,r-Class); printf(t专 业:%snn,r-major); printf(tt- - - - - - - - - - - - - - - - - - - - - - - -n); printf(tt* * * * * * * * * * * * * * * * * * * * * * * *); printf(ntt按
24、任 意 键 返 回 学 生 菜 单!);(2)有如下为链表的更改操作,实现老师的更改密码:void teacher_changepassword(TEACHER *s,TEACHER *head3,FILE *fp3,BOOK *head1,READERBOOKS *head6,TEACHER *tea) TEACHER *p; p = head3;char ch1;int j=0,j1=0; fclose(fp3); system(cls); char a,d,bN,cN,eN; printf(n是否修改密码N or Y?); scanf( %c,&a); if(a=y|a=Y) do sy
25、stem(cls); printf(输入旧的密码:); scanf(%s,b); while(strcmp(s-teacherPassword,b)!=0); m2: printf(n输入新的密码:);j=0; while(ch1 = getch() != r) if (ch1 = BACKSPACE) if (j 0) e-j = NULL; printf(b ); printf(%c%c%c, BACKSPACE, , BACKSPACE); else putchar(7); /bell else ej+ = ch1; printf(*); ej = 0; printf(nn再次确认密码:
26、); j1=0; while(ch1 = getch() != r) if (ch1 = BACKSPACE) if (j1 0) c-j1 = NULL; printf(b ); printf(%c%c%c, BACKSPACE, , BACKSPACE); else putchar(7); /bell else cj1+ = ch1; printf(*); cj1 = 0; if(strcmp(e,c) goto m2; strcpy(s-teacherPassword,c); if(remove(教师信息)=0) if(fp3=fopen(教师信息,wb)=NULL) printf(ca
27、nnot open file,press any key to exit!); getch(); exit(1); do fwrite(p,sizeof(TEACHER),1,fp3); p = p-next3;while(p); fclose(fp3); printf(nn修改密码成功!); printf(nn你修改的密码为:%s 请记住!,c); printf(nn是否继续N or Y:); scanf( %c,&d); if(d=y|d=Y) system(cls); teacher_menu(s,head3,fp3,head1,head6,tea); else system(cls);
28、 teacher_menu(s,head3,fp3,head1,head6,tea); else system(cls); teacher_menu(s,head3,fp3,head1,head6,tea); (3)又如以下为链表的增加操作的实现新图书入库:/新书入库void book_in(BOOK *head1) system(cls); int count = 0,i,flag; char code10,tushu_leibie10; BOOK *pre,*p,*q; pre = head1; p = head1-next1; printf(ttt_ _ _ _ 新 书 入 库 清 单
29、_ _ _ _n); o:q = (BOOK*)malloc(sizeof(BOOK); printf(nttt请 输 入 图 书 类 别 :); scanf(%s,q-category); while(p-next1) if(strcmp(p-category,q-category)=0)break; p = p-next1; count+; if(count = 20) q-every_leibie_shu_totalcount = 0; printf(nttt请 输 入 书 入 库 时 间 :); scanf(%d,&q-books_in_library0.year); scanf(%d
30、,&q-books_in_library0.mouth); scanf(%d,&q-books_in_library0.day); printf(nttt请 输 入 该 书 类 别 号 :); scanf(%s,&q-tushubianhao0); printf(nttt请 输 入 该 书 书 名 :); scanf(%s,&q-shuming0); printf(nttt请 输 入 该 书 总 数 :); scanf(%d,&q-totalCount0); printf(nttt请 输 入 该 书 余 数 :); scanf(%d,&q-leftCount0); printf(nttt请 输
31、 入 该 书 价 格 :); scanf(%lf,&q-price0); printf(nttt请 输 入 该 书 作 者 :); scanf(%s,&q-author0); printf(nttt请 输 入 该 书 出 版 商:); scanf(%s,&q-publishing_company0); q-every_leibie_shu_totalcount+; q-next1=NULL; q-next1 = pre-next1; pre-next1 = q; else printf(nttt请 输 入 书 入 库 时 间 :); scanf(%d,&p-books_in_libraryp-
32、every_leibie_shu_totalcount.year); scanf(%d,&p-books_in_libraryp-every_leibie_shu_totalcount.mouth); scanf(%d,&p-books_in_libraryp-every_leibie_shu_totalcount.day); printf(nttt请 输 入 该 书 类 别 号 :); scanf(%s,&p-tushubianhaop-every_leibie_shu_totalcount); printf(nttt请 输 入 该 书 书 名 :); scanf(%s,&p-shuming
33、p-every_leibie_shu_totalcount); printf(nttt请 输 入 该 书 总 数 :); scanf(%d,&p-totalCountp-every_leibie_shu_totalcount); printf(nttt请 输 入 该 书 余 数 :); scanf(%d,&p-leftCountp-every_leibie_shu_totalcount); printf(nttt请 输 入 该 书 价 格 :); scanf(%lf,&p-pricep-every_leibie_shu_totalcount); printf(nttt请 输 入 该 书 作 者
34、 :); scanf(%s,&p-authorp-every_leibie_shu_totalcount); printf(nttt请 输 入 该 书 出 版 商:); scanf(%s,&p-publishing_companyp-every_leibie_shu_totalcount); p-every_leibie_shu_totalcount+; printf(nnttt继 续 入 库 请 按 1 ,否 则 按 0 返 回); scanf(%d,&flag); if(flag = 1) goto o;(4) 实现链表的删操作,实现旧书的出库:void book_out(BOOK *he
35、ad1) system(cls); int i,j,flag; char leibieN,tushu_nameN; BOOK *pre,*p,*q; pre = head1 ; p = pre-next1; printf(nntto o o 图 书 出 库 清 单 !o o o ); flag:printf(nnttt请 输 入 要 删 除 的 图 书 类 别 :); scanf(%s,&leibie); while(p-next1) if(strcmp(leibie,p-category) = 0)break; p = p-next1; printf(nnttt请输入图书名字:); scanf(%s,&tushu_name);