c课程设计报告模板新已完成 2.docx

上传人:b****6 文档编号:8825028 上传时间:2023-02-02 格式:DOCX 页数:26 大小:241.67KB
下载 相关 举报
c课程设计报告模板新已完成 2.docx_第1页
第1页 / 共26页
c课程设计报告模板新已完成 2.docx_第2页
第2页 / 共26页
c课程设计报告模板新已完成 2.docx_第3页
第3页 / 共26页
c课程设计报告模板新已完成 2.docx_第4页
第4页 / 共26页
c课程设计报告模板新已完成 2.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

c课程设计报告模板新已完成 2.docx

《c课程设计报告模板新已完成 2.docx》由会员分享,可在线阅读,更多相关《c课程设计报告模板新已完成 2.docx(26页珍藏版)》请在冰豆网上搜索。

c课程设计报告模板新已完成 2.docx

c课程设计报告模板新已完成2

 

内蒙古科技大学

本科生课程设计说明书

 

题目:

C语言课程设计

——图书管理系统

学生姓名:

学号:

专业:

班级:

指导教师:

 

内蒙古科技大学课程设计任务书

课程名称

C语言课程设计

设计题目

图书管理系统

指导教师

王丽颖

时间

17——18周

一、教学要求

1.巩固和加深学生对C语言课程的基本知识的理解和掌握

2.掌握C语言编程和程序调试的基本技能

3.利用C语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C语言解决实际问题的能力

二、设计资料及参数

每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

图书信息管理系统

图书信息包括:

登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:

v图书信息录入功能(图书信息用文件保存)--输入

v图书信息浏览功能--输出

v查询或排序功能:

(至少两种种查询方式)--算法

●按书名查询●按作者名查询

v图书信息的删除与修改

v图书的借出与归还

三、设计要求及成果

1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)

2.写出详细设计说明(至少包括功能实现分析和模块流程图)

3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)

4.设计完成的软件要便于操作和使用

5.设计完成后提交课程设计报告(请严格按照模板进行排版)

四、进度安排

第一天 选择课程设计题目,分析课题的要求

第二天 编程

第三天 编程及调试

第四天 写课程设计报告

第五天 提交课程设计报告(打印稿及电子稿)

五、评分标准

1.根据平时上机考勤、表现和进度,教师将每天点名和检查

2.根据课程设计完成情况,必须有可运行的软件。

3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。

六、建议参考资料

1.《C语言程序设计》,谭浩强,清华大学出版社

2.《C语言程序设计课程设计》,刘振安,机械工业出版社

目录

内蒙古科技大学课程设计任务书I

第一章需求分析3

1.1引言3

1.2任务概述3

1.3数据描述3

1.4功能需求3

1.5性能需求3

1.6运行需求4

1.7任务计划4

第二章概要设计5

2.1总体设计5

2.2数据类型设计(或数据结构设计)5

2.3接口设计//函数声明5

2.4运行界面设计5

第三章详细设计7

3.1输入模块设计7

3.2输出模块设计7

3.3查找模块设计7

3.4排序模块设计7

3.5保存及读取模块设计7

第四章测试分析8

4.1测试程序执行情况8

4.2出现的问题和解决的方法8

第五章用户手册(可选)9

5.1使用说明9

5.2运行说明9

第六章课程设计总结10

附录:

程序代码11

参考文献12

致谢13

第一章需求分析

1.1引言

图书管理系统

建立一个“图书管理系统”,系统以菜单方式工作,编写存放有图书信息,包含图书名称、图书编号、单价、作者、出版社,出版日期,价格等,并可对这些信息进行浏览;可按书名或按作者查找此信息,建立存放图书信息的文件,图书信息有图书名称、图书编号、单价、作者、出版社,出版日期,价格等,并可对图书信息进行浏览、修改、删除、查询。

1.2任务概述

图书信息管理系统

图书信息包括:

登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:

v图书信息录入功能(图书信息用文件保存)--输入

v图书信息浏览功能--输出

v查询或排序功能:

(至少两种种查询方式)--算法

●按书名查询●按作者名查询

v图书信息的删除与修改

