c语言 毕业课程设计 报告 源代码.docx

上传人:b****4 文档编号:11359303 上传时间:2023-05-31 格式:DOCX 页数:74 大小:777.29KB
下载 相关 举报
c语言 毕业课程设计 报告 源代码.docx_第1页
第1页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第2页
第2页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第3页
第3页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第4页
第4页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第5页
第5页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第6页
第6页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第7页
第7页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第8页
第8页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第9页
第9页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第10页
第10页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第11页
第11页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第12页
第12页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第13页
第13页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第14页
第14页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第15页
第15页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第16页
第16页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第17页
第17页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第18页
第18页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第19页
第19页 / 共74页
c语言 毕业课程设计 报告 源代码.docx_第20页
第20页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言 毕业课程设计 报告 源代码.docx

《c语言 毕业课程设计 报告 源代码.docx》由会员分享,可在线阅读,更多相关《c语言 毕业课程设计 报告 源代码.docx(74页珍藏版)》请在冰点文库上搜索。

c语言 毕业课程设计 报告 源代码.docx

c语言毕业课程设计报告源代码

(此文档为word格式,下载后您可任意编辑修改!

 

《C语言程序设计》课程设计报告

 

题目:

图书管理、借阅系统

设计者:

李永曜

专业班级:

软件技术09信息六班

学号:

指导教师:

危锋

所属系部:

信息管理系

 

2009年12月28日

目录:

1概述3

1.1问题分析3

1.2功能3

2总体设计4

模块划分:

模块图及程序结构简单介绍4

3详细设计5

3.1密码验证5

3.2录入信息5

3.3按书名查看图书信息6

3.4按书号查看图书信息7

3.5查看所有已借图书信息8

3.6查看所有未借图书信息8

3.7按书名借阅图书9

3.8按书号借阅图书10

3.9按书名进行查找并修改信息11

3.10按书号进行查找并修改信息12

3.11删除所有图书13

3.12按书名删除图书信息14

3.13按书号删除图书信息15

3.14主函数16

4结果分析17

5总结与体会43

参考文献43

附录:

程序清单44

1概述

1.1问题分析

图书信息管理及借阅系统。

方便图书管理员管理图书,以及学生借阅图书。

1.2功能

1、建立图书信息库,包括:

书号,图书名称,出版社,出版时间和当前借阅状态;

2、程序分为两大模块:

图书管理员模块和用户模块。

管理员模块主要用于对图书信息的录入、修改或删除。

用户模块主要用于浏览图书信息和借阅图书;

3、保密:

进入管理员模式需要进行密码验证。

4、浏览:

用户可以通过多种方式进行浏览图书信息。

5、查找或修改:

可以通过书号或书名查找想看的书。

可以根据书号或书名进行修改、删除信息;

6、输出:

根据用户需求输出图书信息。

2总体设计

模块划分:

模块图及程序结构简单介绍

 

3详细设计

3.1密码验证

1)函数原形:

intmimayanzheng()

2)功能:

利用strcmp()字符串比较函数与实现初始化的密码进行对比。

与密码相同则进入管理员模式。

3)N-S流程图

定义temp_mima[20]用来存放用户输入的密码

输出提示:

请输入密码

给temp_mima[20]赋值

if(strcmp(temp_mima,mima)==0)

是否

返回1

返回0

4)说明:

当密码不正确时,直接返回欢迎界面(主菜单)。

3.2录入信息

1)函数原形:

voidxinxi()

2)功能:

利用printf()提示信息,scanf()函数对图书信息进行录入。

3)N-S流程图

定义循环变量i

输出提示,要求输入录入数量

fori=0toN

输入第i本书的编号(有防止编号相同的功能)

输入第i本书的名称

输入第i本书的出版社

输入第i本书的出版时间

输入第i本书的借阅状态(1表示已借,0表示未借)

输出提示:

录入完成

4)说明:

