资源描述
《程序设计基础(C)》课程设计报告
图书信息管理系统
学生姓名
学 号
班 级
指导教师
日 期
Xxx学院
21 / 22
目录
目录 1
前言- 摘要 2
第一章、C语言课程设计目 3
第二章、总体设计(程序设计组成框图、流程图) 3
(一)、系统功能分析 3
1、设计图书信息管理系统,使之能提供以下功能: 3
2、查询方式 3
(二)、程序设计组成框图、流程图 4
1、本程序最大框架设计 4
2、本程序次级框架设计 5
第三章、详细设计思路 6
一、函数功能、入口及出口参数说明,函数调用关系描述 6
第四章、调试及测试 8
一、使用软件: 8
1、Visual c++ 6.0 8
2、超级屏捕专业版(试用版) 8
二、调试结果 8
系统主界面 8
功能菜单 9
图书信息录入菜单 9
图书查询菜单 10
第五章、源程序代码及调试结果详细表单 10
第六章、心得体会 17
参考文献 17
前言- 摘要
二十一世纪是信息社会,信息作为社会最主要资源,将成为战略资源引起人们广泛关注。如何获取信息?图书是我们最好获取信息方式,但由于图书馆图书收藏量大大增加,使传统图书管理员工作日益繁重起来。迫使人们起用新管理方法来管理图书,如何把图书管理员从繁重工作中解脱出来呢?
本设计主要研究是用C语言开发图书馆管理功能,其具体体现在图书检索、查询、录入功能,更要优化了图书馆管理系统设计。
管理信息系统设计及开发是一项系统工程,为了保证系统质量,设计人员必须遵守共同设计原则,尽可能地提高系统各项指标。具体设计原则如下:
⑴实用性原则
要力求最大限度地满足实际工作需要,必要考虑各业务层次、各管理环节数据处理实用性,把满足用户生产和管理业务作为第一要素进行考虑。用户接口和操作界面设计则不必进行过多涉及,只要求在dos环境下简单操作即可。
⑵可扩展性及可维护性原则
为适应将来发展,该系统应具有良好可扩展性和可维护性。软件设计尽可能模块化、组件化,使应用系统可灵活配置,适应不同情况。
⑶安全可靠性原则
应用软件及数据库系统设计要做到安全可靠,防止非法用户入侵。数据库备份策略恰当,以防止灾难性事故发生,这个由于目前水平有限,难以实施进行,所以作略。
⑷用户界面设计原则
不必设计,只要在dos环境下运行即可。
⑸数据库设计原则:做到一致性和有效性即可。
第一章、C语言课程设计目
1、课程设计是对学生进行实践操作训练重要环节,通过课程设计加深对本课程基本知识理解和提高本课程基本知识应用能力。
2、掌握本课程工程设计主要内容、步骤和方法。
3、提高操作能力,学会应用有关资料进行程序设计方法。
4、提高独立分析问题、解决问题能力,逐步增强设计训练。
5、学生要认真读教材,阅读有关规范、设计手册等资料,独立按时完成任务。
6、掌握程序设计逻辑及设计报告单格式书写。
第二章、总体设计(程序设计组成框图、流程图)
(一)、系统功能分析
1、设计图书信息管理系统,使之能提供以下功能:
A、图书信息录入功能(图书信息用文件保存)--输入
B、图书信息浏览功能--输出
C、图书信息查询功能--算法
2、查询方式
A、按书名查询
B、按作者名查询
图书馆管理系统管理远权限分为3级:系统管理员、图书馆管理员和一般管理员。尽管他们具有不同模块管理权限,但为简单起见,又因为图书馆管理系统主要实体是书籍和图书,所以。不再仔细对管理员进行设计。
书籍参数具体包括书籍类型、书名、作者名、图书编号、出版单位、出版时间、价格七个方面基本信息。
(二)、程序设计组成框图、流程图
1、本程序最大框架设计
设计如下:
此乃计算机课程设计要求
图书管理
系统
图书信息
录入
图书信息
浏览
图书信息
查询
按 书 名
查询
按作者名查询
管 理 员
录入
使 用 者
浏览
用文件
保存
(输入)
信息
输出
涉及算法的设计
2、本程序次级框架设计
(1)、大体框架
用
户
界
面
用
户
录 入
查 询
浏 览
数
据
库
通过数据库工作
(2)、检索系统图书信息
查 找
书 目
读者
(3)、图书档案管理系统
录入
身份验证
管理员
修改
注销
入库清单
可以打印
图书清单
(4)、程序设计部分流程图
图书查询模块流程
开始
提示输入图书编号、书名、作者
输入正确
查询
重新输入
否 是
是 否
否
退出系统
第三章、详细设计思路
一、函数功能、入口及出口参数说明,函数调用关系描述
1、# include <stdio.h>
提供及程序编写有关函数信息,例如对输入输出函数声明和宏定义、全局量定义等,是系统提供文件名。
2、# include <stdlib.h>(网上摘录)
包含了库函数之后就可以使用很多应用运算,类型转换,程序环境处理等了,比如可以使用sin,cos.sqrt这些函数什么
stdlib.h里面定义了五种类型、一些宏和通用工具函数。
类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;
宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;
常用函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
3、# include <string.h>
string是C标准库中声明一个字符串类型,用来定义字符串变量。
4、结构体
比如struct Student
{
……
}
就是一个用户自己建立结构体类型。所谓结构体就是,C语言允许用户建立又不同类型数据组成组合型数据结构。
注意:typedef声明新类型来代替已有类型名字。
5、文件打开fopen函数
用来打开一个文件,其调用一般形式为:
文件指针名=fopen(文件名,使用文件方式);
其中,
“文件指针名”必须是被说明为FILE 类型指针变量;
“文件名”是被打开文件文件名;
“使用文件方式”是指文件类型和操作要求。
“文件名”是字符串常量或字符串数组
6、strcpy
把从src地址开始且含有NULL结束符字符串赋值到以dest开始地址空间
7、C语言函数兼有其它语言中函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。
(1)有返回值函数
此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。如数学函数即属于此类函数。由用户定义这种要返回函数值函数,必须在函数定义和函数说明中明确返回值类型。
(2)无返回值函数
此类函数用于完成某项特定处理任务,执行完成后不向调用者返回函数值。这类函数类似于其它语言过程。由于函数无须返回值,用户在定义此类函数时可指定它返回为“空类型”,空类型说明符为“void”。
8. C语言提供了极为丰富库函数,这些库函数又可从功能角度作以下分类。
(1)字符类型分类函数(2)转换函数(3)目录路径函数(4)诊断函数(5)图形函数(6)输入输出函数(7)接口函数(8)字符串函数(9)内存管理函数(11)日期和时间函数(12)进程控制函数(13)其它函数
第四章、调试及测试
一、使用软件:
1、Visual c++ 6.0
2、超级屏捕专业版(试用版)
二、调试结果
系统主界面
功能菜单
图书信息录入菜单
图书查询菜单
第五章、源程序代码及调试结果详细表单
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define N 100
struct book //图书信息基本情况
{
char num[13]; //图书编号
char name[20]; //图书名
char publish[100]; //出版社
float price; //图书单价
char status[100]; //图书状态
char author[100]; //作者
char time[100]; //出版时间
}em[N];
int b=0;
char password[7]="123456";
int pass();
void jiemian();
void input();
void display();
void search();
void main()
{
char key;
if(pass()==1)
{
jiemian();
do
{
printf("\t\t请选择操作类型:\n");
printf("***********\t\t***********\n");
printf("\t\t1 进入录入图书信息\n");
printf("\t\t2 进入输出图书信息\n");
printf("\t\t3 进入查询图书信息\n");
printf("\t\t4 进入保存图书信息\n");
printf("\t\t0 退出系统\n");
printf("***********\t\t***********\n");
key=getch();
switch(key)
{
case'0':
{
printf("谢谢您使用\n再见!");
exit(0);
}
case'1':
input(); //输入图书信息
break;
case'2':
display(); //显示图书信息
break;
case'3':
search(); //查询图书信息
break;
default:
printf("输入有错误,请按操作要求进行操作");
}
}while(1);
}
}
int pass(void)//密码验证
{
char passwor[7];
int i,j=2;
printf("请输入客户登录密码(提示:六位数字):\n");
gets(passwor);
if(!strcmp(passwor,password))//若密码正确
{
for(i=1;i<=27;i++)
printf("*");
printf("\n");
printf("欢迎进入图书管理系统!\n");
return 1;
}
else//重新输入密码
{
do
{
j--;
printf("密码错误请重新输入:");
gets(password);
if(!strcmp(password,password))//若密码正确
{
for(i=1;i<=27;i++)
printf("*");
printf("\n");
printf("欢迎进入图书管理系统!");
return 1;
break;
}
else
continue;
}while(j>0);
printf("抱歉,你输入次数已到");//只能输入规定次数
return 0;
}
}
void
jiemian() //进入时界面
{
int i;
for(i=1;i<=27;i++)
printf("%");//作者
printf("制作人:杜晓宁\t专业:电力工程\n");
printf("联系地址:兰州交通大学\n");
for(i=1;i<=27;i++)
printf("%");
}
void input()//输入图书信息
{
char ch;
printf("你现在位置是:\n\t\t输入图书信息栏\n");
for(;b <=N; b++)//要输入选项
{
printf("请输入图书号:\n"); //图书号
scanf("%s",em[b].num);
printf("请输入图书名:\n"); //图书名
scanf("%s",em[b].name);
printf("请输入作者名:\n"); //作者名
scanf("%s",em[b].author);
printf("请输入时间:\n"); //时间
scanf("%s",em[b].time);
printf("请输入图书状态:\n"); //图书状态
scanf("%s",em[b].status);
printf("请输入图书出版商:\n"); //出版商
scanf("%s",em[b].publish);
printf("按n键退出,其他键继续\n"); //是否继续输入图书信息
ch=getch();
if(ch=='N'||ch=='n')
{
break;
}
else
printf("你位置是:\n\t\t输入图书信息栏 \n");
}
}
void display()//显示图书信息
{
int i,j;
printf("所有图书信息如下:\n");
{
for(j=1;j<=80;j++)
printf("*");
printf("\t图书号\t图书名\t作者名\t时间\n");
printf("%-16s%-16s%-8s%s\n",em[i].num,em[i].name,em[i].author,em[i].time);
printf("图书状态\t\t出版商\t\t\n");
printf("%-24s%-8s%-16s\n",em[i].status,em[i].publish);
printf("图书单价:\n");
printf("%d\n",em[i].price);
for(j=1;j<=80;j++)
printf("*");
printf("\n");
}
printf("所有图书信息如上;");
}
void search()
{
int i;
char nnum[20];
char ch;
do
{
printf("请输入要查询图书号:\n");
scanf("%s",nnum);
getchar();
for(i=0;i<= b;i++)
{
if(strcmp(em[i].num,nnum)==0)
{
printf("该图书信息如下:\n");
printf("图书号\t\t图书名\t\t作者名\t时间\n");
printf("%-16s%-16s%-8s%s\n",em[i].num,em[i].name,em[i].author,em[i].time);
printf("图书状态\t\t\t出版商\t\t\n");
printf("%-24s%-8s%-16s\n",em[i].status,em[i].publish);
printf("图书单价:\n");
printf("%d\n",em[i].price);
break;
}
else
printf("抱歉,你所找图书不存在!\n");
}
printf("请按y键继续查询其他图书信息,其他键结束\n");
ch=getchar();
getchar();
}while(ch=='y'||ch=='Y');
return 0;
}
第六章、心得体会
经过五天编译原理课程设计,我终于顺利完成该课程设计了。
还有一点,我还学会了排版,学会了很多电脑知识。
通过该课程设计,可以掌握编译程序工作基本过程及其各阶段基本任务,熟悉了编译程序总流程框图,了解了编译程序生成过程及其相关技术,对课本上知识也有了更深理解。老师常说,课本上知识是机械,表面,要学会去运用,要举一反三。现在终于深刻了解了这句话。经过这次课程设计,发现书本上很深奥知识变更为简单,同样,对实验原理也了有更深理解。知道和理解了该理论在计算机中是怎样执行, 对该理论在实践中应用有深刻理解 。通过该课程设计,把死板课本知识变得生动有趣,激发了学习积极性。能够把课堂上学知识通过自己设计程序表示出来,加深了对理论知识理解。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要命令去除。除了课堂外,课程设计是最能学到东西,最考验人。在做课程设计这段时间,时刻都感到自己学知识有多么贫瘠。经过这次课程设计,让我对C语言有了更深认识,操作能力有了提高要想是写出代码能运行,需要耐心细心,毅力以及充沛体力。只有经过多次编辑,多次编译,再多次运行,才能编写出更好程序,有时候需要很多次更正才能达到所要运行结果。
参考文献
百度网站、搜搜网站、论文网
谭洁强 《C程序设计》 清华大学出版社
张基温 《C程序设计案例教程》 清华大学出版社
王宏 《C#程序设计案例教程》 清华大学出版社
《C语言程序设计.谭浩强版》
C语言之家()
C语言教室()
展开阅读全文