C程序训练报告.docx

上传人:b****5 文档编号:5686926 上传时间:2022-12-31 格式:DOCX 页数:20 大小:106.97KB
下载 相关 举报
C程序训练报告.docx_第1页
第1页 / 共20页
C程序训练报告.docx_第2页
第2页 / 共20页
C程序训练报告.docx_第3页
第3页 / 共20页
C程序训练报告.docx_第4页
第4页 / 共20页
C程序训练报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C程序训练报告.docx

《C程序训练报告.docx》由会员分享,可在线阅读,更多相关《C程序训练报告.docx(20页珍藏版)》请在冰豆网上搜索。

C程序训练报告.docx

C程序训练报告

 

C程序训练报告

 

题目:

C语言程序设计综合训练

 

院系:

计算机科学与工程学院

专业班级:

电子信息技术及仪器10-2班

学号:

xxxxxxxxx

学生姓名:

xxx

指导教师:

xxx

2010年12月25日

安徽理工大学程序训练任务书

计算机学院监控与嵌入式技术系

学号

xxxxxxxxx

学生姓名

xxx

专业(班级)

电子信息技术及仪器10-2班

设计题目

学生成绩管理系统

(1)用C语言实现设计任务;

(2)所设计的程序可读性好,执行效率高;

(3)有良好的操作界面;

(4)设计说明书能很好地反映设计内容

(1)问题分析及解决方案框架确定

(2)详细设计和编码

(3)上机前编写程序与检查

(4)上机调试程序

(5)完成课程设计报告

要求设计说明书的字数在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语言程序设计实验指导.北京:

高等教育出版社,2008

[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"

#include"stddef.h"

#include"stddef.h"

#include"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");/*成绩管理系统*/

printf("<1>输入数据\n");/*输入数据*/

printf("<2>显示\n");/*显示*/

printf("<3>插入\n");/*插入数据*/

printf("<4>查询\n");/*访问数据*/

printf("<5>历史记录\n");/*以前数据*/

printf("<6>保存\n");/*保留数据*/

printf("<7>修改\n");/*更新数据*/

printf("<8>语文平均成绩\n");/*语文平均成绩*/

printf("<9>数学平均成绩\n");/*数学平均成绩*/

printf("<10>英语平均成绩\n");/*英语平均成绩*/

printf("<11>计算机平均成绩\n");/*计算机平均成绩*/

printf("<12>退出\n");/*退出*/

}

voidcin(stu*p1)/*输入相关数据的函数*/