当密码不正确时,直接返回欢迎界面(主菜单)。

3.3按书名查看图书信息

1)函数原形:

voidshowbook_name()

2)功能:

利用printf()提示信息,scanf()函数输入要查找的图书名称并利用循环进行查找该图书。

如果找到则输出该图书的信息,反之则提示“不存在该书”。

3)参数及类型:

无。

4)N-S流程图

定义循环变量i;定义k用来标记是否存在该书,也可以利用k输出项目;定义n用来存放查找到的书的下标;定义字符数组book_name[20]存放用户输入的查询书名。

输出提示,要求输入图书名称

fori=0toN

if(strcmp(book_name,bk[i].name)==0)

是否

将下标存放到n中

if(k==0)

是否

输出“项目”

输出图书信息

if(bk[n].jie==1)

是否

输出图书状态:

已被借阅

输出图书状态:

可以节阅

输出提示:

按任意键返回

k++

是if(k==0)否

输出提示:

不存在该书,按任意键返回

3.4按书号查看图书信息

1)函数原形:

voidshowbook_num()

2)功能:

利用printf()提示信息,scanf()函数输入要查找的图书号并利用循环进行查找该图书。

如果找到则输出该图书的信息,反之则提示“不存在该书”。

3)参数及类型:

无。

4)N-S流程图

定义整形循环变量i;定义整形变量k用来标记是否存在该书,也可以利用k输出项目;定义整形变量n用来存放查找到的书的下标。

定义整形变量book_num用来存放用户输出的查询书号。

输出提示,要求输入图书号

fori=0toN

if(book_num==bk[i].num)

是否

将下标存放到n中

if(k==0)

是否

输出“项目”

输出图书信息

if(bk[n].jie==1)

是否

输出图书状态:

已被借阅

输出图书状态:

可以节阅

输出提示:

按任意键返回

k++

是if(k==0)否

输出提示:

不存在该书,按任意键返回

3.5查看所有已借图书信息

1)函数原形:

yijieyue()

2)功能:

利用循环和printf()函数来实现信息的输出。

3)参数及类型:

无。

4)N-S流程图

3.6查看所有未借图书信息

1)函数原形:

weijieyue()

2)功能:

利用循环和printf()函数来实现信息的输出。

3)参数及类型:

无。

4)N-S流程图

3.7按书名借阅图书

1)函数原形:

jie_name()

2)功能:

利用循环和printf()函数来实现信息的输出,strcmp函数实现查找图书。

3)N-S流程图

3.8按书号借阅图书

1)函数原形:

jie_num()

2)功能:

利用循环和printf()函数来实现信息的输出,利用循环实现查找图书。

3)N-S流程图

3.9按书名进行查找并修改信息

1)函数原形:

xiugai_name()

2)功能:

利用循环和printf()函数来实现信息的输出,利用循环找到要修改图书,并覆盖原值进行修改。

3)参数及类型:

无。

4)N-S流程图

3.10按书号进行查找并修改信息

1)函数原形:

xiugai_num()

2)功能:

利用循环和printf()函数来实现信息的输出,利用循环找到要修改图书,并覆盖原值进行修改。

3)参数及类型:

无。

4)N-S流程图

3.11删除所有图书

1)函数原形:

dele_all()

2)功能:

利用循环和printf()函数来实现信息的输出。

将长度N赋值为零时所有信息都会被删除。

3)参数及类型:

无。

4)N-S流程图

3.12按书名删除图书信息

1)函数原形:

dele_name()

2)功能:

利用循环和printf()函数来实现信息的输出。

利用strcmp()函数对图书信息进行查找。

将查找到的图书信息的下标记录,并将其后面的元素向前移动一个元素,这样就实现了删除单个图书信息。

3)参数及类型:

无。

4)N-S流程图

3.13按书号删除图书信息

1)函数原形:

dele_num()

2)功能:

利用循环和printf()函数来实现信息的输出。

利用strcmp()函数对图书信息进行查找。

将查找到的图书信息的下标记录,并将其后面的元素向前移动一个元素,这样就实现了删除单个图书信息。

3)参数及类型:

无。

4)N-S流程图

3.14主函数

2)功能:

调用各个模块实现各项功能

3)参数及类型:

无。

4)N-S流程图

4结果分析

1.欢迎界面。

2.选择“管理员模式”

3.输入密码正确后进入管理界面。

4.输入密码错误,将返回主菜单。

5.选择“录入图书信息”,并录入相应数据。

6.录入完成后系统提示录入完成。

7.返回后回到主界面。

再选择“查看图书信息”。

8.选择按“书名查看”,并输入要查看的书名。

9.按回车后若存在该书,则输出该书信息。

10.若不存在该书。

则提示不存在该书。

11.返回查看菜单,选则“按书号查看”,并输入要查看的书的编号。

12.按回车后,若存在该书则输出该书信息。

13.若不存在该书。

14.返回查看信息菜单后,选择“查看所有未借图书”。

15.返回查看信息菜单后,选择“查看所有已借图书”。

16.返回主菜单后选择“查看所有图书”。

17.返回查看菜单后按6返回管理员主菜单,选择3“修改图书信息”,进入“修改图书信息”菜单。

18.选择“1.按书名查找”,输入要修改的书的名称,按回车。

输入修改信息。

19.此时返回“查看菜单”选择“查看所有图书信息”,信息已经成功修改。

20.返回“修改菜单”,选择“输入按书号查找”,输入要修改的书号,并输入新信息。

21.此时返回“查看菜单”选择“查看所有图书信息”,信息已经成功修改。

22.返回“修改菜单”,选择“删除图书”,进入“删除图书界面”。

23.选择1“按书名删除”,并输入要删除的图书名称。

可以按“0”退出删除。

24.选择‘n’为取消删除。

25.选择‘y’则执行删除。

26.返回“查看信息”菜单,选择“查看所有图书信息”,则不会存在《name1》的信息。

27.返回。

选择“按书号查找”,输入要删除的图书的编号(按‘0’可以退出),并按回车,按‘y’删除,按‘n’撤销删除。

28.返回“查看信息”菜单,选择“查看所有图书信息”,则不会存在书号为:

1002的信息。

29.返回。

选择“删除所有图书”,若选择‘y’则删除所有图书,选择‘n’撤销删除命令。

选择‘n’。

选择‘y’。

30..返回“查看信息”菜单,选择“查看所有图书信息”,则不会存在任何信息。

此时系统提示:

31.重新录入信息。

32.返回“管理员模式”菜单。

选择4,修改管理密码。

33.输入初始密码。

如果输入错误会提醒输入错误。

输入正确则可以进行修改密码,但要进行两次输入,若两次输入相同,则密码被修改,输入两次密码不一致则修改失败。

(1)密码输入错误。

(2)密码输入正确,但两次输入新密码不一致。

(3)输入密码正确,修改密码两次输入一致,则密码修改成功。

再次进入“管理员模式”需要新密码。

(4)再次登录管理员模式时输入旧密码则提示错误。

(5)输入修改后的密码则进入管理模式。

34.选择“客户模式”。

35.选择查看图书。

36.此时和管理员模式的查看一样。

选择5查看所有图书。

37.返回“客户模式”,选择2,“借阅图书”。

38.选择“按书名借阅”。

并输入书名,按回车。

若该书可以被借阅,则提示是否借阅。

(1)输入的书可以被借阅。

(2)输入的书不可以借阅,或者不存在该书。

(3)输入的书可以被借阅,但借阅取消。

(4)输入的书可以被借阅,并且确定借阅。

39.返回选择“查看所有图书信息”,此时可以看到图书的借阅状态已经改变。

40.返回“按书号借阅”,功能和“按书名借阅”相同。