v图书的借出与归还

1.3数据描述

1题目与要求图书管理系统(录入、查询、排序,文件操作)1.1问题提出制作一个简易的图书管理系统,实现新书录入、图书资料查询、显示所有图书信息等功能。

运行结果示例,如下:

1.2本题目涉及的知识点结构、数组、循环、函数、链表、指针、文件1.3功能要求1、程序的输入:

只需按系统提示输入整型数字或英文字母即可。

每次数据的输入均以回车符作为结束标志。

2、程序的输出:

每一项数据输出均有汉字的提示,输出格式均为整型或字符串

 

1.4功能需求

图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。

根据系统界面的提示信息对图书馆信息进行查询、初始化等操作系统功能需求分析描述如下:

(1)系统主菜单:

进入系统和退出系统

(2)功能菜单:

显示可以进行的操作(3)查询主菜单:

根据图书编号、书名、作者进行查询,并可显示所有图书信息

 

1.5性能需求

在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。

1.6运行需求

操作系统:

MicrosoftWindows7.Windowsxp

应用程序:

MicrosoftVisualC++6.0

PentiumIII450M以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD—ROM驱动器、能支持24位真彩色的显示卡、踩死显示器、打印机。

1.7任务计划

1.搜集相关资料,了解一个图书管理系统应该有哪些功能。

2.画出相应的主界面流程图和人机界面图。

 

3.在了解了应有功能之后根据自己的实际能力选择一些能够编写的模块,对模块的功能进行分析和制定相应的编写计划。

 

4.画出相应模块的流程图。

 

5.对相应模块进行编写之后插入程序中进行调试。

 对调试中出现的问题进行修改。

 

将所有功能组合在一起,对整个程序的各个功能再多输入一些数据进行调试。

检查是否有功能的错误,各个模块在调用其他模块的数据时是否会出错,检查一个模块调用完后是否会影响其他模块运行和文件中保存的数据是否被某个模块破坏。

 

6.检查系统的容错性,检查在输入数据非法的情况下程序是否能做出应有的正确反映。

 

对系统的外观界面进行优化,并对在运行时发现的不符合操作习惯的功能进行修改,提高运行时的界面友好性。

 

.

第二章概要设计

2.1

总体设计

下面从系统的整体流程的功能模块、系统界面及数据结构进行总体设计。

(1)总体思想本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、、图书信息浏览功能、查询和排序功能:

按书名查询、按作者名查询;图书信息的删除与修改等主要功能。

系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。

2)系统模块结构图

根据需求分析结果,图书管理系统可以分为三大模块:

查询数据图书模块,图书信息录入模块(图书信息用文件保存),查询和排序模块,图书信息的删除与修改模块

(1)信息输入模块:

完成图书信息的输入功能,输入信息包括书名、作者名、分类号、出版单位、出版时间、价格等;

(2)信息浏览模块:

完成已录入图书信息的显示;

(3)信息查询模块:

完成图书信息的查询,查询时对应有按书名查询和按作者名查询以及组合查询三种方式;

(4)信息修改模块完成图书信息的修改功能;

(5)信息删除模块完成图书信息的删除功能;

2.2类型设计(或数据结构设计)

定义形式/名称

含义/作用

charnumber[10];

charauthor[20];//

charclassnumber[10];//

charpublish[50];//出版单位

chartime[20];//

floatprice;//价格

定义书名数组

定义作者名数组

定义分类号数组

定义出版时间数组

定义价格数组

结构体

books[100]

声明一个结构体数组

save()

putin()

search()

del()

update()

保存

显示

查询

删除

修改

2.3接口设计

表2.1:

函数列表

函数名

函数格式//即函数首部

函数功能

save()

void

保存录入的信息

putin()

void

录入图书信息

lookup()

void

浏览涂塑信息

search()

void

查询图书信息

del()

void

删除图书信息

update()

void

修改图书信息

2.2运行界面设计

 

第三章详细设计

3.1输入模块设计

信息输入模块:

完成图书信息的输入功能,输入信息包括书名、作者名、分类号、出版单位、出版时间、价格等;

3.2输出模块设计