{

printf("输入姓名:

\n");

scanf("%s",&p1->name);

printf("输入性别:

\n");

scanf("%s",&p1->sex);

printf("输入成绩:

\n");

printf("语文:

\n");

scanf("%d",&p1->chinese);

printf("数学:

\n");

scanf("%d",&p1->mathematic);

printf("英语:

\n");

scanf("%d",&p1->english);

printf("计算机:

\n");

scanf("%d",&p1->computer);

}

stu*cindata()/*其他数据是否继续输入的函数*/

{

stu*p1,*p2;

inti=1;

charch;

p1=(stu*)malloc(sizeof(stu));

head=p1;

while(i)

{

cin(p1);

printf("您想继续吗?

(Y/N)");/*是否继续输入数据*/

ch=getchar();

ch=getchar();

if(ch=='N')

{

i=0;

p1->next=NULL;

}

else

{

p2=p1;

p1=(stu*)malloc(sizeof(stu));

p2->next=p1;

}

}

return(p1->next);

}

stu*lookdata(stu*p1)/*查看数据的函数*/

{

while(p1!

=NULL)

{

printf("Num:

%d\t",p1->num);

printf("Name:

%s\t",p1->name);

printf("Sex:

%s\t",p1->sex);

printf("\n");

printf("Chinese:

%d\t",p1->chinese);

printf("Math:

%d\t",p1->mathematic);

printf("English:

%d\t",p1->english);

printf("Computer:

%d\t",p1->computer);

printf("\n");

p1=p1->next;

}

returnp1;

}

voidinsert()/*通过比较学号来插入数据的函数*/

{

stu*p1,*p3,*p2;

charch;

p1=head;

p3=(stu*)malloc(sizeof(stu));

p3->next=NULL;

if(head==NULL){head=p3;return;}

cin(p3);

while(p1!

=NULL&&(p1->numnum))/*通过学号的比较来插入*/

{

p2=p1;p1=p1->next;}

if(p2==head){p3->next=head;head=p3;return;}

p3->next=p1;

p2->next=p3;

}

}

find(stu*p2)/*通过姓名查找查看数据的函数*/

{

charname[20];

intb=0;

printf("输入学生姓名进行查找:

");/*通过姓名查看*/

scanf("%s",name);

while(p2!

=NULL)

{

if(strcmp(name,p2->name)==0)

{

printf("您想查看的数据为:

\n");

printf("Name:

%s\t",p2->name);

printf("Num:

%d\t",p2->num);

printf("sex:

%s\t",p2->sex);

printf("\n");

printf("Chinese:

%d\t",p2->chinese);

printf("Math:

%d\t",p2->mathematic);

printf("English:

%d\t",p2->english);

printf("Computer:

%d\t",p2->computer);

printf("\n");

b=1;

}

else

if(b==0)

printf("对不起!

无该生记录!

");

p2=p2->next;

}

if(b==1)

{

print();

printf("找到!

\n");}

else

{print();

printf("未找到!

\n");

}

}

voidcaverage()/*求各学生语文平均分、最高和最低分成绩的函数*/

{

stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{

for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->chinese;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{

if(maxchinese)

max=p1->chinese;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->chinese)

min=p1->chinese;

}

printf("ChineseAverage:

%f",aver);

printf("ChineseMax:

%f",max);

printf("ChineseMin:

%f",min);

}

voidmaverage()/*求各学生数学平均分、最高和最低分成绩的函数*/

{

stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{

for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->mathematic;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{

if(maxmathematic)

max=p1->mathematic;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->mathematic)

min=p1->mathematic;

}

printf("MatheAverage:

%f",aver);

printf("MatheMax:

%f",max);

printf("MatheMin:

%f",min);

}

voideaverage()/*求各学生英语平均分、最高和最低分成绩的函数*/

{stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->english;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{if(maxenglish)

max=p1->english;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->english)

min=p1->english;

}

printf("EnglishAverage:

%f",aver);

printf("EnglishMax:

%f",max);

printf("EnglishMin:

%f",min);

}

voidcomaverage()/*求各学生计算机平均分、最高和最低分成绩的函数*/

{

stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{

for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->computer;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{

if(maxcomputer)

max=p1->computer;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->computer)

min=p1->computer;

}

printf("ComputerAverage:

%f",aver);

printf("ComputerMax:

%f",max);

printf("ComputerMin:

%f",min);

}

update(stu*p2)/*通过姓名查找来更新数据*/

{

charname[10];/*p2为指向结构体structstudent的指针*/

intb=0;

printf("输入姓名:

");/*输入姓名*/

scanf("%s",name);

while(p2!

=NULL)

{

if(strcmp(name,p2->name)==0)

{

printf("Findyoudata\n");

scanf("Name:

%s",p2->name);

scanf("Num:

%s",p2->num);

scanf("Sex:

%s",p2->sex);

scanf("Chinese:

%d",p2->chinese);

scanf("Math:

%d",p2->mathematic);

scanf("english:

%d",p2->english);

scanf("Computer:

%d",p2->computer);

printf("Success!

");

b=1;

}

elseif(b==0)

printf("SorrynotFinddata!

");

p2=p2->next;}

if(b==0)

{

print();

printf("SorrynotFinddata!

");

}

else

{

print();

printf("Finish!

");

}

}

save(stu*p2)/*保留数据函数*/

{

FILE*fp;

charfile[10];

printf("Enterfilename");/*输入文件名*/

scanf("%s",file);

fp=fopen(file,"w");

while(p2!

=NULL)

{

fprintf(fp,"%s",p2->name);

fprintf(fp,"%s",p2->num);

fprintf(fp,"%s",p2->sex);

fprintf(fp,"%d",p2->chinese);

fprintf(fp,"%d",p2->mathematic);

fprintf(fp,"%d",p2->english);

fprintf(fp,"%d",p2->computer);

p2=p2->next;

}

fclose(fp);

}

charpassword[7]="Y";/*意见*/

voidmain()/*主函数*/

{

intchoice;

stu*p2;

chars[8];

intflag=0,i;

intn=1;

do{printf("是否进入系统(Y/N):

\n");

scanf("%s",s);

if(!

strcmp(s,password))/*进行密码匹配验证*/

{

printf("现在进入系统!

\n\n\n");

flag=1;

break;

}

else{

printf("您选择退出!

\n");

n--;

}

}while(n>0);

if(!

flag)

{

printf("您已经退出!

");

exit(0);/*自动退出*/

}

/*密码验证成功后进入的界面*/

printf("\t\t\t欢迎使用学生成绩管理系统!

\t\n");

printf("作者:

xxx\t班级:

电子信息2班\t学号:

xxxxxxx\n");/*作者,班级和号码*/

printf("===========\t===============\t=============\t===============\n");

print();

while

(1)

{

printf("请选择您想要的操作(1~12):

");

scanf("%d",&i);

if(i<1||i>12)

{

printf("请选择1to12:

\n");/*再从1-12中进行选择*/

scanf("%d",&i);

exit

(1);

}

else

switch(i)

{

case1:

p2=cindata();/*其他数据是否继续输入的函数*/

break;

case2:

p2=lookdata(head);/*查看数据的函数*/

break;

case3:

insert();/*通过比较学号来插入数据的函数*/

break;

case4:

find(head);/*通过姓名查找查看数据的函数*/

break;

case5:

update(head);/*通过姓名查找来更新数据*/

break;

case6:

save(head);/*保留数据函数*/

break;

case7:

print();/*显示或打印函数*/

break;

case8:

caverage();/*求各学生语文平均分、最高和最低分成绩的函数*/

break;

case9:

maverage();/*求各学生数学平均分、最高和最低分成绩的函数*/

break;

case10:

eaverage();/*求各学生英语平均分、最高和最低分成绩的函数*/

break;

case11:

comaverage();/*求各学生计算机平均分、最高和最低分成绩的函数*/

break;

case12:

exit

(1);/*退出*/

break;

}

}

}

5测试数据

姓名:

Zhaodesheng性别:

nan语文:

100数学:

100英语:

100计算机:

100

姓名:

chenjinlong性别:

nan语文:

90数学:

100英语:

100计算机:

85

…….

6小结

通过该计算类的程序设计,使我认识到分析问题以及设计算法的重要性,并基本掌握了C语言的语法,能从自然语言描述中抽象出一个计算问题,继而能通过程序实现,并将计算结果大致还原成对原问题的解答。

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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