C语言课程设计教材管理系统.docx
- 文档编号:9047635
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:446.78KB
C语言课程设计教材管理系统.docx
《C语言课程设计教材管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计教材管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
C语言课程设计教材管理系统
C语言课程设计——教材管理系统
沈阳航空航天大学
课程设计
学号__02072_
班级________
姓名___于涛____
指导教师__徐晗______
2010年10月08日
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:
录入新教材信息,添加已有教材,查找教材信息,保存教材函数。
在这些函数当中,前三个函数的实现严格按照题目的要求,而最后一个函数用来将修改的函数保存在中。
1.稳定性分析
指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
2.主要功能分析
(1)录入教材信息:
允许用户输入教材名称、作者、出版社、教材册数、编号、售价。
(2)查询教材:
允许按照编号和书名对教材的各项信息进行查询;
(3)添加已有教材:
通过添加已有教材的同时对教材信息的更改;
(4)保存教材函数将执行插入教材信息存入中。
除上面介绍的功能之外,程序还具有退出功能,可以在输入修改信息之后实现选择退出。
每一本教材记录都包含编号、作者、出版社、售价、书名和数量,在程序当中,将教材记录类型定义为结构体类型,添加以及追加的教材信息直接写入文件中,其他函数每次对教材记录的访问,其数据来源都是文件,这样做不但可以保证教材数据的一致性,而且可以对教材数据进行保存,保证每次运行程序都可以采用原来的数据。
二、设计分析
主要有5个功能模块,每个模块对应一个C语言自定义函数。
这些函数原型及其功能简述如下:
1、教材录入函数说明
这个函数用static声明局部变量,使函数调用结束后不消失而保留原值。
用只写的方式打开一个文件夹()把数据项写入指定文件中。
关闭文件。
2、教材查询的函数
该函数的核心内容是switch函数的使用、for函数的嵌套使用与strcmp比较字符串函数的使用。
3、已有教材添加函数
该函数的核心内容是if函数嵌套和for函数的使用以及strcmp比较字符串函数的使用
4、教材信息保存函数
这个函数先建立一个文件并把具体的信息存入文件中
1、程序总体结构图
程序结构总图
设置界面函数
新教材信息的录入
教材信息的保存
教材信息的查询
教材信息的更改
2、具体功能框图
(1)录入新教材信息函数
(2)查询教材信息
(3)添加已有教材信息
(4)保存教材信息函数
三、主要界面截图
图1程序主界面
图2录入界面
图3查询界面
四、技术要点
(对本程序贡献较大的C语言知识点;重要算法的设计与实现)
1、结构体的应用
定义了结构体用来描述教材的名称、作者、出版社、编号、册数和售价,具体的定义如下:
#defineB1000
typedefstructBook
{charnum[20];
charname[20];
charauthor[20];
charpress[20];
intcount;
floatshoujia;
}book[B];
structBookbooks[B];
所定义的结构体主要用于定义数组。
2、文件操作
包括了文件的写入、读取和保存三个方面。
例如如下程序段用于保存教材信息:
voidsave()
{
inti=0;
FILE*fp;
fp=fopen("e:
\\","wr");
while(books[i].count>0)
{
fprintf(fp,"教材名称:
%s教材作者:
%s出版社:
%s册数:
%d编号:
%s售价:
%f\n",books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
i++;
}
fclose(fp);
}
3、关于查询函数
实现从系统中查询某教材的相关信息的查询函数稍微复杂一些,需要先进行选择是通过名称查询还是编号查询。
如下是通过教材名称查询的函数:
voidchaxun()/*教材查询*/
{FILE*fp;
inti,flag=0;
inta;
charx[32];
chary[32];
if((fp=fopen("e:
\\","r"))==NULL)
{
printf("此文件无法打开!
\n");
return;
}
printf("请选择查询方式:
1.教材名2.编号\n");
scanf("%d",&a);
switch(a)
{
case1:
printf("输入教材名:
\n");scanf("%s",x);
for(i=0;i<1000;i++)
if(strcmp(books[i].name,x)==0)/*比较输入名与存储名的字符串大小*/
{printf("教材名:
%s教材作者:
%s出版社:
%s册数:
%d编号:
%s售价:
%f\n",books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
flag=1;
}
if(flag==0)
printf("此教材不存在\n");
break;
五、个人总结
C语言是一门既有趣又非常有用的课程,说难也不难,但是也不简单,只要会很好的应用,便会觉得编程过程也并不感觉枯燥,当程序编完且运行成功之后,便觉得非常有成就感,虽然有时也会被一时解决不了的问题弄的焦头烂额,但在解决的过程中逐渐的、更深的掌握这门课程的知识,所以,这一周的C语言课程设计实习的收获是非常的大的,甚至还有一点觉得实习的时间有点短。
通过这次c语言课程设计,我对C语言的知识进行了比较全面的学习,了解到C语言的简单编程的实际应用。
我的程序基本功能符合题目要求,但也并不是太完美。
例如在输入教材册数的时候如果输入的不是数字的话,不会有提示。
我始终没有想到解决的办法……
通过此次课程设计,我熟悉了函数的调用,指针的应用,数组的运用。
程序可以实现题目所要求各项,知道了实践并真正上机操作的意义。
六、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2009
七、源程序
#include<>
#include<>
#include<>
#defineB1000
typedefstructBook/*定义教材结构体*/
{charnum[20];
charname[20];
charauthor[20];
charpress[20];
intcount;
floatshoujia;
}book[B];
structBookbooks[B];
voidluru()/*录入教材信息*/
{
staticinti=0;
printf("\n请输入教材名称:
");
scanf("%s",books[i].name);
printf("请输入作者:
");
scanf("%s",books[i].author);
printf("请输入出版社:
");
scanf("%s",books[i].press);
printf("请输入教材册数:
");
scanf("%d",&books[i].count);
printf("请输入编号:
");
scanf("%s",books[i].num);
printf("请输入售价:
");
scanf("%f",&books[i].shoujia);
printf("教材录入结束.\n");
i++;
}
voidtianjia()/*教材添加*/
{
inti,count;
charname[10];
printf("\n请输入教材名称:
");
scanf("%s",name);
for(i=0;i<1000;i++)
{if(strcmp(books[i].name,name)==0)
{printf("\n输入添加册数:
");
scanf("%d",&count);
books[i].count+=count;
printf("\n教材已添加\n");
break;
}
else
{
printf("\n无此教材\n");
break;
}
}
}
voidsave()
{
inti=0;
FILE*fp;
fp=fopen("e:
\\","wr");
while(books[i].count>0)
{
fprintf(fp,"教材名称:
%s教材作者:
%s出版社:
%s册数:
%d编号:
%s售价:
%f\n",books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
i++;
}
fclose(fp);
}
voidchaxun()/*教材查询*/
{FILE*fp;
inti,flag=0;
inta;
charx[32];
chary[32];
if((fp=fopen("e:
\\","r"))==NULL)
{
printf("此文件无法打开!
\n");
return;
}
printf("请选择查询方式:
1.教材名2.编号\n");
scanf("%d",&a);
switch(a)
{
case1:
printf("输入教材名:
\n");scanf("%s",x);
for(i=0;i<1000;i++)
if(strcmp(books[i].name,x)==0)/*比较输入名与存储名的字符串大小*/
{printf("教材名:
%s教材作者:
%s出版社:
%s册数:
%d编号:
%s售价:
%f\n",books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
flag=1;
}
if(flag==0)
printf("此教材不存在\n");
break;
case2:
printf("输入编号:
\n");scanf("%s",y);
for(i=0;i<1000;i++)
if(strcmp(books[i].num,y)==0)
{printf("教材名称:
%s教材作者:
%s出版社:
%s册数:
%d编号:
%s售价:
%f\n",books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
flag=1;
}
if(flag==0)
printf("此教材不存在\n");
break;
default:
break;
}
fclose(fp);
}
voidshow()/*显示操作界面*/
{printf("\n******************沈阳航空航天大学教材管理系统*********************");
printf("\n*1录入教材信息*");
printf("\n*2查询教材信息*");
printf("\n*3更改教材信息*");
printf("\n*4保存教材信息*");
printf("\n*5退出系统*\n");
printf("\n请输入您要选择的操作序号,按回车键确认:
");
}
voidmain()
{intn;
show();
scanf("%d",&n);
while
(1)
{switch(n)
{case1:
luru();break;
case2:
chaxun();break;
case3:
tianjia();break;
case4:
save();break;
case5:
exit(0);break;
default:
break;
}
show();
scanf("%d",&n);
}
FILE*fp;
fp=fopen("e:
\\","r+");
if(fp==0)
printf("无法打开文件\n");
fclose(fp);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 教材 管理 系统