c语言课程设计报告.docx

上传人:b****2 文档编号:23223900 上传时间:2023-05-15 格式:DOCX 页数:47 大小:68.68KB
下载 相关 举报
c语言课程设计报告.docx_第1页
第1页 / 共47页
c语言课程设计报告.docx_第2页
第2页 / 共47页
c语言课程设计报告.docx_第3页
第3页 / 共47页
c语言课程设计报告.docx_第4页
第4页 / 共47页
c语言课程设计报告.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

c语言课程设计报告.docx

《c语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告.docx(47页珍藏版)》请在冰豆网上搜索。

c语言课程设计报告.docx

c语言课程设计报告

 

程序设计语言

课程设计报告

 

 

 

选题名称:

图书馆管理系统

小组组长姓名(学号):

赵政康()

组员姓名(学号):

张涛()周杰文()

任课教师:

陈腊梅

 

报告递交日期:

2009年9月8日

第一章C语言课程设计任务书

一、课程设计目的

程序设计语言课程设计是学生在学习完C语言课程后集中安排的1周的实践技能训练环节。

它的目的是通过实践环节的训练,使学生进一步加深对C语言知识的综合理解,提高C语言应用技能,并结合专业特点培养学生计算机程序的应用能力。

本环节结合计算科学专业的特点,培养学生阅读本专业相关领域C语言程序的能力,分析并掌握程序的设计思想和方法。

通过训练,培养学生查阅C语言相关资料能力、分析和阅读程序的能力,应用C语言基本知识设计小型应用程序的能力。

二、课程设计题目(自选题目1个)

1、C语言图形(动画)演示

2、学生成绩管理

3、个人通讯录

4、简易计算器

5、图书管理系统

三、课程设计内容(课程设计所应完成的主要环节或项目)

1、C语言图形(动画)演示:

目  标:

设计一个各种几何图形的C语言的演示程序,或者设计一个小型的动画或游戏程序。

要  求:

掌握C语言图形设计技术,熟练应用条件语句、循环语句、定义函数、数组或结构体,演示程序要有菜单功能,动画设计要有提示功能。

自行设计的程序不少于100行。

程序要有详细的注释,并画出程序流程图及必要的说明文档。

2、学生成绩管理:

目  标:

输入5—10名学生有关的数据,先存放在内存中,根据需求增加新记录或打印已有记录清单。

成绩录入(3--5门)后存盘,要统计学科最高分、最低分、平均分、全班名次、成绩分布等。

要  求:

具备菜单功能或详细的提示功能,至少具备数据输入、输出、查询、删除、文件保存、文件读入中的两项功能。

能力强的同学可以设计表格化输出。

3、个人通讯录:

目  标:

设计一个能显示的个人通讯录程序,包涵15—20个有关的数据,具备输入、查询、插入、删除等功能。

要  求:

具备菜单功能或详细的提示功能,具备汉字输入输出功能,至少具备数据输入、输出、查询、删除、文件保存、文件读入中的两项功能。

能力强的同学可以设计表格化输出。

熟练掌握文件或结构体的操作,程序中至少要有一个自定义结构体和文件。

4、简易计算器

目标:

设计一个能进行简单的计算器,能够实现整数的加、减、乘、除四则运算。

该程序显示用GUI用户界面。

用图形界面实现。

要求:

熟悉C语言图形模式下的编程。

熟练掌握结构体、数组、绘图等方面的知识。

5、设计图书管理系统

主要功能:

1、新书入库

2、借阅登记、管理

3、借阅查询

4、催还、预约

5、遗损处理

要求:

能实现以上基本功能,界面友好、清晰

(注意:

该题可以自由发挥其它功能,但要求用结构体数组、文件、函数等工具来处理,也可以用指针、链表等工具来处理)

四、课程设计涉及知识范围(主要的先修课程及有关的实践环节)

1、C语言程序设计基本理论知识和上机编程的基本技能;

五、课程设计方法、步骤和要点(结合设计题目撰写)

1、教师指导:

教师讲解集中周的任务、目的、方法。

介绍各个题目的基本知识和设计方法及相关内容演示,学生根据个人兴趣选题。

2、资料调研:

学生根据选题情况,查阅相关资料,确定设计目标和任务。

3、画出程序框图和功能说明;详细编写程序和调试。

最后提交设计报告,进行程序演示,教师进行成绩评定。

六、课程设计主要技术关键的分析、解决思路和方案比较等

1、     资料查找:

可以通过图书、网络等方式查找。

