C语言课程设计报告书李莎.docx
- 文档编号:28709403
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:26
- 大小:22.90KB
C语言课程设计报告书李莎.docx
《C语言课程设计报告书李莎.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告书李莎.docx(26页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告书李莎
(此文档为word格式,下载后您可任意编辑修改!
)
西安郵電學院
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 { 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! =0); return1; } revise_messag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告书