394210耀智课程设计说明书文档格式.docx

上传人:b****4 文档编号:17614387 上传时间:2022-12-07 格式:DOCX 页数:53 大小:483.50KB
下载 相关 举报
394210耀智课程设计说明书文档格式.docx_第1页
第1页 / 共53页
394210耀智课程设计说明书文档格式.docx_第2页
第2页 / 共53页
394210耀智课程设计说明书文档格式.docx_第3页
第3页 / 共53页
394210耀智课程设计说明书文档格式.docx_第4页
第4页 / 共53页
394210耀智课程设计说明书文档格式.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

394210耀智课程设计说明书文档格式.docx

《394210耀智课程设计说明书文档格式.docx》由会员分享,可在线阅读,更多相关《394210耀智课程设计说明书文档格式.docx(53页珍藏版)》请在冰豆网上搜索。

394210耀智课程设计说明书文档格式.docx

删除指定学号的学生数据,对学生数据进行排序,分别在链表头部,中间,末尾插入学生数据。

(四)学生成绩文件管理

定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩,输出三门课程的平均分数最高的学生的学号、姓名及其平均分,将10个学生的相关数据,存入文件中,再从文件中读出,按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件中,再从文件中读取第1,3,5,7,9个学生的数据。

(五)图书信息管理系统设计:

图书信息包括:

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

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

(1)系统以菜单方式工作。

?

(2)图书信息录入功能--输入。

(3)图书信息浏览功能--输出。

(4)查询和排序功能:

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

按书名查询

按作者名查询

(5)图书信息的删除与修改。

三、具体要求

围绕课程设计的目的和意义,基本要求如下:

1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;

2、快速总结C程序设计语言的精髓,如:

函数的概念、函数的设计和函数的调用;

3、快速熟悉TuberC或C++的上机环境。

能熟练进行高级编辑操作(特别是字块操作);

熟悉步进式、断点跟踪的程序调试方法,提高工作效率。

4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"

定时间进度。

如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。

5.学习并了解良好的程序设计风格。

按质、按量、并按时间完成课程设计的任务。

6.提供可运行的课程设计系统,参加上机面试答辩。

本次课程设计的重点是:

学会设计并编写函数,掌握好各函数之间的调用关系;

利用文件操作函数,建立数据库并完成对数据库的各种操作;

掌握几种典型算法的应用(如:

冒泡法、选择排序法和折半查找法)。

同时锻炼学生根据题目进行分析、设计、编码、调试程序和书写必要文档的综合处理能力,从实践中学习并体会程序设计的结构化思想和设计方法。

四、进度安排

依照教学计划,课程设计时间为3周。

按照软件工程的思想,软件系统的分析设计至关重要,并要充分重视书写“文档”。

避免甚至杜绝“拿到题目就编码”的现象。

建议将时间分为三个阶段:

第一阶段,根据题目要求,拿出系统的总体设计方案:

即构思各程序模块的算法,并画出相应的N-S图,同时编写相应的文档;

第二阶段,根据N-S图编写程序代码并单独调试,再将调试通过的各个子模块进行集成调试;

第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。

三个阶段时间分配的大概比例是:

35:

45:

20。

五、完成后应上交的材料

1.课程设计的题目、系统的总功能和各子模块的功能;

2.题目的设计思想(或算法)简述;

3.主要程序的框图(要求用N-S图);

4.源程序代码(要求在关键的位置有注释,从而增加程序的可读性);

5.课程设计的总结报告,主要包括以下内容:

(1)课程设计中遇到的主要问题和解决方法;

(2)你的创新和得意之处;

(3)设计中存在的不足及改进的设想;

(4)本次课程设计的感想和心得体会。

以上完成的源程序及相关文档,填写在《课程设计说明书》上,要求干净整洁,符合课程设计的要求和规范。

六、总评成绩

指导教师签名日期年月日

系主任审核日期年月日

一、设计任务的主要算法分析……………………………………………1

1.1主要算法具体分析………………………………………………2

二、程序的流程图…………………………………………………………3

2.1学生成绩排名……………………………………………………3

2.2根据条件进行学生成绩排名……………………………………4

2.3链表的操作………………………………………………………7

2.4学生成绩文件管理………………………………………………7

2.5图书信息管理系统的N-S图……………………………………8

1.系统总流程图模块…………………………………………8

2.录入功能模块………………………………………………9

3.浏览功能模块…………………………………………10

4.查询功能模块………………………………………………11

5.排序功能模块…………………………………………12

6.删除功能模块………………………………………13

7.修改功能模块……………………………………………14

