版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 报 告课 程 名 称: 程序设计实践 专 业 班 级 : 计科1401 学 生 姓 名 : 牛草原 学 号 : 201416010101 任 课 教 师 : 张玉宏 学 期 :2013-2014学年第二学期 课程报告任务书题 目图书信息管理系统主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:(1)图书信息录入功能(图书信息用文件保存)输入v(2)图书信息浏览功能输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式): l按书名查询 按
2、作者名查询 按照价钱排序 按出版时间排序等等(4)图书信息的删除与修改扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加上学生信息和借阅信息的管理,并扩充为图书借阅系统。(4)模糊查询 (5)综合查询 (6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。任务要求一、提交材料应包括:(1)系统源代码 (2)课程报告二、整个设计过程具体要求(1)需求分析 要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;(2)设计过程 要求学生进一步明确各模
3、块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。成绩评定报告撰写情况(30分)系统完成情况(30分)答辩情况(40分)总分内容20分规范程度5分程序测试5分基本功能20分扩展功能10分自述情况10分答辩情况30分成绩评定教师: 目 录 引 言.3 绪 论.31 需求分析.32 概要设计.5 2.1数据结构.5 2.2数据需求.5 2.3模块划分.5 2.4程序总体框架.6 三.详细设计.6 3.1登陆界面.7 3.2功能服务.2
4、1 四.调试分析.48 五.程序不足与改进.49 六.课程心得总结.49 引 言 经过对程序设计题目的分析可知,整个程序的设计实现大致可以分为五个模块,其中每个模块对应一个函数,他们分别是:图书的添加函数void add_book(void); 删除图书的函数void delete_book(void);查询图书的函数void inquire_book(void);对图书进行修改的函数void revise_book(void);以及对图书进行排序的函数void sort_book(void);在这几个函数中,其功能的实现严格按照题目的要求:1 图书信息录入函数:主要功能是从键盘上输入图书信息
5、并将其写入文件中,作为图书馆的书库。以便对以下的函数进行运行,此函数应是整个程序的基础。2 查询图书函数:主要功能是按照一定的图书特征(图书名,图书作者)先将图书查询到。3 删除图书函数: 主要功能是将已存图书按照一定的图书特征(图书编号,图书名,图书作者,图书出版日期等)先将图书查询到,然后删除。4 图书排序函数: 主要功能是将已存图书按照一定的图书特征将图书进行详细的排序,具体可以分为按图书名排序,按图编号排序;按图书出版日期排序,按图书价格排序。5 图书的修改函数:功能是将已录入的图书的编号,作者,出版日期,价钱等进行修改。6退出函数:该函数主要实现退出运行界面的功能。绪 论整个程序的设
6、计实现大致可以分为五个模块,其中每个模块对应一个函数,他们分别是:图书的添加函数void add_book(void); 删除图书的函数void delete_book(void);查询图书的函数void inquire_book(void);对图书进行修改的函数void revise_book(void);以及对图书进行排序的函数void sort_book(void);1 需求分析开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息。使之能提供以下基本功能:(1)图书信息录入功能(图书信息用文件保存)输入v(2)图书信息浏览功能输出(3)查询
7、功能、排序功能: l按书名查询 按作者名查询 按照价钱排序 按出版时间排序(4) 图书信息的删除与修改(5) 学生登录和管理员登陆(6) 退出系统程序扩展:(7) 管理员功能:学生信息管理 1:学生卡添加2:学生卡信息查询3:学生卡密码查询4:学生卡删除图书信息管理(8)学生功能:图书信息查询通过此次课程设计,可以使我们增强自己的动手能力,并可以使自己编写的程序与程序之间的衔接更为自然,同时可以提高我们使用计算机解决实际问题的能力,了解并掌握C语言开发程序的全过程。此外还可以较为综合地提高自己C语言编程能力及调试能力和自己对C语言语法的进一步认知,为自己的后续课程打好基础。二 概要设计2.1
8、数据结构该程序设计采用结构体和文件操作,用于实现对图书信息的存储,修改,查询及排序等功能。2.2 数据需求 该程序需要系统输入及输出图书的编号,图书名,图书作者,图书出版日期以及图书价格等数据。2.3 模块划分 该程序总体上分为6个模块,分别为:学生登录系统模块,管理员登陆系统模块,图书信息录入模块,图书信息修改模块,图书信息删除模块,图书信息查询模块及图书信息排序模块,学生卡添加模块,学生卡删除模块,学生卡信息查询模块,学生卡密码查询模块。其中图书信息查询模块分为按书名查询,作者名字查询。图书排序系统分为按图书编号排序,按图书价格排序,按图书出版时间排序。各个模块之间相互独立但彼此之间有相互
9、依附,通过彼此之间有规律的相互调用及参数的传递从而实现整个程序较为综合的功能。简言之:(1)void main_menu(void); 主菜单(2)void student(void); 学生登录函数 (3)int stu_login(void);学生登录验证 (4)void stu_find(void); 学生图书查询函数1. void book_search_name(void);书名查找2. void book_search_author(void);作者查找 3.void inquire_book(void); 查询图书(输出所有图书) (5)void administrar(void
10、);管理员登录模块 (6)int adm_login(void);管理员登录验证 (7)void ad_st_menu(void); 学生信息管理菜单1.void add_card(void); 申请新学生卡2.void delete_card(void); 删除学生卡3.void passwordlookup(void); 学生卡密码查询4.void inquire_stu(void);查询学生卡(输出所有学生卡信息)(8)void ad_bk_menu(void); 图书信息管理菜单1.void add_book(void); 添加图书2.void delete_book(void); 删
11、除图书3.void revise_book(void); 修改图书4.void inquire_book1(void);输出所有图书,管理员使用。5.void sort_book(void); 图书排序菜单.void sort_book_num(void); 图书排序编号.void sort_book_price(void); 图书排序价格.void sort_book_time(void);图书排序出版时间2.4 程序总体框架(如图2.4-1) 主界面 退出学生登录学生登录管理员 登 陆图书管理学生信息管理 图书查询查询图书按作者查找按书名查找输出所有图书修改图书删除图书添加图书查询学生卡查
12、询卡号密码删除卡号申请新卡号图书排序按编号排序按出版时间排序按价格排序图2.4-1三 详细设计3.1登陆界面: (1) 基本介绍:用户进入当用户选择进入登录界面时(如图3.1.4-1所示),该界面会显示出“欢迎使用草原图书管理系统”字样和一个图书馆的图案,然后用户可以选择:学生登录,管理员登陆和退出系统。选择学生登录时(如图3.1.4-2所示)需要登录学生卡号和密码经行身份验证。选择管理员登录时(如图3.1.4-3所示)需要登录管理员账号和登录密码。而当用户选择退出系统时,按任意键系统退出(如图3.1.4-4所示)。进入身份鉴定界面时,需要输入用户名及密码,允许输入三次密码。 (2) 程序解析
13、: 首先,使用了基本的输入输出的标准库函数printf与scanf函数,将所需的提示语输出并实现用户选择的输入。之后,用switch语句选择判断用户输入的操作,以确定后续操作。其中在提示文字的排版上,我使用的是用空格键来做调整,这样做虽然麻烦耗时,但是可以精准的实现自己预期效果。在身份鉴定操作界面,首先使用字符串数组将密码存放。在密码输入时,使用的是密文登陆方式,即输入密码时,判断若密码不是“回车符”,就输出“*”(如图3.1.4-5所示)并且密码还能够在发现输入错后进行退格处理,然后判断输入的密码是否与密码字符串数组中的一致,从而判断是否进入下一个选择服务界面。输入密码时,用for循环语句限
14、制用户只能输入三次密码,若三次全错,则提示输入密码次数已达上限按任意键退出。(3) 实验代码:#include "header.h"void main_menu(void) char ch; system("cls"); printf("=n"); printf(" 欢迎使用草原图书管理系统nn"); printf(" n"); printf(" 田田n"); printf(" 田田n"); printf(" 田田n"); printf
15、(" 田田n"); printf(" n"); printf(" n"); printf("=nn"); printf("请选择您的登录模式nn"); printf("【1】学生登录【2】管理员登陆nn"); printf("【0】退出nn"); printf("=n"); printf("请输入数字02:"); while( ch=getch() ) && ( ch>'2' |
16、 ch<'0' )/容错处理 printf("n你的输入格式错误,请重新输入:"); switch( ch ) case '0': break;case '1':student();break;case'2':administrator();break; void administrator(void) /管理员登录模块菜单 if( adm_login() ) /登录成功 ad_menu(); return ; else /登录失败 main_menu(); return ; int adm_login(
17、void) /管理员登录int m ;int i = 0;int flag = 0;char ch, key1 20 = 0; FILE* fp=NULL;ADMIN ad, ad1; fp=fopen(".dataadministrator.txt", "r"); /判断是否有管理员注册 if(fp = NULL) flag = 1; else if( fgetc(fp) = EOF ) /未读取到有管理员注册 flag = 1; if( flag ) system("cls"); printf("您还没有注册管理员,请先
18、注册n请输入账号:"); scanf("%s", &ad.num); printf("请输入用户名:"); scanf("%s", &ad.user); printf("请输入密码:"); scanf("%s", &ad.key); rc4_crypt( &ad.key, "952316946" ); /加密 if( fp != NULL ) fclose(fp); fp = fopen(".dataadministrato
19、r.txt", "w"); fwrite(&ad, sizeof(ADMIN), 1, fp); printf("注册成功!按任意键继续.n"); getch(); fclose(fp); system("cls"); printf("tn"); printf("t 欢迎使用管理员系统,请登录! n");printf("t n"); printf("tn"); printf("t请输入管理员账号:"); scanf(&
20、quot;%s", &ad.num); fp = fopen(".dataadministrator.txt", "r"); while(fread(&ad1, sizeof(ADMIN), 1, fp) != 0) /以数据块方式读出数据管理员账号 if(strcmp(ad1.num , ad.num) = 0 ) flag = 0; break; if( flag ) printf("没有找到此卡号,按任意键结束.n"); getch(); fclose(fp); return 0; elseprintf
21、("t请输入登录密码:"); while( ch = getch() ) != 'r') if(ch = 'b' && i != 0) /密码输入容错处理,退格 i-; printf("b b"); continue ; elsekey1 i+ = ch;printf("*"); key1i = '0' strcpy(&ad.key, key1);rc4_crypt(&ad.key, "952316946");fread(&ad
22、1, sizeof(ADMIN), 1, fp); if(strcmp(&ad.key, &ad1.key) = 0 ) printf("n登录成功,按任意键返回."); strcpy(user_ad, &ad1.user); getch(); fclose(fp); return 1; else printf("n对不起,密码输入错误,您还有3次机会重新输入正确密码n"); for(m = 2;m >= 0; m-)while( ch = getch() ) != 'r') if(ch = 'b
23、39; && i != 0) /密码输入容错处理,退格 i-; printf("b b");continue ; else key1 i+ = ch; printf("*"); key1i = '0'strcpy(&ad.key, key1);rc4_crypt(&ad.key, "952316946"); fread(&ad1, sizeof(ADMIN), 1, fp); if(strcmp(&ad.key, &ad1.key) = 0 ) printf(&q
24、uot;n登录成功,按任意键返回."); strcpy(user_ad, &ad1.user); getch(); fclose(fp);return 1; else if(m > 0)printf("n对不起,密码输入错误,您还有%d次机会重新输入正确密码n",m);elseprintf("您输入密码的次数已达上限不能继续输入,请按任意键退出");getch(); fclose(fp); return 0; void student(void)/ 学生登录 if( stu_login() ) /登录成功 stu_find();
25、return ; else /登录失败 main_menu(); return ; int stu_login(void) / 学生登录验证 int m ;int i = 0;int flag = 0;char ch, key1 20 = 0; FILE* fp1=NULL; if(fp1=fopen(".datastudentcard.txt", "r") = NULL ) /没有学生卡存在 printf("文件打开失败,按任意键结束."); getch(); return 0; else system("cls"
26、;); int flag; STU st, st1; printf("请输入学号:"); scanf("%s", &st.num); while(fread(&st1, sizeof(STU), 1, fp1) != 0) /以数据块方式读出数据学生卡号 if(strcmp(st1.num , st.num) = 0 ) flag = 0; break; if( flag ) printf("没有找到此学号,请查证或与管理员联系。按任意键结束.n"); getch(); fclose(fp1); return 0; e
27、lse printf("请输入登录密码:"); while( ch = getch() ) != 'r') if(ch = 'b' && i != 0) /密码输入容错处理,退格 i-; printf("b b");continue ; else key1 i+ = ch; printf("*"); key1i = '0' strcpy(&st.key, key1); rc4_crypt(&st.key, "952316946"); /
28、加密 if(strcmp(&st.key, &st1.key) = 0) /字符比较。验证密码 printf("登录成功,按任意键返回.n"); getch(); fclose(fp1); return 1; else printf("n对不起,密码输入错误,您还有3次机会重新输入正确密码n"); for(m = 2;m >= 0; m-)while( ch = getch() ) != 'r') if(ch = 'b' && i != 0) /密码输入容错处理,退格 i-; prin
29、tf("b b");continue ; else key1 i+ = ch; printf("*"); key1i = '0' strcpy(&st.key, key1); rc4_crypt(&st.key, "952316946"); /加密 if(strcmp(&st.key, &st1.key) = 0) /字符比较。验证密码 printf("登录成功,按任意键返回.n"); strcpy(user_stu, &); getch();
30、 fclose(fp1); return 1; else if(m > 0)printf("n对不起,密码输入错误,您还有%d次机会重新输入正确密码n",m);elseprintf("您输入密码的次数已达上限不能继续输入,请按任意键退出");getch(); fclose(fp1); return 0; (4) 运行结果3.2功能服务 (1)基本介绍:功能服务分学生和管理员。以学生身份登录的用户可以使用图书查询服务系统(如图3.2.4-1),其中有按书名查询(如图3.2.4-2)按作者查询(如图)和输出所有图书信息(如图3.2.4-4
31、)。以管理员身份登录进入管理员系统,管理员系统分学生信息管理和图书管理两大功能(如图3.2.4-5),其中学生信息管理(如图3.2.4-6)里面分申请新学生卡号(如图3.2.4-7),删除卡号(如图3.2.4-8),查询学生卡号密码(3.2.4-9),查询学生卡(如图3.2.4-10)四大功能,图书管理分添加图书,删除图书,修改图书信息,查询所有图书信息和图书排序(如图3.2.4-11)五大功能。其中的图书排序(如图3.2.4-12)分按编号排序(如图3.2.4-13),价格排序(如图3.2.4-14),出版时间排序(如图3.2.4-15)三种。 (2)程序解析:定义相关变量之后,使用prin
32、tf与scanf输入选择的服务,并用getchar读取选择,之后使用switch语句按照参数choice分别进行相应的后续函数调用。 (3)实验代码:void stu_find(void) /学生查询图书系统 char n; system("cls"); printf("tn"); printf("t您好,欢迎进入学生图书查询系统nn"); printf("tnn"); printf("t请选择查询图书的方式nn"); printf("【 1 】按书名查询 【 2 】按作者n"
33、;); printf("【 3 】显示所有图书信息【 0 】返回nn"); printf("nn"); printf("请输入03:"); while( n=getch() ) && ( n>'3' | n<'0' ) printf("n输入错误,请重新输入:"); switch(n) case '0' : main_menu(); break;case '1' : book_search_name();break; cas
34、e '2' : book_search_author(); break; case '3' : inquire_book(); break; /图书查询按书名查询void book_search_name(void) char name30; FILE* fp; system("cls"); printf(" 欢迎使用图书查询服务nn"); printf("请输入要查询的书名:n"); fflush( stdin ); scanf("%s", name); if( ( fp = fo
35、pen(".databook.txt", "r") ) = NULL ) printf("数据读取失败,请与管理员联系,按任意键返回."); getch(); stu_find(); return ; int flag = 1; BOOK book; while( fread(&book, sizeof(BOOK), 1, fp) != 0) if( strcmp( , name) = 0 ) int y, m, d; flag = 0; printf("n你要查询的信息如下:nn");
36、printf("%-5st%-20st%st%-5st%-10st%sn", "编号", "书名", "作者", "价格","出版时间", "库存"); y = book.time_pub / 65536; m = ( book.time_pub % 65536 ) / 256; d = book.time_pub % 256; printf("%-5dt%-20st%st%.2ft%-4d %02d %02dt%dn", book.n
37、um, &, &book.author, book.price, y, m, d, book.stock); if( book.stock > 0 ) printf("n此书库存为%d,可以借阅!借阅请记下图书编号!n", book.stock); else printf("n此书库存为0,不可借阅!n"); break; fclose(fp); if ( flag ) printf("未找到此图书!请查证!"); printf("n按任意键返回."); getch(); s
38、tu_find(); return ;/图书查询按作者查询void book_search_author(void) char author30; FILE* fp; system("cls"); printf(" 欢迎使用图书查询服务nn"); printf("请输入要查询书的作者:n"); fflush( stdin ); scanf("%s", author); if( ( fp = fopen(".databook.txt", "r") ) = NULL ) prin
39、tf("数据读取失败,请与管理员联系,按任意键返回."); getch(); stu_find(); return ; int flag = 1; int times = 1; BOOK book; while( fread(&book, sizeof(BOOK), 1, fp) != 0) if( strcmp( book.author, author) = 0 ) int y, m, d; flag = 0; if(times = 1) /确保只输出一次 printf("n你要查询的信息如下:nn"); printf("%-5st%
40、-20st%st%-5st%-10st%sn", "编号", "书名", "作者", "价格","出版时间", "库存"); times = 2; y = book.time_pub / 65536; m = ( book.time_pub % 65536 ) / 256; d = book.time_pub % 256; printf("%-5dt%-20st%st%.2ft%-4d %02d %02dt%dn", book.num, &
41、;, &book.author, book.price, y, m, d, book.stock); if( book.stock > 0 ) printf("此书库存为%d,可以借阅!借阅请记下图书编号!nn", book.stock); else printf("此书库存为0,不可借阅!nn"); fclose(fp); if ( flag ) printf("未找到图书!请查证!"); printf("n按任意键返回."); getch(); stu_find(); retur
42、n ;void inquire_book(void) /查询图书(输出所有图书)学生用 system("cls");printf("n"); printf(" 欢迎进入使用图书查询服务nn");printf("nn"); int y, m, d; FILE* fp; BOOK book1; if( (fp = fopen(".databook.txt", "r") = NULL ) printf("数据读取失败,按任意键返回."); getch(); stu_find(); return ; printf("%5st%-20st%st%-5st%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《实验室消毒灭菌》课件
- 《病媒生物控制》课件
- 单位管理制度合并选集人事管理篇
- 《仓库管理的认识》课件
- 单位管理制度分享合集【人事管理篇】十篇
- 单位管理制度范例汇编【人事管理】十篇
- 做情绪的主人 高一上学期心理健康教育课
- 2024年农业年终工作总结
- 2024年协辅警个人总结
- 《山东胶州秧歌》课件
- 有害生物防制员技能竞赛理论考试题库500题(含答案)
- HIV阳性孕产妇全程管理专家共识2024年版解读
- 小学体育跨学科主题学习教学设计:小小志愿军
- 附件2:慢病管理中心评审实施细则2024年修订版
- 《ISO56001-2024创新管理体系 - 要求》之4:“4组织环境-确定创新管理体系的范围”解读和应用指导材料(雷泽佳编制-2024)
- 2024-2030年中国散热产业运营效益及投资前景预测报告
- 和父亲断绝联系协议书范本
- 2024时事政治考试题库(100题)
- 2024地理知识竞赛试题
- 【新教材】统编版(2024)七年级上册语文期末复习课件129张
- 钦州市浦北县2022-2023学年七年级上学期期末语文试题
评论
0/150
提交评论