C语言课程研究设计报告书.docx

上传人:b****6 文档编号:8019456 上传时间:2023-05-12 格式:DOCX 页数:30 大小:315.25KB
下载 相关 举报
C语言课程研究设计报告书.docx_第1页
第1页 / 共30页
C语言课程研究设计报告书.docx_第2页
第2页 / 共30页
C语言课程研究设计报告书.docx_第3页
第3页 / 共30页
C语言课程研究设计报告书.docx_第4页
第4页 / 共30页
C语言课程研究设计报告书.docx_第5页
第5页 / 共30页
C语言课程研究设计报告书.docx_第6页
第6页 / 共30页
C语言课程研究设计报告书.docx_第7页
第7页 / 共30页
C语言课程研究设计报告书.docx_第8页
第8页 / 共30页
C语言课程研究设计报告书.docx_第9页
第9页 / 共30页
C语言课程研究设计报告书.docx_第10页
第10页 / 共30页
C语言课程研究设计报告书.docx_第11页
第11页 / 共30页
C语言课程研究设计报告书.docx_第12页
第12页 / 共30页
C语言课程研究设计报告书.docx_第13页
第13页 / 共30页
C语言课程研究设计报告书.docx_第14页
第14页 / 共30页
C语言课程研究设计报告书.docx_第15页
第15页 / 共30页
C语言课程研究设计报告书.docx_第16页
第16页 / 共30页
C语言课程研究设计报告书.docx_第17页
第17页 / 共30页
C语言课程研究设计报告书.docx_第18页
第18页 / 共30页
C语言课程研究设计报告书.docx_第19页
第19页 / 共30页
C语言课程研究设计报告书.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程研究设计报告书.docx

《C语言课程研究设计报告书.docx》由会员分享,可在线阅读,更多相关《C语言课程研究设计报告书.docx(30页珍藏版)》请在冰点文库上搜索。

C语言课程研究设计报告书.docx

C语言课程研究设计报告书

封面

作者:

PanHongliang

仅供个人学习

西安郵電學院

C语言课程设计报告书

系部名称

  电信系

学生姓名

   李莎

专业名称

电子信息工程

班级

  0701

学号

 05071031

指导教师

衡霞

时间

2008年06月09日至

2008年06月20日

西安郵電學院

实验题目学生信息管理系统

一、实验目的:

(1)本学期我们学习了C语言,由于初接触,学习有一定困难;于是学校给我们提供一次巩固提高的机会---课程设计。

该可程设计要求学生既动手又动脑,自学,查资料,独立实践。

将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。

(2)C语言的实践。

掌握C语言函数的定义方法,函数的声明及函数的调用过程。

掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。

二、实验内容:

(1)根据所学知识,运用结构体数组编辑一个简单的学生信息管理系统,使之能够完成对学生信息的天价查找,删除,更改,管理等操作,并对文件进行保存和读取。

