最新版C语言毕业课程设计报告电子版文档格式.docx
《最新版C语言毕业课程设计报告电子版文档格式.docx》由会员分享,可在线阅读,更多相关《最新版C语言毕业课程设计报告电子版文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
高等教育出版社,2002
课程设计(报告)任务书
任务及要求:
1.设计(研究)内容和要求
研究内容:
投票选举、计算并按序输出学生平均成绩及总分、字符串排序、统计单词、学生成绩管理系统
任务和要求:
(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。
(2).对指导教师下达的题目进行系统分析。
(3).根据分析结果完成系统设计。
(4).编程:
在计算机上实现题目的代码实现。
(5).完成对该系统的测试和调试。
(6).提交课程设计报告。
(7).指标:
要求完成课程设计报告3千字以上(约二、三十页).
完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.
2.原始依据
了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。
通过用C语言完成的题目,提高用C语言解决实际问题的能力。
3.参考文献
[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006
[2]马靖善等.C语言程序设计.清华大学出版社,2005
[3]谭浩强.C语言程序设计(第二版).北京:
2008年6月20日
C语言课程设计报告1
[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,20063
1统计选票1
1.1系统分析1
1.2设计说明1
1.3程序运行截图2
1.4源程序代码2
2成绩输出3
2.1功能说明3
2.2设计说明3
2.3程序运行截图4
2.4源程序代码4
3字符串排序5
3.1功能说明5
3.2设计说明5
3.3程序运行截图6
3.4源程序代码6
4统计单词7
4.1功能说明7
4.2设计说明7
4.3程序运行截图8
4.4源程序代码8
5学生成绩管理系统9
5.1需求分析9
5.2总体设计10
5.3详细设计与实现12
5.3程序运行截图15
1统计选票[格式:
标题2,黑体,3号]
1.1系统分析
统计候选人的选票。
1.2设计说明
1、定义:
#include"
string.h"
2、子函数,输入候选人。
函数名:
structperson
返回值:
候选人的序号,姓名
参数:
intnum;
charname[20];
intcount;
处理流程:
定义候选人
3、主函数main()
从键盘上输入一候选人,for循环输入选票,若选票与候选人匹配,增加票数,最后统计最终的票,选出候选人。
如:
lilizhaozhaozhaoliliwangwangzhangzhangzhangzhaolili,
则在屏幕上显示:
=================================
Theresultis:
li7
zhang2
zhao3
wang3
****thangyouforyouvote****
1.3程序运行截图
1.4源程序代码
/*统计4候选人的得票情况*/
structperson
{charname[20];
}leader[]={"
li"
0,"
zhang"
zhao"
0,"
wang"
0};
main()
{inti,j;
charselect[20];
clrscr();
printf("
========================================================\n"
);
printf("
****voteforourleader****\n\n\n"
for(i=0;
i<
15;
i++)
{printf("
%d\tPleaseinputyourresult:
"
i+1);
scanf("
%s"
select);
for(j=0;
j<
4;
j++)
{if(strcmp(leader[j].name,select)==0)
leader[j].count++;
}
}
Theresultis:
\n"
%s\t%d\n"
leader[j].name,leader[j].count);
\n\n\n****thankyouforyourvote****\n"
===================================================="
getch();
***************************\n"
}
2成绩输出
2.1功能说明
根据提示输入学生姓名年龄和成绩,求出总成绩和平均值
2.2设计说明
stdio.h"
2、子函数,求出总成绩及平均值。
floataver(floata[])
av,求出成绩平均值
inti,含义:
数字
Floatav,s=a[],含义:
数组
For循环求出平均值
从键盘上输入成绩,调用结构数组,输入成绩,然后调用子函数floataver(floata[])
==============================================
Welcometothesystem
Pleaseinputyourname:
Lily
Pleaseinputyourage:
19
Pleaseinputyourscore:
8998789664
***********************conclusion**********************
Name:
Age:
Score1:
89.000000score2:
98.000000score3:
78.000000
Score4:
96.000000score5:
64.000000
Final:
sum=425ave=85.000000
2.3程序运行截图
2.4源程序代码
{
structstudent
{charname[10];
intage;
floatscore[5],ave;
}stu;
inti,sum;
sum=0;
stu.ave=0;
==============================================================\nwelcometothesystem\n"
\nPleaseinputyourname:
"
stu.name);
\nPleaseinputyourage:
&
stu.age);
\nPleaseinputyourscore:
for(i=0;
5;
{scanf("
%f"
stu.score[i]);
sum=sum+stu.score[i];
stu.ave+=stu.score[i]/5.0;
\n\n************************conclusion**************************"
\n\nName:
%s\n\n"
%d\n\n"
stu.age);
Score%d:
%2.lf"
i+1,stu.score[i]);
\n\nFinal:
sum=%d"
sum);
average=%6.lf\n"
stu.ave);
\n\n==============================================================="
3字符串排序[格式:
3.1功能说明
统计三个字符串中的元素,并按从小到大的顺序排列
3.2设计说明
#defineM3
#defineN20
2、主函数main(),
根据提示从键盘上输入字符串,然后用strcmpt统计字符串长度,根据长度不同,运用for循环和复制函数strcpy,重新排列字符串
Pleaseinputthefirststring:
hahahahaha
Pleaseinputthesecondstring:
hi
Pleaseinputthethirdstring:
nihao
Thefirst:
Thesecond:
Thethird:
3.3程序运行截图
3.4源程序代码
charstr[M][N],temp[N];
inti,j;
M;
{
pleaseinputnumber%dstring:
str[i]);
======================================================"
Before:
the%dstring:
%s\n"
i+1,str[i]);
M-1;
M-j-1;
if(strcmp(str[i],str[i+1])>
0)
strcpy(temp,str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],temp);
After:
thenumber%dstring:
======================================================="
4统计单词
4.1功能说明
统计字符串中的单词数量
4.2设计说明
#include“stdio.h”
2、主函数main()
定义变量,运用for语句循环统计字符串中单词的数量
如:
输入Thelittleboyisverysmart
则屏幕上显示:
Thereare6wordsintheline.
4.3程序运行截图
4.4源程序代码
main()
{charstr[80],c,i;
intword,num;
num=1;
======================================="
\nPleaseinputaline:
gets(str);
(c=str[i])!
='
\0'
;
{if(c=='
'
)
word=0;
elseif(word==0)
word=1;
num++;
\n\neare%dwordsintheline.\n"
num);
5学生成绩管理系统
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化规范化和自动化。
利用单链表结构实现学生成绩管理,了解数据管理的基本功能,掌握C语言中的结构体,指针,函数文件操作等知识,是一个C语言知识的综合应用。
5.1需求分析
需求分析是软件开发中最重要的环节,它直接影响着项目的成功与失败。
通过对用户需求进行调查分析,写出需求分析的文档。
需求分析的文档可以作为项目设计的基本要求,也可以作为系统分析员进行系统分析和测试人员进行软件测试的手册。
1.需求概述
设计一个学生成绩管理系统,使之能提供以下功能:
(1)信息录入功能
(2)信息查询功能
(3)信息删除功能
(4)信息修改功能
(5)信息浏览功能
2.需求说明
(1)系统中的每个信息包含学生的学号,姓名,课程成绩,平均成绩等。
(2)录入的信息要以文件或其他形式保存,并可以进行查询、修改、删除和浏览等基本操作。
(3)系统中的信息显示要求有一定的规范格式。
(4)对系统中的信息修改应分别按照学号或姓名两种方式进行查询,要求能返回所有符合条件的信息。
(5)对系统中的信息修改应该逐个的进行,一个信息记录的修改不应影响其他的信息记录。
(6)所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,根据用户的选择进行各种处理,并要求要此过程中能尽可能地兼容使用中的异常情况。
5.2总体设计
根据需求分析的文档可以,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出总体设计说明书,为详细设计做准备。
1.功能模块
根据需求分析,得到系统的功能模块。
如图1-1所示:
图1-1系统模块图
说明:
(1)菜单选择模块完成用户命令的接收功能。
是学生成绩管理系统的入口,用户想要进行的各种操作都要在此模块中选择,并进而调用其他模块实现相应的功能。
(2)成绩录入模块用于完成成绩的输入功能。
输入的信息包括学号、姓名、课程成绩等数据,且每一项输入有误时用户能直接修改。
(3)成绩删除模块用于完成成绩的删除功能,用户根据个人的需求,输入所要删除的记录,系统将执行该程序,并输出删除后剩余的原有存储信息。
(4)成绩查询模块完成成绩查询功能。
可以按照序号和姓名两种方式进行,并输出符合条件的信息。
(5)成绩处理模块完成成绩的排序,计算总分和平均分的功能。
(6)成绩插入模块完成成绩的插入功能。
该模块和成绩删除模块可以完成成绩的修改功能。
(7)成绩保存模块完成成绩保存到文件的功能。
2.数据结构
本系统中主要的数据结构就是学生的成绩信息,包含学号、姓名、三门课程成绩、总分、平均分等。
3.程序流程
系统的执行应从系统菜单的选择开始,根据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
系统的流程图如图1-2所示:
图1-2程序流程图
5.3详细设计与实现
在总体设计的基础上进行详细设计,为下一步编码做准备。
1.数据结构
#defineN3
typedefstructsl/*定义课程门数,可以根据情况而定*/
{
charno[11];
/*学号*/
/*学生姓名*/
intscore[N];
floatsum/*总分*/
floataverage;
/*平均分*/
intorder;
/*名次*/
structsl*next;
/*指向后继结点的指针*/
}STUDENT/*定义结构体类型*/
2.各个功能模块的处理流程
2.各个功能模块的设计与实现
(1)菜单的设计与实现
本系统设计了友好且功能丰富的主菜单界面,提供打11项功能的选择。
利用switchcase语句来实现调用主菜单函数,返回值整数作开关语句的条件。
值不同,执行的函数不同,具体函数如下:
●head=init()实现对数据执行初始化;
●head=create()创建链表,进行数据录入;
●head=delete(head)删除记录;
●print(head)显示全部记录;
●search(head)查找记录;
●save(head)保存文件;
●head=load()读文件;
●computer(head)计算总分和平均分;
●head=insert(head)插入记录;
●head=sort(head)排序;
●exit(0)
(2)数据录入
当在主菜单中输入了字符1时,进入创建链表函数-create(),即输入学生信息,按照提示信息输入学号(字符串不超过5位)、姓名(字符串不超过10位)、三门课程的成绩(整数0~100),每输入一个数就按一下回车键,当在输入学号首字符为@时结束输入,返回主函数,单链表创建完毕。
当成绩输入后,系统自动计算该生的总分和平均分,并将名次数据先置0,待排序后再赋予新值。
数据输入后,将其后继结点指针指向当前头结点,新头指针指向新插入结点,这样新插入结点总在头。
数据输入结束后返回链表的头指针到主函数。
(3)删除数据
删除指定学号的学生记录,使用delete()函数实现。
首先输入要删除结点的学号,输入后根据学号顺序查找结点,如果没找到,则输出没找到信息;
否则,显示找到的结点信息,按任意键后显示已删除信息。
注意删除结点时的操作,如果该结点是首结点,则要修改头指针;
否则,将该结点的前趋指针的后继指向其后继结点,然后释放该结点。
(4)显示数据
学生成绩表建立好后,更频繁的操作是显示和查找记录,print()函数实现显示链表数据功能。
由于单链表只能采取顺序访问的方法,所以定义一个指向结点的临时变量p,初值为单链表的头指针,输出指针所指记录的数据后,将指针后移一个记录,直到p指针值为空,则所有记录输出完毕。
设计本函数时注意输出格式以二维表格的形式输出,直观漂亮。
输出的第一列为记录号。
注意调整格式,对齐表格线。
(4)查找数据
按照姓名查找结点,使用search()函数实现。
从头结点开始顺序查找,成功则显示记录信息,失败,显示没找到。
学号是字符串,比较功能利用字符串比较函数strcmp()实现。
(6)保存数据到文件
将学生成绩信息保存到指定文件中,使用save()函数实现。
按照文件读写要求,先定义一个指向文件的指针,输入要保存的磁盘文件名,如果输入的是绝对路径,则文件保存到指定位置;
如果只给文件名,则文件保存在TurboC默认的路径下,然后确定文件的打开方式,打开文件;
若文件打不开,则退出程序,否则选择一种写文件方式,从链表的头指针开始,顺序将记录写入文件,直到所有记录写完,标志就是移动指针为空。
(7)从文件中读取数据
从文件中读取数据使用load()函数实现。
按照文件读写要求,先定义一个指向文件的指针,输入要读入数据的磁盘文件名,然后确定文件的打开方式。
如果文件打不开,则退出函数,否则选择一种读文件方式,从文件头开始,将记录读入内存,直到文件尾。
文件打开方式和读入方式的确定要依据输出文件的打开方式和写入方式,以免数据读入错误。
如果输出文件是二进制文件,块写操作,读入也应设置为二进制打开方式,块读取方式。
每读入一条记录,都要做好指针链接关系,本函数将新结点链接到当前链表的尾部,链表的顺序和文件保存的顺序一致。
(8)计算学生的总分和所有课程平均分
计算学生的总分和所有课程平均分使用computer()函数实现。
从头指针开始,每读一条记录,将该生的总分累加,并统计记录条数,当所有数据处理完毕,求出平均分,最后输出结果为所有学生的总分和平均分。
(9)插入数据
插入结点需要输入插入位置和新结点信息,使用insert()函数实现。
输入某个结点的学号,新结点将插入在这个指定结点之前。
申请空间得到指针info,输入新结点信息,存放到新申请的空间中。
(10)成绩排序
对于学生成绩管理,一个很重要的运算是将学生按照分数由高到低排名,sort()函数实现按照总分排序功能,先从原表删除头结点,然后在新表中查找到合适的位置,进行插入。
待排序结点的插入位置总是插在表头、表尾和表中间三种情况之一,由于单链表的特性,实际插入结点时,并不需要移动和交换结点信息,而是只改变指针关系,所以排序时间主要用在比较上。
排好序后将其名次数据写入数据域order中。
(11)退出
5.3程序运行截图
进入主菜单
1.成绩录入
2.从表中删除记录
3.显示单链表中所有记录
(7)记录保存为文件
4.按学号查找记录
5.将单链表中记录保存到文件
6.从文件中读取记录
7.计算所有学生总分和平均分
8.插入记录到列表
9.排序
5.5参考程序
stdlib.h"
conio.h"
mem.h"
#includ