在网络查找时注意关键词的选用,如“C语言绘图”、“C语言图形设计”、“C语言科学计算”等。

2、     基本知识掌握:

课程设计中必须要涉及到书本中没讲到的内容,在教师指导情况下,同学要主动掌握这些技能,查阅资料,把握关键技术,上机验证。

如图形模式的设置,图形函数的使用,结构体、数组及指针的应用。

要注意已学知识要巩固,加深理解并能主动应用。

未学知识部分要学会查找自己需要的知识,学会筛选知识,做好笔记,进行验证。

3、     阅读程序:

在初次编写程序时,建议先查找并阅读类似功能程序,分析作者思路,学习编程的方法。

执行“先模仿再创新”的技术路线。

4、     设计阶段:

在程序功能设计中要注意“从上到下,从宏观到具体”的原则,main函数要简洁。

功能选择的难度要合适,不要贪图功能齐全,要注重程序的质量。

5、     调试阶段:

注意大程序的调试方法和技巧。

报告撰写阶段:

按照学校要求格式撰写,注意条理清晰,语言流畅。

可以引用一些资料,但不能照抄照搬(引用资料要注明出处)。

七、课程设计注意事项(学习态度、学习方法、资料使用、基本技能运用等)

1、     在思想认识上,学生应高度重视课程设计对掌握C语言的重要性,由于课程设计是在考试后进行,学生应知道通过课程设计加深对C语言的了解。

2、     在学习态度上,应当勤奋。

课程设计时间紧,困难不少,因此要有主动解决困难的勇气和方法,不能有畏难情况和敷衍情绪。

应当积极利用课内外时间,完成任务。

3、     在学习方法上,要注意充分运用教师的指导作用,及时和教师沟通。

同学也要及时研究交流。

4、     教师在设计题目时要充分考虑学生的兴趣、学生能力,并和专业相结合;教师在指导中要激发同学的兴趣,鼓励同学进行大胆创新。

八.设计方式和安排

1.分组选题:

最多3人一组,每组一个课题(可根据课题,工作量大小,合理分配人数)每组设组长一名,负责该组设计工作的协调、分工。

2.设计过程:

1)分析设计准备阶段(按组讨论、对系统功能进行分析,确定算法,并进行明确分工)

2)编程调试阶段(绘制流程图,编制源程序;上机调试,修改程序)

3)总结报告和书写说明书阶段(撰写上交相关资料)

九、课程设计及报告书具体要求:

1.必须独立思考、设计、调试通过程序,满足任务书要求,可参考例程。

2.报告书的书写格式参照以下条目,使用B5纸张,打印、手工书写均可。

3.首页为封面,要求写清楚标题、班级、姓名、指导教师、完成日期。

(自行设计)

4.第一章为任务书。

5.第二章为老师评语。

6.从第三章开始,为报告书正文,具体内容如下:

①整个程序的功能分析,并根据分析画出流程图。

②组成程序的各个模块分析、实现。

③附程序清单。

④系统设计难点及其解决方法

⑤不足之处

⑥人员分工说明

⑦本次课程设计的小结与参考文献

十、推荐参考资料

1、《C语言程序设计实验指导与课程设计》

清华大学出版社游洪跃等主编

2、《C语言课程设计案例精编》清华大学出版社姜灵芝等主编

 

第二章教师评语

组长:

 

成员:

 

第三章课设报告正文

1、程序功能简介

该程序用于学校图书馆事务管理,能够实现以下几项功能:

新书入库、借阅查询、借阅登记管理、图书馆职工资料整理修正。

2、程序功能分析

程序的总体程序框图图如下:

从这里不难看出,各个模块之间的关系是相互联系的。

首先,主函数包含了所有的子函数。

主函数是整个程序的核心。

子函数之间也是有联系的,查书,借书,还书是在加入图书和学生信息明确后的情况下才能进行的,所以图书加入模块和学生信息管理模块是非常重要的!

3、组成程序的各个分析、实现

3.1主函数程序(N-S)流程图及运行界面

主函数main()

定义变量charch1,ch2,ch3,ch4;

textbackground(6);textcolor(7);定义窗口和字体颜色

switch(ch1)

case'1':

chabook();break;查书

case'2':

lendbook();;break;借书

case'3':

switch(ch2)系统管理

case'1':

addbook();break;添加新书

case'2':

delbook();break;删除图书资料

case'3':

changebook();break;修改图书资料

case'4':

bookcount();getch();break;书籍统计

case'5':