8.文件保存功能模块………………………………………14

三、各个模块的源代码…………………………………………………15

3.1学生成绩排名…………………………………………………15

3.2根据条件进行学生成绩排名……………………………………17

3.3链表的操作………………………………………………………22

3.4学生成绩文件管理………………………………………………32

3.5图书信息管理系统………………………………………………39

A.主函数………………………………………………………39

B.口令功能模块………………………………………………39

C.菜单功能模块………………………………………………40

D.录入功能模块………………………………………………41

E.文件保存模块………………………………………………43

F.浏览功能模块…………………………………………………44

H.查询功能模块…………………………………………………45

I.排序功能模块…………………………………………………48

J.修改功能模块…………………………………………………50

K.删除功能模块…………………………………………………52

四、程序运行效果图……………………………………………………54

4.1用户登陆画面………………………………………………54

4.2菜单功能模块………………………………………………55

4.3录入功能图示………………………………………………56

4.4浏览功能图示………………………………………………56

4.5查询功能图示………………………………………………57

4.6排序功能图示…………………………………………………58

4.7修改功能图示…………………………………………………58

4.8删除功能图示…………………………………………………59

五、设计心得…………………………………………………………60

5.1课程设计中遇到的主要问题和解决方法…………………60

5.2本程序的创新和得意之处…………………………………60

5.3设计中存在的不足及改进的设想…………………………60

5.4本次课程设计的感想和心得体会…………………………60

一.算法分析

初始化:

建立空链表

录入:

录入图书信息到链表

浏览:

向屏幕输出图书信息(就是读出函数)

查询:

按书名或作者名查找图书

删除:

删除图书信息

排序:

按照书名排序

保存:

把链表记录保存成文件

退出:

退出程序

定义图书信息的结构体如下:

structlibrary

{

longnum;

charbookname[20];

charauthor[20];

chartype[20];

charpublishing_house[20];

charpublishing_time[20];

floatsale;

structlibrary*next;

};

算法分析:

这个图书室信息系统主要是一个以动态链表的应用为基础加上C的基础语法一起的一个综合系统程序。

1主程序是用switch函数做为一个功能的选择函

2录入函数是一个建立动态链表的应用

3浏览函数是一个输出动态链表的应用

3查询函数是一个在链表中应用到各种“找值”函数的程序,例如按作者名或者书名找图书信息的话就要用字符串查找算法等等。

4删除函数是一个链表的一个指针的变化程序利用指针的作用去“删除”(不再指向)掉我们不需要的信息和“插入”(指向)我们需要的信息。

5排序函数和删除函数其实是原理是差不多,都是利用了指针的指向作用,把指向第二结构体的指针指向第一个,把第一个的指针指向第二个,那么两个结构体里面的位置就掉换了,就是我们所说排序。

6保存文件函数是把链表中的信息保存起来。

7退出程序函数是结束这个程序.

二.程序的流程图

2.1学生成绩排名

2.2根据条件进行学生成绩排名

输入成绩的学生数m

i=0;

输入m个学生的成绩b[i]

i<

m

选择排序算法k:

A:

选择法升序、B:

选择法降序、C:

冒泡法升序、D:

冒泡法降序

调用函数sort(b,m,k);

输出b[i]

2.3链表的操作

2.5总流程图

说明:

这个基本是口令和菜单的结合体,用户先同过口令,3次自己关闭,用个IF就可以了,接着是接受功能键选择,根据SWITCH选择菜单里面我们需要的功能。

0功能键是退出系统

2.5.1录入函数(creat)

这个函数把指针p1.p2指向新开的空间,然后再向空间里面写如数据,进而做成我们所需要的链表。

2.5.2浏览函数(out)

和录入函数差不多也是把P1指向新开的空间,不过不同的这次是从文件里面读入已经保存的数据。

不是录入数据。

2.5.3查询函数(check)

先是用字符串比较函数STRCMP去找用户选择的查询方式,然后再用一个STRCMP一步一步在链表中再出信息,没有则退出。

2.5.4排序函数(score)

用字符串比较函数比较两个书名之间的大小,小在前,大在后。

如果条件成立则交换结构体里面的数据。

外面用选择循环就可以全部排序。

2.5.5删除函数(del)

利用指针的指向性,当STRCMP函数=0时找到要删除的图书信息时,把指向这个信息结构体的指针指向下一个结构体,把这个信息挡在链表外面。

P2-》NEXT=P1》NEXT。

2.5.6修改函数(correct)

用STRCMP函数找到需要修改的书名,然后找到修改的类型,再输如修改后的信息。

