C程序训练报告Word格式文档下载.docx
- 文档编号:18674016
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:20
- 大小:106.97KB
C程序训练报告Word格式文档下载.docx
《C程序训练报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C程序训练报告Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
要求设计说明书的字数在3000字以上。
划
2010.11.10-11.20根据课程设计大纲的要求,查找相关资料,完成需求分析;
2010.11.21-12.30进行系统的概要设计;
2010.12.01-12.10进行系统的详细设计和源代码的书写;
2010.12.11-12.25对系统进行调试分析,写出程序训练报告。
考
资
料
[1]何钦铭.C语言程序设计.北京:
高等教育出版社,2008
[2]颜晖.C语言程序设计实验指导.北京:
[3]谭浩强编著.C程序设计(第二版).北京:
清华大学出版社,1999
指导教师签字
教研室主任签字
2010年11月10日
目录
学生成绩管理系统-1-
1设计内容-1-
2解题思路-1-
3调试过程-1-
4程序清单-1-
5测试数据-2-
6小结-2-
1设计内容
●问题描述
学生成绩管理系统设计:
学生成绩信息包括:
学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:
(1)能按学期、按班级完成对学生成绩的录入、修改
(2)能按班级统计学生的成绩,求学生的总分及平均分
(3)能查询学生成绩,不及格科目及学生名单
(4)能按班级输出学生的成绩单
●输入数据
主要以字符型(char)以及整型(int)作为数据的输入类型
●输出要求
以字符型(char)以及整型(int)作为结果的输出类型
●输入样例
●输出样例
2解题思路
使用结构数组实现对学生信息的输入、删除和查询等功能!
程序框图如下:
3调试过程
(1)某些语句多余或错误致使输出结果或屏幕显示达不到期望值;
(2)中括号配对缺少在调试的时候显示错误信息;
(3)链表方面的知识欠佳,造成编辑和查错过程艰难;
(4)对循环条件选择错误导致无法正常退出;
(5)输入语句经常丢失地址符,使数据无法正常输入。
4程序清单
#include"
stdio.h"
stddef.h"
string.h"
#defineMAX10
typedefstructstudent{/*定义结构体*/
charname[MAX];
/*姓名*/
intnum[MAX];
/*学号*/
charsex[MAX];
/*性别*/
intchinese;
/*语文*/
intmathematic;
/*数学*/
intenglish;
/*英语*/
intcomputer;
/*计算机*/
structstudent*next;
/*结构体指针*/
}stu;
stu*head;
/*头指针*/
voidprint()/*显示或打印函数*/
{
printf("
\t\t\t学生成绩管理系统\n"
);
/*成绩管理系统*/
<
1>
输入数据\n"
/*输入数据*/
2>
显示\n"
/*显示*/
3>
插入\n"
/*插入数据*/
4>
查询\n"
/*访问数据*/
5>
历史记录\n"
/*以前数据*/
6>
保存\n"
/*保留数据*/
7>
修改\n"
/*更新数据*/
8>
语文平均成绩\n"
/*语文平均成绩*/
9>
数学平均成绩\n"
/*数学平均成绩*/
10>
英语平均成绩\n"
/*英语平均成绩*/
11>
计算机平均成绩\n"
/*计算机平均成绩*/
12>
退出\n"
/*退出*/
}
voidcin(stu*p1)/*输入相关数据的函数*/
{
printf("
输入姓名:
\n"
scanf("
%s"
&
p1->
name);
printf("
输入性别:
sex);
输入成绩:
语文:
%d"
chinese);
数学:
mathematic);
英语:
english);
计算机:
computer);
stu*cindata()/*其他数据是否继续输入的函数*/
{
stu*p1,*p2;
inti=1;
charch;
p1=(stu*)malloc(sizeof(stu));
head=p1;
while(i)
cin(p1);
您想继续吗?
(Y/N)"
/*是否继续输入数据*/
ch=getchar();
if(ch=='
N'
)
i=0;
p1->
next=NULL;
else
p2=p1;
p2->
next=p1;
return(p1->
next);
}
stu*lookdata(stu*p1)/*查看数据的函数*/
{
while(p1!
=NULL)
Num:
%d\t"
p1->
num);
Name:
%s\t"
Sex:
Chinese:
Math:
English:
Computer:
p1=p1->
next;
returnp1;
voidinsert()/*通过比较学号来插入数据的函数*/
stu*p1,*p3,*p2;
p1=head;
p3=(stu*)malloc(sizeof(stu));
p3->
if(head==NULL){head=p3;
return;
cin(p3);
=NULL&
&
(p1->
num<
p3->
num))/*通过学号的比较来插入*/
p2=p1;
p1=p1->
if(p2==head){p3->
next=head;
head=p3;
p3->
p2->
next=p3;
find(stu*p2)/*通过姓名查找查看数据的函数*/
charname[20];
intb=0;
输入学生姓名进行查找:
"
/*通过姓名查看*/
scanf("
name);
while(p2!
if(strcmp(name,p2->
name)==0)
您想查看的数据为:
Name:
p2->
sex:
b=1;
else
if(b==0)
对不起!
无该生记录!
p2=p2->
if(b==1)
print();
找到!
{print();
未找到!
voidcaverage()/*求各学生语文平均分、最高和最低分成绩的函数*/
stu*p1;
inti;
floatmax=0.0,min=200.0;
floatsum=0.0,aver=0;
if(p1==NULL)
notdata!
for(i=0;
p1!
=NULL;
i++,p1=p1->
next)
sum+=p1->
chinese;
aver=sum/i;
p1=head;
for(i=0;
if(max<
chinese)
max=p1->
if(min>
min=p1->
ChineseAverage:
%f"
aver);
ChineseMax:
max);
ChineseMin:
min);
voidmaverage()/*求各学生数学平均分、最高和最低分成绩的函数*/
mathematic;
mathematic)
MatheAverage:
MatheMax:
MatheMin:
voideaverage()/*求各学生英语平均分、最高和最低分成绩的函数*/
{stu*p1;
{for(i=0;
english;
{if(max<
english)
EnglishAverage:
EnglishMax:
EnglishMin:
voidcomaverage()/*求各学生计算机平均分、最高和最低分成绩的函数*/
stu*p1;
computer;
computer)
ComputerAverage:
ComputerMax:
ComputerMin:
update(stu*p2)/*通过姓名查找来更新数据*/
charname[10];
/*p2为指向结构体structstudent的指针*/
/*输入姓名*/
Findyoudata\n"
english:
Success!
b=1;
elseif(b==0)
SorrynotFinddata!
if(b==0)
print();
Finish!
save(stu*p2)/*保留数据函数*/
FILE*fp;
charfile[10];
Enterfilename"
/*输入文件名*/
file);
fp=fopen(file,"
w"
fprintf(fp,"
fclose(fp);
charpassword[7]="
Y"
;
/*意见*/
voidmain()/*主函数*/
intchoice;
stu*p2;
chars[8];
intflag=0,i;
intn=1;
do{printf("
是否进入系统(Y/N):
s);
if(!
strcmp(s,password))/*进行密码匹配验证*/
现在进入系统!
\n\n\n"
flag=1;
break;
else{
您选择退出!
n--;
}while(n>
0);
flag)
您已经退出!
exit(0);
/*自动退出*/
/*密码验证成功后进入的界面*/
\t\t\t欢迎使用学生成绩管理系统!
\t\n"
作者:
xxx\t班级:
电子信息2班\t学号:
xxxxxxx\n"
/*作者,班级和号码*/
===========\t===============\t=============\t===============\n"
while
(1)
请选择您想要的操作(1~12):
i);
if(i<
1||i>
12)
请选择1to12:
/*再从1-12中进行选择*/
exit
(1);
switch(i)
case1:
p2=cindata();
/*其他数据是否继续输入的函数*/
case2:
p2=lookdata(head);
/*查看数据的函数*/
case3:
insert();
/*通过比较学号来插入数据的函数*/
case4:
find(head);
/*通过姓名查找查看数据的函数*/
case5:
update(head);
/*通过姓名查找来更新数据*/
case6:
save(head);
/*保留数据函数*/
case7:
/*显示或打印函数*/
case8:
caverage();
/*求各学生语文平均分、最高和最低分成绩的函数*/
case9:
maverage();
/*求各学生数学平均分、最高和最低分成绩的函数*/
case10:
eaverage();
/*求各学生英语平均分、最高和最低分成绩的函数*/
case11:
comaverage();
/*求各学生计算机平均分、最高和最低分成绩的函数*/
case12:
5测试数据
姓名:
Zhaodesheng性别:
nan语文:
100数学:
100英语:
100计算机:
100
chenjinlong性别:
90数学:
85
…….
6小结
通过该计算类的程序设计,使我认识到分析问题以及设计算法的重要性,并基本掌握了C语言的语法,能从自然语言描述中抽象出一个计算问题,继而能通过程序实现,并将计算结果大致还原成对原问题的解答。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 训练 报告