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

上传人:b****6 文档编号:8449826 上传时间:2023-01-31 格式:DOCX 页数:29 大小:311.11KB
下载 相关 举报
C语言课程设计报告书.docx_第1页
第1页 / 共29页
C语言课程设计报告书.docx_第2页
第2页 / 共29页
C语言课程设计报告书.docx_第3页
第3页 / 共29页
C语言课程设计报告书.docx_第4页
第4页 / 共29页
C语言课程设计报告书.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

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

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

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

C语言课程设计报告书

 

****學院

C语言课程设计报告书

 

系部名称

  **系

学生姓名

   *****

专业名称

电子信息工程

班级

  *****

学号

 

指导教师

时间

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

{

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

{

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!

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

当前位置:首页 > 工作范文 > 制度规范

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

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