C语言课程设计报告示例Word格式.docx
- 文档编号:17336778
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:17
- 大小:55.30KB
C语言课程设计报告示例Word格式.docx
《C语言课程设计报告示例Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告示例Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
课程设计报告书
课程名称:
高级语言程序设计
班级:
学号:
姓名:
指导教师:
薛海燕
二○一八年六月
-2-
1.题目
................................................................................................4
2.功能
3.要求
4.设计内容
........................................................................................4
4.1
主函数
MAIN().....................................................................................................4
4.2
初始化函数
STUDENT
*INIT()
.......................................................................4
4.3
菜单选择函数
INT
MENU_SELECT();
...................................................................4
4.4
输入记录函数
*CREATE()................................................................5
4.5
显示记录函数
VOID
PRINT(STUDENT
*HEAD)
.................................................5
4.6
查找记录函数
SEARCH(STUDENT
..............................................5
4.7
删除记录函数
*DELETE(STUDENT
..................................6
4.8
排序函数
*SORT(STUDENT
..............................................7
4.9
插入函数
*INSERT(STUDENT
*HEAD,STUDENT
*NEW)
..............7
4.10
保存数据到文件函数
SAVE(STUDENT
....................................8
4.11
从文件读数据函数
*LOAD()
.........................................................8
5.调试分析
........................................................................................9
6.测试结果
7.总结
..............................................................................................12
8.源代码
..........................................................................................12
-3-
1.题目
《学生成绩管理系统》的设计与实现
2.功能
(1)每一条记录包括一个学生的学号、姓名、3门成绩、平均成绩。
(2)输入功能:
可以一次完成无数条记录的输入。
(3)显示功能:
完成全部学生记录的显示。
(4)查找功能:
完成按姓名查找学生记录,并显示。
(5)排序功能:
按学生平均成绩进行排序。
(6)插入功能:
按平均成绩高低插入一条学生记录。
(7)保存功能:
将学生记录保存在任何自定义的文件中,如保存在:
c:
\score。
(8)读取功能:
将保存在文件中的学生记录读取出来。
(9)有一个清晰美观界面来调用各个功能
3.要求
(1)整个系统均用C语言实现;
(2)利用指针、链表来实现学生成绩的数据结构设计;
(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;
(4)系统的各个功能模块都用函数的形式来实现;
(5)可以将学生成绩信息保存在文件中。
(6)可以将学生信息从文件中读取出来。
4.设计内容
整个系统除了主函数外,另外还有10个函数,实现八大功能:
输入功能、显示功能、
查找功能、排序功能、插入功能、保存功能、读取功能。
各个函数的详细设计说明分别如
下:
main()
利用无限次循环for(;
;
)和swithch()实现各函数的调用,系统根据输入的数字选项来调用
相应的函数。
STUDENT*init()
这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为
NULL。
比如:
没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的
时候会显示一些乱码!
int
menu_select();
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大
功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。
等执行完每一个
函数功能后,按任一键回到主界面也要通过这个函数来实现!
-4-
*create()
这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入,函数结
束后,带回一个指向链表头的指针head。
算法:
先声明一个首节点head,并将head->
next设为NULL。
每输入一个数据就声明一
个新节点p,把p->
next设为NULL,并且链接到之前列表的尾端。
N-S流程图如图1所示。
head=NULL
for(;
;
)
指针
p
指向新开辟的单元
是否为空
是否
输入学号
p->
num
输出p->
num
是否为
内存是否
溢出输入姓名
name
停止for(i=0;
i<
3;
i++)
输入输入成绩
返回p->
sum=s;
菜单p->
average=(float)s/3;
order=0;
next=head;
head=p;
图
1
输入学生信息流程图
void
print(STUDENT
*head)
这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录
的输出,不足之处就是不能对学生成绩进行分页显示。
先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。
然后
再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。
重
复执行此步聚直到p指针指向NULL为止。
N-S流程图如图2所示。
p=head,使指向第一个结点
输出
所指向的结点
指向一下个结点
当
指的不是表尾
2
显示学生信息流程图
search(STUDENT
这是一个不返回值的有参函数,形参为“链表头的指针”,实现按学号对某个学生进
-5-
p1=head;
输入入要删除的学号
s
当(strcmp(p1->
num,s))&
&
p1
!
=
NULL
p2=p1
p1=p1->
next
是要删除的结点
是
否
所指是头结点
head=p1->
next
p2->
next=p1-next
(删除头结点)
输出”找不
到”
的信息“
行查找,并显示所查找到的记录。
采用线性查找法往下一个节点查找。
输入所要查找的学生的学号s,设一个指针
变量p,先指向第一个结点,当strcmp(p->
name,s)
NULL时,使p后移一个结点,如
果p!
=NULL,输出p所指的结点。
N-S流程图如图3所示。
输入要查找的学生的学号
p=head,使
指向第一结点
当记录的学号不是要找的,或指针不为空时
p=p->
p!
=NULL
如果指针不为空
显示没有该
所指向的结点学生
3
按照学号查找学生信息流程图
*delete(STUDENT
这是一个有参函数,形参为“链表头的指针”,先输入要删除的学生记录的学号,找
到后显示该学生信息,等确认后便可按“Y”进行删除。
从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的
那个学号。
如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,
直到遇到表尾为止。
N-S流程图如图4所示。
4
按照学号删除学生信息流程图
-6-
*sort(STUDENT
这是一个有参函数,形参为“链表头的指针”,按学生成绩的平均分高低进行排序,
还可以显示名次。
N-S流程图如图5所示。
temp=head->
next,head->
next=NULL
temp!
时
t=temp;
temp=temp->
next;
p2=head;
t->
average<
p1->
average&
p1!
p2=p1;
p1=p2
next=p1;
t->
head=t;
p2->
next=t;
i++;
order=i;
输出“排序成功”
5
按照平均分降序排序流程图
*insert(STUDENT
*head,STUDENT
*new)
这是一个有参函数,形参有两个,一个是“链表头的指针”,一个是“待插入指针”,
按照原来成绩平均分的高低进行插入,插入后会重新进行排序,并返回。
先将学生的成绩按平均分由高分到低分进行排序,再插入一个新生的结点,要求
按平均分的高低顺序插入。
先用指针变量
p0
指向待插入的结点,p1
指向第一个结点。
如
果
p0->
average,则待插入的结点不应插在
所指的结点之前。
此时将
后
移,并使
p2
指向刚才
所指的结点。
重复以上的步骤,直到
average>
=p1->
average
为止。
这时将
指向的结点插到
所指结点之前。
但是如果
所指的已是表尾结点,则
就不应后移了。
如果
average
比所有结点的
都小,则应将
所指的结点插
到链表末尾。
如果插入的位置既不在第一个结点之前,又不在表尾结点之后,则将
的值
赋给
,使
指向待插入的结点,然后将
的值赋给
next,使得
指向
指向的变量。
如果插入位置为第一个结点之前,则将
head,将
p0-
>
next。
如果要插到表尾之后,应将
next,NULL
最后再调用排
序的函数,将学生成绩重新排序.
N-S
流程图如图
6
所示
-7-
P1=head,
p0=new
原来的链表是空表
将
所指
的结点作为
唯一结点
以及
所指向的不是表尾结
点
位置
向后移一个结点
指向头结点
next=p0
(插到表尾之后)
head=p0
->
next=p1
(插到表头之前)
(插到表中间)
n=n+1;
(结点加
1)
head=sort(hear);
(将成绩重新排序)
按照平均分有序插入新学生流程图
save(STUDENT
这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑
上由自己任意命名的二进制文件。
7
所示。
输入要保存记录的文件地址
outfile
文件不能打开
否是
p=head;
输出一个出错信
不为空时息,并返回菜单
fwrite(p,LEN,1,fp);
(写入一条记录)
next;
(指针后移)
fclose(fp);
(关闭文件)
将学生信息保存到文件流程图
*load()
这是一个不返回值的有参函数,形参为“链表头的指针”,根据输入的文件地址进行读
取。
-8-
定义两个指针变量
p1,p2
输入要打开的记录文件地址
infile
否
是
开辟一个新单元
返回菜单
读入记录
8
从文件读入学生信息流程图
5.调试分析
(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示
功能,结果显示的是一些乱码!
加入初始化函数后,这种现象也随之消失。
(2)刚开始执行输入函数,按学号顺序输入十个学生的成绩,输完后执行显示功能,
学生成绩记录是按学号的反顺序显示的,试着在其中增加一些语句,希望能把学号按正常
顺序显示,但暂时没有成功,所以在输入成绩时只能按学号反顺序输入,最后就按学号正
常顺序输出了。
(3)刚开始时,先把成绩按平均分排序,再插入一个学生的成绩,执行显示功能,虽
然插入的学生的成绩能正常插入,但该学生的名次为
0。
后来,在插入成绩之后,调用排
序函数,把所有成绩重新排序一次。
(4)在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,当学号为
的时候则停止输入。
(5)输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起
见,不要输入太多记录,十七左右为最佳。
(6)在没有输入任何信息的情况下,去执行排序功能,最后显示有一个记录,学号、
姓名为空白,成绩都为
0,名次为
1。
(7)在输入选项时不能输入字母,否则会死循环,建议不要乱输字母。
***************这里写自己的调试过程,可以贴图并配以文字分析
*****************
6.测试结果
(1)主函数非法输入测试
如图
9
所示为主函数非法输入测试。
-9-
主函数非法输入测试
(2)登记入库测试如
10
所示登记入库界面。
登记入库测试
11
列出了图书馆中的所有藏书,表示,登记入库成功,高等数学数的现存量。
图书馆所有藏书一览
(3)读者登录数据测试
12,为读者登陆测试界面。
-10-
12
读者登陆数据测试
(4)借书操作测试
13
如借书成功,现存量减少。
借书操作测试
14
为读者的借阅情况。
读者的借阅情况
(5)还书操作测试
15
选中需要还的高等数学书,还书成功,高等数学现存量重新变成
25。
-11-
还书操作
16
显示读者的借书情况中少了高等数学。
还书成功后的借阅情况
7.总结
***************这里写自己的心得体会,比如拿到题目之后如何一步一步实现的?
收
获的经验是什么?
程序中哪部分是碰到的难点?
如何解决这个难题的?
以后怎样做才能提
高程序设计课程的学习效果?
8.源代码
***************将
语言代码复制到这里*****************
-12-
学号
姓名
等级
对知识的理解和掌握
(占总成绩
25%)
知识理解透彻,且掌握扎实
基本理解所学知识
概念不清,没有理解所学知识
程序功能的完善程度
15%)
完善
基本完善
不完善
程序结构的合理性
合理
基本合理
不太合理
数据结构的合理性
正确应用并有创新
正确应用
基本正确应用
学生的工作态度与
独立工作能力
工作态度认真能独立完成任务
工作态度认真但独立性较差
工作态度基本认真但缺乏独立性
设计报告的规范性
符合规范
基本符合规范
规范性较差
成绩等级
指导老师签字
时间
《高级语言程序设计课程设计》评分标准
-13-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 示例