(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。

直到编译成功为止。

(3)执行运行操作,逐一对每个模块进行调试。

直到全部程序运行成功为止。

(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。

三、需求分析:

(1)根据学生信息管理的需要,建立一个“学生信息管理系统”,系统具有对学生信息的添加,查找,删除,更改的管理操作等基本功能;以方便对学生的各项管理操作。

每一条记录包括一个学生的学号,姓名,性别,年龄,住址,成绩.系统的各个功能模块都用函数的形式来实现;可以将学生信息保存在文件中,并从文件中读取出来。

本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。

本程序分为8个模块,可以处理多个学生信息的输入、添加、删除,修改等问题。

本程序的使用特别方便,每做完一个模块,下面都有提示信息。

使用环境为Win-Tc。

(2)创建该学生信息管理系统目的就是能够对学生基本信息进行创建、追加、查询、修改等功能,这样可以简化许多人工做起来很复杂的问题。

(3)该学生基本信息管理系统是在WIN-TC中文简体环境下运行。

该系统要测试的数据如下:

输入模块:

(输入3个学生信息)

序号:

001姓名:

张三性别:

男年龄:

20成绩:

90

序号:

002姓名:

李斯性别:

男年龄:

19成绩:

87

序号:

003姓名:

王美性别:

女年龄:

20成绩:

82

添加模块:

(再加1个信息)

序号:

004姓名:

赵灵性别:

女年龄:

19成绩:

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.在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能。

本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。

本程序分为8个模块,分别为

(1)创建学生信息。

(2)保存学生信息。

(3)读取学生信息。

(4)更新学生信息。

(5)查找学生信息。

(6)统计学生的成绩(7)对学生的资料进行排序。

本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。

本程序的使用特别方便,每做完一个模块,下面都有提示信息。

使用环境为Win-Tc。

此程序的不足之处在学生基本信息方面还不够完善,另一方面就是在运行此程序时,需要执行操作的提示语不够具体和完善.

改进方法:

可以在学生基本信息的结构体中添加更多的学生信息,使得学生信息更加完善,此外,还可以在编程时加一些必要的提示语,用printf(“”)。

语句直接可输入.

(2)、在设计过程中的感受:

首先经过两周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!

要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。

这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。

其次,通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。

同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!

更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!

第三,因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,C语言程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。

七、源程序清单(略,详见电子版实验报告)

#include

#include

#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)。

printf("\nstudent'sname:

")。

scanf("%s",student[i].name)。

printf("\nstudent'ssex:

")。

scanf("%s",student[i].sex)。

printf("\nstudent'sage:

")。

scanf("%d",&student[i].age)。

printf("\nstudent'sclass:

")。

scanf("%d",&student[i].class)。

printf("\nstudent'snum:

")。

scanf("%d",&student[i].num)。

printf("\nstudent'splants:

")。

scanf("%s",student[i].plants)。

printf("\nstudent'schengji:

")。

scanf("%d%d%d",&student[i].exam.chinese,&student[i].exam.math,&student[i].exam.english)。

printf("\nstudent'saverchengji:

")。

scanf("%d",&student[i].exam.aver)。

printf("\nstudent'sshengri:

")。

scanf("%d%d%d",&student[i].birthday.year,

&student[i].birthday.month,

&student[i].birthday.date)。

printf("\nstudent'sadd:

")。

scanf("%s",student[i].add)。

printf("\nstduent'sphone:

")。

scanf("%lf",&f)。

student[i].telephone=f。

printf("\ndoyouwanttocontinue(Y/N)")。

choice=getch()。

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

{printf("\ncontinue!

\n")。

i++。

flag=1。

}

elseflag=0。

}while(flag==1)。

printf("\n%dstuents'informationinputhadbeenend!

\n",i)。

sum=i。

printf("\npushanybuttontogoaway!

")。

bioskey(0)。

}

save_message(intsum)/*保存信息*/

{FILE*fp。

inti=0。

if((fp=fopen("student.txt","wb"))==NULL)

{printf("readmessagewrong!

\n")。

return0。

}

for(i=0。

i<=sum。

i++)

if(fwrite(&student[i],sizeof(structstudent_type),1,fp)!

=1)

printf("writemessagewrong!

\n")。

fclose(fp)。

}

read_message()/*读取信息*/

{FILE*fp。

inti=0。

if((fp=fopen("student.txt","rb"))==NULL)

{printf("\n\n*****now,therearenoanyinformationinfile\npleasepushanybuttontogoaway!

*****\n")。

return。

}

while(feof(fp)!

=1)

{fread(&student[i],sizeof(structstudent_type),1,fp)。

if(student[i].num==0)break。

elsei++。

}

fclose(fp)。

return(i)。

}

output_message()/*显示信息*/

{inti=0,page=1。

intj=0。

clrscr()。

printf("\n\n----student'sinformation--page%d\n\n",page)。

PRINT1。

do

{if(student[i].num!

=0)

{j++。

if(j%PAGE!

=0)

{PRINT2。

PRINT3。

}

else

{PRINT2。

PRINT3。

if(student[i+1].num!

=0)

{printf("pushanybuttontocontinue")。

bioskey(0)。

clrscr()。

printf("\n\n--student'sinformation--page%d\n\n",++page)。

PRINT1。

}

}

}

i++。

}while(student[i].num!

=0)。

printf("pushanybuttontogoaway")。

bioskey(0)。

}

insert_message()/*添加信息*/

{inti=sum。

intflag=0。

charchoice。

clrscr()。

printf("\n\ninsertsstudent'sinformation\n")。

do

{student[i].num=++sum。

printf("\nnewstudnetnum:

%d",student[i].num)。

printf("\nstudent'sname:

")。

scanf("%s",&student[i].name)。

printf("\nstudent'ssex:

")。

scanf("%s",&student[i].sex)。

printf("\nstudent'sage:

")。

scanf("%d",&student[i].age)。

printf("\nstudent'sclass:

")。

scanf("%d",&student[i].class)。

printf("\nstudent'snum:

")。

scanf("%d",&student[i].num)。

printf("\nstudent'splants:

")。

scanf("%s",&student[i].plants)。

printf("\nstudent'sscore:

")。

scanf("%d%d%d%d",&student[i].exam.chinese,

&student[i].exam.math,

&student[i].exam.english,

&student[i].exam.aver)。

printf("\nstudent'sbirthday:

")。

scanf("%d%d%d",&student[i].birthday.year,&student[i].birthday.month,

&student[i].birthday.date)。

printf("\nstudent'stelephone:

")。

scanf("%d",&student[i].telephone)。

printf("\nstudent'sadd:

")。

scanf("%s",&student[i].add)。

sum++。

printf("\ndoyouwanttocontinue?

(Y/N)")。

choice=getch()。

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

{printf("\ncontinue!

\n")。

i++。

flag=1。

}

elseflag=0。

}while(flag==1)。

printf("\npushanybuttontogoaway")。

bioskey(0)。

}

intdel_by_name()

{

chardel_name[20],i,f=0。

printf("\n\npleaseinputthestudentname:

")。

scanf("%s",del_name)。

for(i=0。

i

i++)

{

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

{

student[i].num=-1。

printf("%sstudentinformationhavebeendeleted!

",student[i].name)。

f=1。

break。

}

}

if(f==0)

printf("\n\n********cannotfindthestudent!

*************\n\n")。

getchar()。

return0。

}

intdel_by_num()

{

intdel_num=0,i,f=0。

printf("\n\npleaseinputthestudentnum:

")。

scanf("%d",&del_num)。

for(i=0。

i

i++)

{

if(student[i].num==del_num)

{

student[i].num=-1。

printf("thestudents'informationhavebeendeleted!

")。

f=1。

break。

}

}

if(f==0)

printf("\n\n********cannotfindthestudent!

*************\n\n")。

getchar()。

return0。

}

del_message()

{

intchoice。

do

{

clrscr()。

printf("***********deletestudents'information*******\n\n")。

printf("1.deletebyname\n\n")。

printf("2.deletebynum\n\n")。

printf("0.retrunmenu\n\n")。

printf("pleasechoose(0-2):

")。

scanf("%d",&choice)。

switch(choice)

{

case1:

del_by_name()。

break。

case2:

del_by_num()。

break。

case0:

break。

}

}while(choice!

=0)。

return1。

}

revise_message()

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2