2.5.7文件保存函数(save)

用fwrite函数写入文件,当p->

next!

=0时一个一个吧数据写入文件知道p=NULL为止。

三.原代码程序

3.1学生成绩排名

#include<

stdio.h>

voidmain()/*这是主函数*/

inta[11],i,j,t;

printf("

请输入10个学生的成绩\n"

);

for(i=0;

10;

i++)

scanf("

%d"

&

a[i]);

10个学生的成绩从高到低排列的顺序为\n"

/*10个学生成绩排列代码*/

{

for(j=i+1;

j<

j++)

{

if(a[i]<

a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

printf("

%d"

a[i]);

}

\n请再输入一个学生的成绩\n"

scanf("

a[10]);

11个学生的成绩从高到低排列的顺序为\n"

/*11个学生成绩排列代码*/

11;

\n11个学生成绩的反序排列为\n"

/*11个学生成绩的反序排列代码*/

=5;

t=a[i];

a[i]=a[10-i];

a[10-i]=t;

\n"

}

3.2根据条件进行学生成绩排名

voidmain()/*这是主的函数*/

int*sort1(inta[],intn);

int*sort2(inta[],intn);

int*sort3(inta[],intn);

int*sort4(inta[],intn);

intshow(intx[],inty,int(*(*fun)(inta[],intn)));

intsort(inta[],intn,charstyle);

intb[100],i,m;

charc1;

要输入成绩的学生数n\n"

m);

请输入%d个学生的成绩\n"

m);

m;

b[i]);

请选择排练方式\na:

选择升序法\nd:

选择降序法\nA:

冒泡升序法\nD:

冒泡降序法\n"

%s"

c1);

sort(b,m,c1);

%d个学生成绩排列后的顺序\n"

b[i]);

intsort(inta[],intn,charstyle)/*这是根据调用SHOW函数的函数*/

if(style=='

a'

show(a,n,sort1);

elseif(style=='

d'

show(a,n,sort2);

A'

show(a,n,sort3);

D'

show(a,n,sort4);

return(*a);

int*sort1(inta[],intn)/*这是选择法升序的函数*/

inti,j,t;

for(i=0;

n;

for(j=i+1;

if(a[j]<

a[i])

{

}

return(a);

int*sort2(inta[],intn)/*这是选择法降序的函数*/

if(a[j]>

int*sort3(inta[],intn)/*这是冒泡法升序的函数*/

for(j=0;

n-1;

for(i=0;

n-1-j;

if(a[i]>

a[i+1])

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

int*sort4(inta[],intn)/*这是冒泡法升序的函数*/

if(a[i]<

intshow(intx[],inty,int(*(*fun)(inta[],intn)))/*这是SHOW通用输出函数*/

int*z;

z=(*fun)(x,y);

return(*z);

3.3链表的操作

malloc.h>

#defineLENsizeof(structstudent)

structstudent

floatscore;

structstudent*next;

intn;

structstudent*creat(void)/*这是建立链表函数*/

structstudent*head;

structstudent*p1,*p2;

n=0;

p1=p2=(structstudent*)malloc(LEN);

%ld,%f"

p1->

num,&

score);

head=NULL;

while(p1->

num!

=0)

n=n+1;

if(n==1)head=p1;

elsep2->

next=p1;

p2=p1;

p1=(structstudent*)malloc(LEN);

p2->

next=NULL;

return(head);

voidprint(structstudent*head)/*这是输出链表函数*/

structstudent*p;

\n这%d个学生的成绩记录为:

n);

p=head;

if(head!

=NULL)

do

printf("

%ld%5.1f\n"

p->

num,p->

p=p->

next;

}while(p!

=NULL);

voidnumbermax(structstudent*head)/*这是找出学生最高分的函数*/

p1=head;

if(head==NULL)

列表为空\n"

elseif(p1->

next==NULL)

{printf("

现在,这些学生最高分的是:

%5.1f\n"

p1->

else

p2=p1->

do

if(p2->

score>

score)

p1=p2;

p2=p2->

}while(p2!

voidnumbermin(structstudent*head)/*这是找出学生最低分的函数*/

现在,这些学生最低分的是:

score<

voidnumberavr(structstudent*head)/*这是找出学平均分的函数*/

structstudent*p1;

floatsum=0,avr=0,n=0;

现在,这些学生的平均分是:

while(p1!

sum=sum+p1->

score;

p1=p1->

avr=sum/n;

avr);

voidscores(structstudent*head)/*这是学生分数的排序函数*/

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

当前位置:首页 > 考试认证 > 其它考试

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

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