信息浏览模块:

完成已录入图书信息的显示;

3.3查找模块设计

(3)信息查询模块:

完成图书信息的查询,查询时对应有按书名查询和按作者名查询以及组合查询三种方式;

3.4保存及读取模块设计

3.5修改模块

信息修改模块完成图书信息的修改功能;

3.6删除模块

信息删除模块完成图书信息的删除功能;

第四章测试分析

4.1测试程序执行情况

=

4.2出现的问题和解决的方法

在运行程序时出现了死循环,解决办法:

关闭后,重新运行就好了

要对图书的信息进行删除后修改前必须先浏览图书不然不知道要选择哪本图书进行操作的问题 

解决方法  由于上述修改与删除的操作是通过用户对图书编号的选择来完成的所以在浏览前不知道图书对于的编号就使操作具有盲目性即对图书的信息进行删除后修改前必须先浏览图书。

解决时时让修改于删除函数中让用户输入编号前默认直接输出所有图书(遍历所有图书

 录入时以前的思路是想在输入的同时写入文件只有一组数据想存入文件 

解决方法  将保存文件作为一个独立的函数。

在创建函数中有一组另外的参数来接收用户输入的数据,然后再调用保存函数将数据存入文件

第五章课程设计总结

经历了几个星期的课程设计,从设计前期的不知如何下手到开始设计时的各种错误的困扰再到一个个的攻破各个问题,最后到对程序的进一步完善与课程报告的撰写。

这一段时间我们由被程序困扰到几乎崩溃到最后成就感的油然而生;从一整天的坐在电脑屏幕面前到现在的带着喜悦一遍一遍运行着程序;一遍遍的互相探讨解决大家遇到的问题到越来越发现编程的有意思,我到现在真的感觉认真自己做完这样一个系统收获颇大:

 

(1) 对结构化程序设计与函数的嵌套调用有了更清晰具体的认识 

(2) 引入了文件知识可以对电脑硬盘上的数据操作,改变了对C语言的狭义认识,认

识 到C语言实际上还可以实现更复杂丰富的功能来利用开发的软件来进一步实现对现实中的问题的解决 

(3) 学习到C语言的学习一定不不能忽视一个很小很小的细节,因为完全会导致不同

的结果 

(4) 对如何用C语言来完成一个较大的系统的整体思路有清晰的认识

(5)学习到基础知识是重中之重,只有扎实的基础,才能够更好的完成设计任务。

附录:

程序代码

#include

#include

#include

typedefstruct

{

charnumber[10];//书名

charname[20];//书名

charauthor[20];//作者名

charclassnumber[10];//分类号

charpublish[50];//出版单位

chartime[20];//出版时间

floatprice;//价格

}mbook;

typedefstruct

{

intcount;//书的本数

mbookbook[100];//最大可有100本书

}mlibrary;

mlibrarylibrary;

voidsave()//保存图书信息

{

FILE*fp;

if((fp=fopen("library.txt","w"))==NULL)

{

printf("\n\t不能保存图书信息\n");

return;

}

fwrite(&library.count,sizeof(int),1,fp);

fwrite(library.book,sizeof(library.book[0]),library.count,fp);

}

voidputin()/*定义录入函数*/

{

inty=1;

system("cls");

while(y)

{

printf("\n\t******************************\n");

printf("\n\t请输入您的书籍的书号:

");

scanf("%s",library.book[library.count].number);

printf("\t请输入书名:

");

scanf("%s",library.book[library.count].name);

printf("\t请输入作者名:

");

scanf("%s",library.book[library.count].author);

printf("\t请输入您的书籍的分类号:

");

scanf("%s",library.book[library.count].classnumber);

printf("\t请输入出版单位:

");

scanf("%s",library.book[library.count].publish);

printf("\t请输入出版时间:

");

scanf("%s",library.book[library.count].time);

printf("\t请输入该书的价格:

");

fflush(stdin);

scanf("%f",&library.book[library.count].price);

library.count++;

printf("\n是否继续录入(1.继续;0,退出录入并返回主菜单):

");

fflush(stdin);

scanf("%d",&y);

if(y!

=1)

{

y=0;

break;

}

}

save();

}

voidlookup()//定义浏览函数

{

inti;

system("cls");

printf("\t图书号-图书名--作者名--图书分类号--出版单位--出版日期--图书价格\n");

for(i=0;i

{

printf("\t%s\t%s\t%s\t\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].classnumber,library.book[i].publish,library.book[i].time,library.book[i].price);

}

fflush(stdin);

getchar();

}

 

voidsearch_by_classnumber()/*定义按书名查询*/

{

inti;

chars2[20];

intflag=1;

printf("\n\t*********************************\n");

printf("\n\t请输入要查询的书名:

");

fflush(stdin);

scanf("%s",s2);

printf("\t图书号--图书名--作者名--图书分类号--出版单位--出版日期--图书价格\n");

for(i=0;i

if(strcmp(s2,library.book[i].classnumber)==0)

{

flag=0;

printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%6.2f\n",

library.book[i].number,library.book[i].name,library.book[i].author,

library.book[i].classnumber,library.book[i].publish,

library.book[i].time,library.book[i].price);

}

if(flag)

{

printf("抱歉!

您所查找的图书信息不存在!

");

}

fflush(stdin);

getchar();

}

 

voidsearch_by_author()/*定义按作者名查询*/

{

intflag=1;

inti;

chars3[20];

printf("\n\t********************************\n");

printf("\n\t请输入要查询的书的作者名:

");

fflush(stdin);

scanf("%s",s3);

printf("\t图书号--图书名--作者名--图书分类号--出版单位--出版日期--图书价格\n");

for(i=0;i

if(strcmp(s3,library.book[i].author)==0)

{

flag=0;

printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].classnumber,library.book[i].publish,library.book[i].time,library.book[i].price);

}

if(flag)

{

printf("抱歉!

您所查询的图书信息不存在!

");

}

fflush(stdin);

getchar();

}

voidsearch()/*定义查询函数*/

{

inta;

system("cls");/*进行清屏*/

printf("\n========¥¥欢迎进入图书信息管理系统¥¥=============\n");

printf("\n|**************************************|\n");

printf("\n@开始查询@||\n");

printf("\n|&&1.通过分类号查询|\n");

printf("\n|&&2.通过作者名查询|\n");

printf("\n|&&0.退出查询并返回主菜单|\n");

printf("\n||");

printf("\n|**************************************|\n");

printf("\n=========¥¥欢迎进入图书信息管理系统¥¥=============\n");

printf("\n请选择您想要的查询方式:

");

fflush(stdin);

scanf("%d",&a);

switch(a)

{

case1:

search_by_classnumber();

break;

case2:

search_by_author();

break;

case0:

return;

}

}

voiddel()/*定义删除函数*/

{

inti;

charnumber[10];

system("cls");/*清屏*/

printf("\n\t*******************************\n");

printf("\n\t请输入您想要删除的图书信息:

");

fflush(stdin);

scanf("%d",number);

for(i=0;i

{

if(strcmp(number,library.book[i].number)==0)

break;

if(i!

=library.count)

{

for(;i

{

strcpy(library.book[i].name,library.book[i+1].name);

strcpy(library.book[i].number,library.book[i+1].number);

strcpy(library.book[i].publish,library.book[i+1].publish);

strcpy(library.book[i].classnumber,library.book[i+1].classnumber);

strcpy(library.book[i].author,library.book[i+1].author);

strcpy(library.book[i].time,library.book[i+1].time);

library.book[i].price=library.book[i+1].price;

}

library.count--;

}

else

printf("\n抱歉!

您所删除的图书信息不存在!

\n");

save();

fflush(stdin);

getchar();

}

}

 

voidupdate()//修改图书信息

{

inti;

charnumber[10];

system("cls");/*清屏*/

printf("\n\t********************************\n");

printf("\n\t请输入您想要修改的图书信息:

");

fflush(stdin);

scanf("%s",number);

for(i=0;i

{

if(strcmp(number,library.book[i].number)==0)

{

printf("\t图书号--图书名--作者名--图书分类号--出版单位--出版日期--图书价格\n");

printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1