C语言课程研究设计报告书Word格式文档下载.docx
- 文档编号:8646827
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:30
- 大小:315.25KB
C语言课程研究设计报告书Word格式文档下载.docx
《C语言课程研究设计报告书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言课程研究设计报告书Word格式文档下载.docx(30页珍藏版)》请在冰点文库上搜索。
每一条记录包括一个学生的学号,姓名,性别,年龄,住址,成绩.系统的各个功能模块都用函数的形式来实现;
可以将学生信息保存在文件中,并从文件中读取出来。
本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。
本程序分为8个模块,可以处理多个学生信息的输入、添加、删除,修改等问题。
本程序的使用特别方便,每做完一个模块,下面都有提示信息。
使用环境为Win-Tc。
(2)创建该学生信息管理系统目的就是能够对学生基本信息进行创建、追加、查询、修改等功能,这样可以简化许多人工做起来很复杂的问题。
(3)该学生基本信息管理系统是在WIN-TC中文简体环境下运行。
该系统要测试的数据如下:
输入模块:
(输入3个学生信息)
序号:
001姓名:
张三性别:
男年龄:
20成绩:
90
002姓名:
李斯性别:
19成绩:
87
003姓名:
王美性别:
女年龄:
82
添加模块:
(再加1个信息)
004姓名:
赵灵性别:
89
查询模块:
(查询成绩的基本信息)
分:
按学号查询和按成绩查询
四、概要设计
(1)主函数主要模块结构图:
(2)模块功能详细说明:
A、创建模块:
此模块可以连续输入若干个学生的资料,若学生数少于该数,则可以在输入学号处输入e便可退出此模块,并把输入的信息保存到c:
\\stud文件中。
B、追加模块:
此模块中先打开c:
\\stud统计文件中的学生,后输入要添加的学生的学号,系统确认此学号在c:
\\stud不存在时开始纪录新学生的资料,否则输出“此学号已存在!
”,以便清楚使用者。
C、查询模块:
此模块中使用者可以用3种方式查询学生成绩。
分别为
(1)按学号查询
(2)按姓名查询(3)按成绩查询。
在这里以按学号查询为列:
先选择按学号查询,输入要查询的学生的学号,系统确认此学号在c:
\\student存在后读取信息并在屏幕上输出学生纪录。
D、修改模块:
此模块中可以修改一门科的成绩也可以同时修改四门科的成绩。
修改完毕后输入1可以继续修改,输入0则退出此模块。
E、删除模块:
此模块中用到的删除原理为覆盖要删除的学生的资料。
过程简述,先输入要删除的学生的学号,系统找到此学生的信息后给它复制下一个学生的信息,给下一个学生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生的信息为止。
然后文件中的学生总数减一。
F、此模块较简单,先统计文件c:
\\student中的学生个数,后把每个学生的各门科的成绩加起来,然后总成绩除以学生总数,屏幕上输出各科的平均成绩。
G、排序模块:
在此模块中可以按2种方法进行排序,分别为
(1)按学号排序
(2)按平均成绩成绩排序。
输出时以从小到大的循序进行输出。
(3)模块功能说明
1输入功能:
可以一次完成N条记录的输入。
2保存功能:
保存已输入信息。
3读取功能:
读取已输入信息。
4打印功能:
完成全部学生记录的显示。
5更新功能:
更新学生的信息。
6查询功能:
查询学生信息并显示。
7统计功能:
统计学生信息并显示。
8排序功能:
根据学号,平均成绩排序。
0退出系统。
五、详细设计及运行结果
(1)各主要模块的程序流程图
删除模块:
排序模块:
(2)函数之间相互调用的图示:
(3)主要函数之间相互调用如下:
六调试情况,设计技巧及体会
经过两周的实习时间,我用文件建立了一个应用系统程序,形成
系统软件。
此程序结构简单明了,让人一目了然,便于对程序的阅读和理解。
同时操作起来也比较方便简单。
又由于增加链表更增强了系统的灵活性。
通过对此程序的编写,让我把书本上学到的应用到实际中去,但在编出程序的雏形后,再进行编译时出现了许多错误和警告。
这才让我认识到理论和实践是存在一定差别的。
最后,在多次查阅资料,询问同学后把程序给改编完成了。
它让我体会到自己的不足,所以自己以后要踏踏实实地把计算机年学好,为自己将来的发展打下坚实基础。
在此次程序编写中,发现的问题有:
1.函数应该是先定义后使用,所以一开始时,总是出现很多警告,说没有定义!
!
后来经过仔细检查,发现主函数应该是放在各个模块之后!
2.要注意全局变量的应用,若全局变量没定义好的话,对整个程序的编写与都有很大影响!
3.在删除模块中,刚开始存在很多问题,删除不了,或者删除后还能打印出来,结果后来发现是删除模块本身的问题。
。
(该块较难处理)
4.在查询模块中,刚开始那个按商品类别查询无法运行,经检查,是由于未定义成字符串数组形式,因此定义变量的类型非常重要。
5.特别要注意的问题是循环的初值,循环的控制变量,循环的条件!
do-while的循环在这个程序中多次运用!
6.说明如下:
(1)、调试情况和设计技巧:
a.刚开始没有那个初始化函数,程序运行后没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!
加入初始化函数后,这种现象也随之消失。
b.在输入函数中设了最大值,可以输入66个学生的成绩信息,当输入字母‘e’时停止,并保存信息。
c.在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能。
本程序分为8个模块,分别为
(1)创建学生信息。
(2)保存学生信息。
(3)读取学生信息。
(4)更新学生信息。
(5)查找学生信息。
(6)统计学生的成绩(7)对学生的资料进行排序。
本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。
此程序的不足之处在学生基本信息方面还不够完善,另一方面就是在运行此程序时,需要执行操作的提示语不够具体和完善.
改进方法:
可以在学生基本信息的结构体中添加更多的学生信息,使得学生信息更加完善,此外,还可以在编程时加一些必要的提示语,用printf(“”)。
语句直接可输入.
(2)、在设计过程中的感受:
首先经过两周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!
要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。
这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。
其次,通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。
同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!
更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!
第三,因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,C语言程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。
七、源程序清单(略,详见电子版实验报告)
#include<
stdio.h>
string.h>
#defineN20
#definePAGE2
#definePRINT1printf("
\nname--sex--age--class--num--plants--score--birthday--add--phone\n"
)
#definePRINT2printf("
\n%s%s%d%d%d%s%d%d%d"
student[i].name,student[i].sex,student[i].age,student[i].class,student[i].num,student[i].plants,student[i].exam.chinese,student[i].exam.math,student[i].exam.english)
#definePRINT3printf("
%d%d%d%d%s%.0lf\n"
student[i].exam.aver,student[i].birthday.year,student[i].birthday.month,student[i].birthday.date,student[i].add,student[i].telephone)
intsum。
/*jiluxueshengderenshu*/
structdata
{intyear。
intmonth。
intdate。
}。
structscore
{intchinese。
intmath。
intenglish。
intaver。
structstudent_type
{charname[20]。
charsex[20]。
charadd[20]。
charplants[20]。
/*banjizhiwu*/
charscore[20]。
intnum。
intclass。
intage。
intR。
doubletelephone。
structdatabirthday。
structscoreexam。
/*kaoshichengji*/
}student[N]。
input_message()/*shuruxinxi*/
{inti=0。
charchoice。
intflag。
doublef。
clrscr()。
printf("
\n\ninputstudents'
information(themostis%d)\n"
N)。
do
{printf("
\nnumber%d'
sinformation"
i+1)。
\nstudent'
sname:
"
)。
scanf("
%s"
student[i].name)。
ssex:
student[i].sex)。
sage:
%d"
&
student[i].age)。
sclass:
student[i].class)。
snum:
scanf("
student[i].num)。
splants:
student[i].plants)。
schengji:
"
%d%d%d"
student[i].exam.chinese,&
student[i].exam.math,&
student[i].exam.english)。
saverchengji:
&
student[i].exam.aver)。
sshengri:
%d%d%d"
student[i].birthday.year,
&
student[i].birthday.month,
student[i].birthday.date)。
sadd:
student[i].add)。
\nstduent'
sphone:
%lf"
f)。
student[i].telephone=f。
\ndoyouwanttocontinue(Y/N)"
choice=getch()。
if(choice=='
y'
||choice=='
Y'
\ncontinue!
\n"
i++。
flag=1。
}
elseflag=0。
}while(flag==1)。
\n%dstuents'
informationinputhadbeenend!
i)。
sum=i。
\npushanybuttontogoaway!
bioskey(0)。
}
save_message(intsum)/*保存信息*/
{FILE*fp。
inti=0。
if((fp=fopen("
student.txt"
"
wb"
))==NULL)
readmessagewrong!
return0。
for(i=0。
i<
=sum。
i++)
if(fwrite(&
student[i],sizeof(structstudent_type),1,fp)!
=1)
writemessagewrong!
fclose(fp)。
read_message()/*读取信息*/
rb"
\n\n*****now,therearenoanyinformationinfile\npleasepushanybuttontogoaway!
*****\n"
return。
while(feof(fp)!
{fread(&
student[i],sizeof(structstudent_type),1,fp)。
if(student[i].num==0)break。
elsei++。
return(i)。
output_message()/*显示信息*/
{inti=0,page=1。
intj=0。
\n\n----student'
sinformation--page%d\n\n"
page)。
PRINT1。
{if(student[i].num!
=0)
{j++。
if(j%PAGE!
{PRINT2。
PRINT3。
else
if(student[i+1].num!
pushanybuttontocontinue"
\n\n--student'
sinformation--page%d\n\n"
++page)。
}while(student[i].num!
=0)。
pushanybuttontogoaway"
insert_message()/*添加信息*/
{inti=sum。
intflag=0。
\n\ninsertsstudent'
sinformation\n"
{student[i].num=++sum。
\nnewstudnetnum:
%d"
student[i].num)。
student[i].name)。
student[i].sex)。
student[i].plants)。
sscore:
%d%d%d%d"
student[i].exam.chinese,
student[i].exam.math,
student[i].exam.english,
sbirthday:
student[i].birthday.year,&
stelephone:
student[i].telephone)。
student[i].add)。
sum++。
\ndoyouwanttocontinue?
(Y/N)"
\npushanybuttontogoaway"
intdel_by_name()
{
chardel_name[20],i,f=0。
\n\npleaseinputthestudentname:
del_name)。
sum。
{
if(strcmp(student[i].name,del_name)==0)
student[i].num=-1。
%sstudentinformationhavebeendeleted!
f=1。
break。
if(f==0)
\n\n********cannotfindthestudent!
*************\n\n"
getchar()。
intdel_by_num()
intdel_num=0,i,f=0。
\n\npleaseinputthestudentnum:
del_num)。
if(student[i].num==del_num)
thestudents'
informationhavebeendeleted!
\n\n********cannotfindthestudent!
del_message()
intchoice。
***********deletestudents'
information*******\n\n"
1.deletebyname\n\n"
2.deletebynum\n\n"
0.retrunmenu\n\n"
pleasechoose(0-2):
choice)。
switch(choice)
case1:
del_by_name()。
break。
case2:
del_by_num()。
case0:
}while(choice!
return1。
revise_message()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程 研究 设计 报告书