41.返回选“查看图书信息”,该图书的借阅状态已经改变。

42.选择“关于”,则输出本系统结构图:

42.选择“退出”程序。

程序演示到此结束。

5总结与体会

第一次做这么复杂的程序,感受颇多。

(一)以前写程序都是“写-想-图”模式,经过这次锻炼,使我深刻的体会到“想-图-写”模式的正确性。

所谓“写-想-图”模式,就是先写,不论题目是什么,先写,然后再想如何写正确,写错了也不清楚是哪里错了,只有当程序完全编写完之后在调试阶段进行改错,最后再根据自己写的代码画N-S流程图。

而“想-图-写”模式则是先构思,构思清晰之后再画N-S流程图,最后依据自己画的N-S流程图进行编程。

这样的好处在于:

1.编写程序有条理,思路清晰。

2.不容易出现逻辑错误。

(二)虽然编写了很多小程序,但是还是不可避免的出现些状况,例如:

存放姓名或者出版社的字符数组忘记给长度。

结构体交换出现问题等等,以后会努力避免出现。

(三)很多模块功能的实现其实很简单,代码也都是学过的,只是那种“思想”不容易想。

例如:

删除模块,如果想删除一本书的信息,分为两种情况:

1.删除的是最后一本书,此时,只要将结构体数组的长度减一即可。

2.删除的不是最后一本书,此时,将该书的下标记下,并将该下标后面的所有元素依次向前移动以个元素,将要删除的信息覆盖,再将结构体数组的长度减一即可。

(四)借助Internet,我学到了更多的知识。