switch(ch3)职工资料管理

case'1':

addemploy();getch();break;

case'2':

delemploy();break;

case'3':

changemploy();break;

case'4':

employcount();getch();break;

case'6':

switch(ch4)学生资料管理

case'1':

addcar();break;

case'2':

delcar();break;

case'3':

lendcount();break;

case'4':

carcount();break;

case'0':

exit(0);break;返回主界面

case'4':

huanbook();break;还书

case'0':

exit(0);退出程序

3.2运行程序界面截图如下:

 

主界面

 

查书界面

借书界面

 

系统设置界面

 

3.3源程序各模块中函数分析:

1)程序使用了5个头文件#include是输入输出头文件;#includeANSIC标准要求在使用字符串函数时要包含的头文件;#include是#include是#include是ANSIC标准要求的在使用字符函数时要包含的头文件。

2)程序中包含不少预处理命令,除去头文件预处理,为了使程序简明,还加入了许多宏定义预处理,即定义符号常量,#defin是宏定义命令。

3)源程序中使用关键字struct声明类,比如structstudent定义一个学生类型,用于存放借出的书籍;structemploy定义一个职工类型等等。

4)还书函数huanbook()

说明:

这是一个用户自定义函数,下面是其定义的数据

FILE*fp,*fp2;/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/

inti,n;/*定义两个整型数据*/

intcarnum;/*定义整型卡号数据*/

charlendbook[10];/*定义一个字符数组来存储借出的书籍*/

先使用if语句判断使用者的身份,即卡号验证;接着键入要还之书,用for语句判断图书借阅档案是否正确;下面再用fwrite函数重置该书的资料,即是否被借阅。

该函数中用到指针,fp=fopen("record.txt","r");/*fp中存放有car.txt(卡号信息)record.txt(借书的学生信息)*/

构造一系列函数fwrite(),fclose(),fopen()等等,使还书,修改资料一并完成,一气呵成,不拖泥带水!

5)查书函数chabook()

说明:

使用switch语句,分出两种查询方法,case‘1’:

按照书名查询;case‘2’:

按照作者查找。

图书资料的给出,是通过构造类实现的,使用struct构造book类,类内包含的数据有:

书的序列号intbookcar,书名charbookname,作者charbookcreater,图书是否被借出Inttureflase

6)借书函数lendbook()

还是先定义变量:

FILE*fp,*fp2;

inti,n;

intcarnum;

定义了指针变量,通过使用printf输入函数输入用户卡号,将for语句和if语句嵌套使用验证无误后,在输入要借书名,再一次forif嵌套验证是否有存量,最后通过构造的一系列函数fwrite(),fclose(),fopen()等等,使借书,修改资料一并完成,一气呵成,不拖泥带水!

7)职工信息管理模块

定义职工类structemploy,类内包含信息有编号intemploynum,姓名charemplorname,年龄intemployage,性别charemploysex【2】,工资longint

Employtage。

使用switch语句选择操作。

学生信息管理与之类似。

8)新书入库模块addbook()/*增加图书函数*/

{

FILE*fp;

inti=0;

charchoice='y';

fp=fopen("book.txt","a+");

while(choice=='y'||choice=='Y')

{

printf("请你输入第%d本书的序号\n",i+1);

scanf("%d",&book[i].booknum);

printf("请你输入书名\n");

scanf("%s",book[i].bookname);

printf("请你输入书的作者\n");

scanf("%s",book[i].bookcreat);

printf("请设为1或0,1代表书还没人借,0表示书已经借出\n");

printf("请你设定书的状态\n");

scanf("%d",&book[i].turefalse);

fwrite(&book[i],sizeof(structbook),1,fp);

printf("是否要输入下本书,N代表\"否\",Y代表\"是\"\n");

scanf("%s",&choice);

}

fclose(fp);

}

就是不断使用printf和是scanf函数输入新书信息并验证,保存。

3.4源程序:

#include

#include

#include

#include

#include

#defineSTACK_INIT_SIZE10

#defineOK1

#defineTRUE1

#defineFALSE0

#defineERROR0

structstudent/*定义学生类型,用于存放借出的书籍*/

{

intcarnum;

charlendbook[10];

}student[1000];

structemploy/*定义职工类型*/

{

intemploynum;/*职工的编号*/

charemployname[15];/*职工的名字*/

intemployage;/*职工年龄*/

charemploysex[2];/*职工的性别*/

charemployleve[10];/*职工学历*/

longintemploytage;/*职工工资*/

}employ[50];

