C语言课程设计.docx
- 文档编号:25688718
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:30
- 大小:488.43KB
C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
C语言课程设计
目录
第一章设计内容及基本要求………………………………………………2
1.1设计内容…………………………………………………………………………2
1.2设计基本要求……………………………………………………………………2
第二章总体设计思路……………………………………………………………3
2.1系统功能…………………………………………………………………………3
2.2模块之间的联系…………………………………………………………………3
2.3总体程序框图……………………………………………………………………3
2.4总体流程图…………………………………………………………………………4
第三章功能模块的具体设计…………………………………………………5
3.1主函数模块………………………………………………………………………5
3.2显示所有图书信息函数模块……………………………………………………6
3.3查询一本图书信息函数模块……………………………………………………6
3.4添加图书信息函数模块…………………………………………………………7
3.5删除图书信息函数模块…………………………………………………………8
3.6借阅图书模块……………………………………………………………………9
第四章功能模块的调试…………………………………………………………10
4.1主菜单运行界面…………………………………………………………………10
4.2显示所有图书运行界面…………………………………………………………11
4.3查询图书模块运行界面…………………………………………………………12
4.4添加图书模块运行界面…………………………………………………………13
4.5删除图书模块运行界面…………………………………………………………14
4.6借阅图书模块运行界面…………………………………………………………15
第五章总结…………………………………………………………………………16
附录源程序……………………………………………………………………………17
第1章设计内容、任务以及基本要求
1.1设计内容
主要利用c语言的文件操作能力设计开发一个小型的图书管信息管理系统,具有如下功能:
查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息、删除图书信息以及通过学生学号实现图书借阅功能。
1.2基本要求
(1)通过提示菜单选择可以进行的操作。
(2)将图书的信息存入文件中,并命名为file.txt。
(3)将图书借阅情况信息存入文件中,并命名为file1.txt。
(4)在本系统中可以进行管理系统包含的基本操作,其中包括:
a:
查看所有图书的信息。
b:
输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。
c:
添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。
d:
删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。
e:
借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入file1.txt文件中。
(5)图书基本信息包括图书编号、书名、作者、出版社和价钱这些简单信息。
(6)图书信息文件中每一行存放一本图书的信息。
第2章总体设计思路
2.1系统功能
1、显示所有图书信息:
将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。
2、查找一本图书的信息:
通过输入图书编号完成图书信息的查找,并在屏幕上显示。
3、添加图书信息:
通过输入图书信息包括编号、书名、出版社、作者、价格后实现添加图书,并且显示添加后的图书信息。
4、删除图书信息:
通过输入编号,判断此图书是否存在,若存在,则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书编号。
5、借书:
通过输入图书编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号,若图书已借出则提示用户是否继续借书,若没借出则将此图书的编号和学生的学号存入图书借阅文件中。
6、退出系统:
返回主页面。
2.2模块之间的主要联系
图书信息管理系统可划分为5个模块:
查询所有图书模块、查找一本图书信息模块、修改图书信息模块、删除图书信息模块、借阅图书模块。
各模块之间均有着或多或少的联系,比如:
查找一本图书信息模块、修改信息模块、删除信息模块、借阅图书模块都需要先判断该图书是否存在,然后再进行其它操作。
2.3总体程序框图
图2.3总体程序框图
2.4系统的总体流程图
图2.4系统的总体流程图
第三章功能模块的具体设计
3.1主函数模块
根据图书馆信息管理系统的要求,设计一个主函数,及定义多个用户自定义函数。
在主函数中定义全局变量,在整个程序内可以多次被引用。
通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。
运用fscanf语句在主函数中将文件中的内容赋给结构体变量,便于在自定义函数中对结构体的调用。
具体如下:
在主函数中定义一个存放图书信息的结构体
structlist
{charnum[20];/*图书编号*/
charname[40];/*书名*/
charauthor[40];/*作者*/
charpublish[40];/*出版社*/
doubleprice;/*价格*/
};
各函数的申明
voidsearch_allinformation(structlistb[]);/*查看全部图书信息*/
voidcheck_bookinformation(structlistb[]);/*查找图书信息*/
voidadd_bookinformation(structlistb[]);/*添加图书信息*/
voiddelete_bookinformation(structlistb[]);/*删除图书信息*/
voidborrow_book(structlistb[]);/*借阅图书*/
通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计
switch(choice1)
{case1:
search_allinformation(b);break;
case2:
check_bookinformation(b);break;
case3:
add_bookinformation(b);break;
case4:
delete_bookinformation(b);break;
case5:
borrow_book(b);break;
case0:
break;
}
3.2显示所有图书信息函数模块
voidsearch_allinformation(structlistb[])
通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。
运用for语句加printf()实现图书信息的循环输出显示。
3.3查询一本图书信息函数模块
voidcheck_bookinformation(structlistb[])
用户先输入图书编号后,先用strcmp(s1,s2)函数进行比较两个字符串数组的大小,从而查找出该图书是否存在,若不存在则提示用户是否要继续查找,运用switch语句,若继续则再次调用函数本身进行第二次查找,直到找到为止,若否则结束循环,不再进行查找。
通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。
运用fscanf语句在主函数中将文件中的内容赋给结构体。
关键代码:
strcmp(比较字符串)
case….break(判断)
printf(输出信息)
switch(实现选择功能分支)
其主要流程图如下:
图3.2显示所有图书信息流程图
3.4添加图书信息函数模块
voidadd_bookinformation(structlistb[])
输入图书的基本信息包括编号、书名、出版社、作者、价格,由于原有的图书信息是按照编号的大小顺序排列的,所以只需运用for循环和strcmp函数找出输入的图书
应该插入的位置,再将所添加的图书信息插入即可。
关键代码:
printf(输出信息)
scanf(输入信息)
switch(实现多分支结构程序设计)
case-break(实现功能的选择)
其主要流程图如下:
图3.4添加图书信息流程图
3.5删除图书信息函数模块
voiddelete_bookinformation(structlistb[])
用户输入所要删除的图书编号,先查找该图书编号是否存在,若存在,这提示用户是否要显示删除后的信息,若不存在则提示重新输入。
关键代码:
strcmp(比较两个字符串的大小)
switch(实现多分支结构程序设计)
if(条件选择)
其主要流程图如下:
图3.5删除图书信息流程图
3.6借阅图书模块
voidborrow_book(structlistb[])
用户先输入所借图书的编号,调用函数查找该图书有没有借出,若已借出,则提示用户该图书已借出,并提示用户是否继续借阅其他书籍。
若继续,则继续进行新的查找。
关键代码:
if-else(实现分支选择)
getchar(从键盘上输入一个字符)
goto(使程序的执行流程直接转接到标号对应的那条语句)
strcmp(比较两个字符串的大小)
其主要流程图如下:
图3.6借阅图书流程图
第4章功能模块的调试及测试
4.1主菜单运行界面
界面注释:
欢迎进入系统
功能选项:
1、显示所有图书信息
2、查找一本图书的信息
3、添加图书信息
4、删除图书信息
5、借书
6、退出系统
请选择:
4.2显示图书模块运行界面
界面注释:
显示所有图书信息
编号书名作者出版社价格
功能选项:
1、显示所有图书信息
2、查找一本图书的信息
3、添加图书信息
4、删除图书信息
5、借书
6、退出系统
请选择:
4.3查询图书模块运行界面
界面注释:
欢迎进入系统
功能选项:
1、显示所有图书信息
2、查找一本图书的信息
3、添加图书信息
4、删除图书信息
5、借书
6、退出系统
请选择:
2
请输入书的编号:
A005
查询图书信息
图书信息:
编号书名作者出版社价格
4.4添加图书模块运行界面
界面注释:
欢迎进入系统
功能选项:
1、显示所有图书信息
2、查找一本图书的信息
3、添加图书信息
4、删除图书信息
5、借书
6、退出系统
请选择:
3
添加图书信息
请输入图书信息:
编号书名作者出版社价格
成功添加!
是否输出添加后的图书信息?
1:
是2:
否
请选择:
4.5删除图模块书运行界面
界面注释:
输入要删除的图书编号:
A009
成功删除!
是否显示删除后的图书信息?
1:
是;2:
否
请选择:
1
删除后的图书信息
功能选项:
1、显示所有图书信息
2、查找一本图书的信息
3、添加图书信息
4、删除图书信息
5、借书
6、退出系统
请选择:
4.6借阅图书模块运行界面
界面注释:
欢迎进入系统
功能选项:
1、显示所有图书信息
2、查找一本图书的信息
3、添加图书信息
4、删除图书信息
5、借书
6、退出系统
请选择:
5
借阅图书
请输入书的编号:
A001
请输入学号:
1020610308
借阅成功!
第五章总结
通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,所以后在学习过程中,我会更加注视实践操作。
在课程设计过程中,收获知识,提高能力的同时,我也懂得怎么样去制定、实现计划,课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼实践能力的重要环节是对学生实际工作能力的具体训练和考察过程.从拿到题目到完成整个编程,从理论到实践,可以学到很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,在设计中我们遇到了很多编程问题,最后在老师的辛勤指导下,我们终于成功地完成了这次课程设计。
我做的是一个图书馆信息管理系统的设计,内容包括很多。
运用的函数也是相对较复杂,所以设计程序一定要仔细,不容一点的马虎。
当然也有大问题,关于文件的操作,是我们最大的问题。
要有模块化思维能力,模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作。
总之,课程设计既是一个操作实践的过程,也是一次学习经验的积累过程。
在这个过程中,我掌握了一些如何寻找解决相关问题的方法。
这些才是人生中最宝贵的财富,因为掌握思考问题的方式才是最重要的。
附录:
源程序
#include
#include
#include
structlist
{
charnum[20];
charname[40];
charauthor[40];
charpublish[40];
doubleprice;
};
structlistb[40];
intw=0;
voidsearch_allinformation(structlistb[]);
voidcheck_bookinformation(structlistb[]);
voidadd_bookinformation(structlistb[]);
voiddelete_bookinformation(structlistb[]);
voidborrow_book(structlistb[]);
intmain()
{
inti=0;
intchoice1;
FILE*fp;
printf("********************************\n");
printf("*welcometosystem*\n");
printf("********************************\n");
fp=fopen("e:
\\file.txt","r");
if(fp==NULL)
{printf("Cannotopenthefile!
\n");
exit(0);
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s%s%lf",
b[i].num,b[i].name,b[i].author,b[i].publish,&b[i].price);
i++;
}
w=i-1;
fclose(fp);
do{
printf("################################################################################");
printf("functioningchoice:
\n");
printf("1:
searchallinformation\n");
printf("2:
checkbookinformation\n");
printf("3:
addbookinformation\n");
printf("4:
deletebookinformation\n");
printf("5:
borrowbook\n");
printf("0:
exit\n");
printf("################################################################################");
printf("pleasechoose:
");
scanf("%d",&choice1);
switch(choice1)
{
case1:
search_allinformation(b);
break;
case2:
check_bookinformation(b);
break;
case3:
add_bookinformation(b);
break;
case4:
delete_bookinformation(b);
break;
case5:
borrow_book(b);
break;
case0:
break;
}
}while(choice1!
=0);
printf("thankyou!
\n");
return0;
}
voidsearch_allinformation(structlistb[])
{
inti;
printf("####################################\n");
printf("#search_allinformation#\n");
printf("####################################\n");
printf("allinformation:
numbernameauthorpublishprice\n");
for(i=0;i { printf("%s%s%s%s%.2f\n", b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); } printf("################################################################################\n"); } voidcheck_bookinformation(structlistb[]) { inti,flag=0; chars[20]; printf("pleaseinputbooknumber: \n"); scanf("%s",s); printf("#####################################\n"); printf("#check_bookinformation#\n"); printf("#####################################\n"); for(i=0;i if(strcmp(s,b[i].num)==0) { printf("allinformation: numbernameauthorpublishprice\n"); printf("%s%s%s%s%.2f\n", b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); flag=1; break; } if(flag==0) { printf("thebookisnotexist,inputnewnumber! \n"); printf("whethercontinuetocheck? y: yes;n: no\n"); getchar(); switch(getchar()) { case'y': check_bookinformation(b); case'n': break; } } printf("################################################################################\n"); } voidadd_bookinformation(structlistb[]) { inti,count=0,choice3; structlistp; FILE*fp2; printf("#####################################\n"); printf("#add_bookinformation#\n"); printf("#####################################\n"); printf("pleaseinputbookinformation: \n"); printf("numbernameauthorpublishprice\n"); scanf("%s%s%s%s%lf", p.num,p.name,p.author,p.publish,&p.price); printf("succeedinadding! \n"); printf("whetherprintfbookinformation? 1: yes;2: no\n"); printf("pleaseoption: "); scanf("%d",&choice3); switch(choice3) { case1: { for(i=0;i if(strcmp(p.num,b[i].num)>0) count++; for(i=w;i>count;i--) b[i]=b[i-1]; b[i]=p; w++; fp2=fop
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)