像产生随机数,虽然书上也有,但是书上的方法不能保证在每个时间都产生不同的随机数,通过Internet我知道了怎样在每个时间都能产生不同的随机数(srand((unsigned)time(NULL);rand()%100表示随机出现0~99之间的整数,包含于:

include“stdlib.h”和include“time.h”)。

在Win-tc中clrscr();(包含于include“conio.h”)是清屏函数,但在Visualc++6.0中system(“cls”);(包含于include”stilib”,include”conio.h”)是清屏函数。

(五)同过平常练习和知识的积累,有些自己曾经玩过的游戏编起来并不是那么复杂,使自己对编程越来越感兴趣。

每当成功的调试了一个程序后,心里都有一种说不出的愉悦,之前的辛苦和劳累全然不见了。

(六)我之所以有今天的成绩,全都源于老师您对我的栽培,在此我要对您说声谢谢!

参考文献

[1]方风波,C语言程序设计(第二版),北京:

地质出版社,2009.5

附录:

程序清单

#include"stdio.h"

#include"conio.h"

#include"string.h"

#include"stdlib.h"

intN;

charmima[20]="liyongyao2009";

/**********定义图书结构体类型book*******/

structbook

{

longnum;

charname[20];

charpublish[20];/*出版社*/

structtime

{

intday;

intmonth;

intyear;

}t;

intjie;/*借阅*/

}bk[20];

/********建立图书信息库********/

voidxinxi()

{

inti;

system("CLS");

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

printf("\t\t录入图书信息\n");

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

printf("\t\t请输入您要录入的数量:

");

scanf("%d",&N);

for(i=0;i

{

printf("\t\t请输入第%d本书的编号:

",i+1);

scanf("%d",&bk[i].num);

printf("\t\t请输入第%d本书的名称:

",i+1);

scanf("%s",bk[i].name);

printf("\t\t请输入第%d本书的出版社:

",i+1);

scanf("%s",bk[i].publish);

printf("\t\t请输入第%d本书的出版时间(用逗号隔开):

",i+1);

scanf("%d,%d,%d",&bk[i].t.year,&bk[i].t.month,&bk[i].t.day);

printf("\t\t该书是否已经被借阅,已被借阅输入'1',未被借阅输入'0':

");

scanf("%d",&bk[i].jie);

printf("\n");

}

system("CLS");

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

printf("\t\t信息录入完成\n");

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

printf("\n\t\t按任意键继续...\n");

}

/******主菜单******/

intmymainmenu()

{

intx;

printf("\n\n\n\n");

printf("\t\t|-|\n");

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

printf("\t\t|======================|\n");

printf("\t\t|欢迎光临图书管理系统|\n");

printf("\t\t|======================|\n");

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

printf("\t\t|1.管理员模式|\n");

printf("\t\t|2.客户模式|\n");

printf("\t\t|3.退出系统|\n");

printf("\t\t|--|\n");

printf("\n\t\t请输入您的选择:

");

scanf("%d",&x);

returnx;

}

/**************管理员密码验证*****************/

intmimayanzheng()

{

chartemp_mima[20];/*用来存放用户输入的密码*/

printf("\n");

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

printf("\t\t欢迎使用管理员模式\n");

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

printf("\n");

printf("\t\t请输入密码:

");

scanf("%s",temp_mima);

if(strcmp(temp_mima,mima)==0)/*比较密码*/

return1;

else

return0;

}

/**************修改密码***********/

voidxiugaimima()

{

chartemp_mima[20],temp1[20],temp2[20];/*temp_mima[20]用来存放用户输入的密码,temp1[20],temp2[

20]分别用来存放用户输入的两次修改的密码*/

printf("\n");

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

printf("\t\t修改密码\n");

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

printf("\n");

printf("\t\t请输入原始密码:

");

scanf("\t\t%s",temp_mima);

while

(1)

{

if(strcmp(temp_mima,mima)==0)/*比较密码*/

{

printf("\t请输入新密码:

");

scanf("%s",temp1);

printf("\t请再输入一次:

");

scanf("%s",temp2);

if(strcmp(temp1,temp2)==0)/*如果输入的两次新密码都相同*/

{

printf("\t修改密码成功!

!

请记牢密码,任意键返回...");

strcpy(mima,temp1);

getch();break;

}

else

{

printf("\t输入两次密码不相同,修改失败!

任意键返回...");

getch();

break;

}

}

else

{

printf("\t密码错误!

您不能进行密码修改!

任意键返回...");

getch();

break;

}

}

}

/**************管理员模式****************/

intadm()

{

intx;

printf("\n\n\n\n");

printf("\t\t|-|\n");

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

printf("\t\t|======================|\n");

printf("\t\t|管理员模式|\n");

printf("\t\t|======================|\n");

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

printf("\t\t|1.录入图书信息|\n");

printf("\t\t|2.查看图书信息|\n");

printf("\t\t|3.修改图书信息|\n");

printf("\t\t|4.修改管理密码|\n");

printf("\t\t|5.退出系统|\n");

printf("\t\t|-|\n");

printf("\n\t\t请输入您的选择:

");

scanf("%d",&x);

returnx;

}

/******************客户模式********************/

intpeo()

{

intx;

printf("\n\n\n\n");

printf("\t\t|-|\n");

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

printf("\t\t|======================|\n");

printf("\t\t|欢迎光临|\n");

printf("\t\t|======================|\n");

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

printf("\t\t|1.查看图书信息|\n");

printf("\t\t|2.借阅图书|\n");

printf("\t\t|3.退出系统|\n");

printf("\t\t|-|\n");

printf("\n\t\t请输入您的选择:

");

scanf("%d",&x);

returnx;

}

/*********查看所有图书*******/

voidshow_all_book()

{

inti;

if(bk[0].num==0&&bk[0].t.year==0||N==0)/*当bk[0].num,bk[0].t.year,结构体数组等值同时为零时表示无图书信息*/

printf("\t数据不存在,请先录入数据!

\n\t\t按任意键返回...");

else

{

printf("\t编号图书名称出版社出版时间状态\n");

for(i=0;i

{

printf("

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

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2