structbook/*定义书的类型*/

{

intbooknum;/*书的序列号*/

charbookname[10];/*书名*/

charbookcreat[10];/*书的作者*/

intturefalse;/*用于借书和还书模块判断一本书是否借出的条件*/

}book[1000];

structcar/*借书卡的数据类型*/

{

intcarnum;/*卡号*/

charstudentname[10];/*卡主人*/

intstudentclass;/*卡主人的班级*/

}car[1000];

huanbook()/*还书函数*/

{

FILE*fp,*fp2;/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/

inti,n;

intcarnum;

charlendbook[10];

printf("Typeyourcardnum!

\n");

scanf("%d",&carnum);

fp=fopen("car.txt","r");/*读取卡号记录*/

for(i=0;fread(&car[i],sizeof(structcar),1,fp)!

=0;i++)/*fread(&car[i],sizeof(structcar),1,fp)!

=0判断是否读到文件尾*/

{

if(car[i].carnum==carnum)/*卡号存在,进入下一循环*/

{

n=i;

fclose(fp);

printf("typethenameofthereturningbook!

\n");

scanf("%s",lendbook);

fp=fopen("record.txt","r");/*fp中存放有car.txt(卡号信息)record.txt(借书的学生信息)*/

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)/*判断是否借阅了输入的书*/

{

if(strcmp(student[i].lendbook,lendbook)==0)/*借阅了该书,进入下一循环,否则出错显示*/

{

fclose(fp);

fp=fopen("record.txt","r");

fp2=fopen("bookl.txt","w");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)

{

if(strcmp(student[i].lendbook,lendbook)==0)

{

continue;/*删除还掉的书的借书记录*/

}

fwrite(&student[i],sizeof(structstudent),1,fp2);/*写入原来没还的书的记录*/

}

fclose(fp);

fclose(fp2);

fp=fopen("record.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)!

=0;i++)/*=o是读到结束*/

{

fwrite(&student[i],sizeof(structstudent),1,fp);/*将借书记录信息写回*/

}

fclose(fp);

fclose(fp2);

fopen("bookl.txt","w");/*清临时文件的记录*/

fclose(fp2);

fp=fopen("book.txt","r");

fp2=fopen("bookl.txt","w");

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)/*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/

{

if(i==n)

{

book[i].turefalse=1;

fwrite(&book[i],sizeof(structbook),1,fp2);/*将还的书的原来状态设为无人借阅的*/

continue;

}

fwrite(&book[i],sizeof(structbook),1,fp2);

}

fclose(fp);

fclose(fp2);

fp=fopen("book.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!

=0;i++)

{

fwrite(&book[i],sizeof(structbook),1,fp);/*将临时文件写回*/

}

fclose(fp);

fclose(fp2);

fopen("bookl.txt","w");/*清临时文件*/

fclose(fp2);

printf("overreturning!

pressanykeytoexit!

\n");

getch();

return;

}

}

printf("youhavenotborrowedthisbook,pressanykeytoexit!

\n");/*出错提示*/

fclose(fp);

getch();

return;

}

}

printf("ineffectivecard!

pieasecallthelibrarior!

\n");/*出错提示*/

fclose(fp);

getch();

}

lendcount()/*借书统计函数*/

{

FILE*fp;

inti,n=0;

fp=fopen("record.txt","r");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)

{

printf("cardnum:

%dtheborrowedbook:

%s\n",student[i].carnum,student[i].lendbook);

n=n+1;

}

fclose(fp);

printf("therehavebeen%dbooksborrowed!

\n",n);

printf("pressanykey\n");

getch();

}

chabook()/*查找图书函数*/

{

charch5;

do

{clrscr();

printf("---------------welcometotushuchaxunsystem!

--------------\n");

printf("1:

\n");

printf("2:

\n");

printf("0:

\n");

printf("pleasepress0--2!

\n");

scanf("%s",&ch5);

switch(ch5)

{

case'1':

clrscr();findbook();getch();break;

case'2':

clrscr();findbook2();getch();break;

case'0':

break;

default:

printf("ineffectiveopartion\n");getch();break;

}

}while(ch5!

='0');

}

findbook()/*按书名查找函数*/

{

FILE*fp;

charbookname[10];

intture,i;

fp=fopen("book.txt","r");

printf("readthebooknameofyousearching\n");

scanf("%s",bookname);

for(i=0;fread(&book[i],sizeof(s

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

当前位置:首页 > 高中教育 > 数学

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

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