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

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

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

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

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

C语言课程设计报告34031157

(此文档为word格式,下载后您可任意编辑修改!

华中科技大学计算机科学与技术学院

《C语言程序设计》课程设计

实验报告

 

题目:

C语言学生信息管理系统

 

专业:

计算机技术

班级:

11级

学号:

姓名:

指导教师:

甘早斌

 

说明

1、设计的目的

1)复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握;

2)利用所学知识,理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;

3)培养学生在项目开发中团队合作精神、创新意识及实战能力。

2、设计的任务

根据学生的实际情况,进行分组选题。

主要的课程设计题目如下(学生也可自主选题):

1.同学之间的通讯录

2、学生信息管理系统

3、设计要求与设计报告

 设计要求:

1、任选上述题目之一,或自选题目。

2、模块化的程序设计

  3、锯齿形的程序书写格式。

4、必须通过编译连接运行

设计报告:

1、设计目的和任务

2、总体设计:

包括程序设计组成框图、流程图。

3、详细设计:

包括模块功能说明:

函数功能、入口及出口参数说明,函数调用关系描述等。

4、调试与测试:

包括调试方法,测试结果分析与讨论,测试过程中遇到的主要问题及采取的解决措施。

5、源程序清单和执行结果:

清单中应有足够的注释。

设计目的和任务

设计目的:

(1)基本掌握面向过程程序设计的基本思路和方法;

(2)达到熟练掌握C语言的基本知识和技能;

(3)能够利用所学的基本知识和技能,解决简单的程序设计问题

程序功能:

(1).学生基本信息及成绩所选科目成绩的录入。

(2).基本信息的查询与修改。

(3).对学生成绩进行排序

(4)对所开课程的成绩分析(求其平均成绩,最高分和最低分);

(5).对学生考试成绩进行排名;

(6).保存于读取文件

(7).对学生成绩的追加与删除

对应子函数与流程图

voidcreatlist();*调用创建链表函数*

voidloadlist();*从文件调入记录函数*

voidsearchlist()*调用成绩查询函数*

voiddellist()*调用删除学生资料函数*

voidaddlist();break*调用追加学生资料函数*

voidprintlist(,k;

*==============================================================================================*

score*creatlist(void)

*函数creatlist,功能:

创建链表,此函数带回一个指向链表头的指针*

{

score*;

chart[10];

n=0;

p1=p2=p3=(score*)malloc(LEN);");

repeat1:

printf("请输入学生学号(学号应大于0):

");*输入学号,学号应大于0*

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

while(p1->number<0)

{

getchar();

printf("输入错误,请重新输入学生学号:

");

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

if(p1->number==0)

gotoend;*当输入的学号为0时,转到末尾,结束创建链表*

else

{

p3=>0)

{

for(i=0;i

{

if(p1->number!

=p3->number)

p3=p3->next;

else

{

printf("学号重复,请重输!

\n");

gotorepeat1;*当输入的学号已经存在,程序报错,返回前面重新输入*

}

}

}

}

printf("请输入学生姓名:

");

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

printf("请输入c成绩(0~100):

");*0-100*

scanf("%f",&p1->C);

while(p1->C<0||p1->C>100)

{

getchar();

printf("输入错误,请重新输入c成绩");

scanf("%f",&p1->C);}

printf("请输入高数成绩(0~100):

");

scanf("%f",&p1->Math);

while(p1->Math<0||p1->Math>100)

{

getchar();

printf("输入错误,请重新输入高数成绩");

scanf("%f",&p1->Math);}

printf("请输入英语成绩(0~100):

");

scanf("%f",&p1->English);

while(p1->English<0||p1->English>100)

{

getchar();

printf("输入错误,请重新输入英语成绩");

scanf("%f",&p1->English);}

=n+1;

if(n==1)

");

repeat2:

printf("请输入学生学号(学号应大于0):

");

scanf("%d",&p1->number);*输入学号,学号应大于0*

while(p1->number<0)

{

getchar();

printf("输入错误,请重新输入学生学号:

");

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

}

if(p1->number==0)

gotoend;*当输入的学号为0时,转到末尾,结束创建链表*

else

{

p3=>0)

{

for(i=0;i

{

if(p1->number!

=p3->number)

p3=p3->next;

else

{

printf("学号重复,请重输!

\n");

gotorepeat2;

*当输入的学号已经存在,程序报错,返回前面重新输入*

}

}

}

}

printf("请输入学生姓名:

");

scanf("%s",&p1->name);*输入学生姓名*

printf("请输入c成绩(0~100):

");

scanf("%f",&p1->C);*输入各科成绩,成绩应在0-100,并直到输入正确为止*

while(p1->C<0||p1->C>100)

{

getchar();

printf("输入错误,请重新输入c成绩");

scanf("%f",&p1->C);

}

printf("请输入高数成绩(0~100):

");

scanf("%f",&p1->Math);

while(p1->Math<0||p1->Math>100)

{

getchar();

printf("输入错误,请重新输入高数成绩");

scanf("%f",&p1->Math);

}

printf("请输入英语成绩(0~100):

");

scanf("%f",&p1->English);

while(p1->English<0||p1->English>100)

{

getchar();

printf("输入错误,请重新输入英语成绩");

scanf("%f",&p1->English);

}

}

end:

p1=;i++)

{

for(j=i+1;j<=n;j++)

{

max=p1;

p1=p1->next;

if(max->number>p1->number)

{

k=max->number;

max->number=p1->number;

p1->number=k;

*交换前后结点中的学号值,使得学号大者移到后面的结点中*

strcpy(t,max->name);

strcpy(max->name,p1->name);

strcpy(p1->name,t);

*交换前后结点中的姓名,使之与学号相匹配*

fen=max->C;

max->C=p1->C;

*交换前后结点中的c成绩,使之与学号相匹配*

fen=max->Math;

max->Math=p1->Math;

p1->Math=fen;

*交换前后结点中的高数成绩,使之与学号相匹配*

fen=max->English;

max->English=p1->English;

p1->English=fen;

*交换前后结点中的英语成绩,使之与学号相匹配*

}

}

max=",n);

return([10];

FILE*fp;

printf("请输入文件路径及文件名:

");

scanf("%s",filepn);

if((fp=fopen(filepn,"r+"))==NULL)

{

printf("不能打开文件!

\n");

return0;

}

fscanf(fp,"学习成绩管理系统\n");

fscanf(fp,"作者:

班级:

11级计算机学号:

\n");

fscanf(fp,"-----\n");

fscanf(fp,"|学号\t|姓名\t|C\t|高数\t|英语\t|\n");

fscanf(fp,"-----\n");*读入表格域*

printf("学生成绩管理系统\n");

printf("作者:

班级:

11级计算机学号:

\n");

printf("-----\n");

printf("|学号\t|姓名\t|C\t|高数\t|英语\t|\n");

printf("-----\n");*打印表格域*

m=m+1;

if(m==1)

{

p1=(score*)malloc(LEN);*开辟一个新单元*

fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->C,&p1->Math,&p1->English);

printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->C,p1->Math,p1->English);

*文件读入与显示*

=n+1;

if(n==1)",&p1->number,p1->name,&p1->C,&p1->Math,&p1->English);

printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->C,p1->Math,p1->English);

}while(!

feof(fp));

p2->next=p1;

p1->next=NULL;

n=n+1;

}printf("-----\n");*表格下线*

fclose(fp);*结束读入,关闭文件*

return(;

chart[10];

p3=stu=(score*)malloc(LEN);*开辟一个新单元*

printf("\n输入要增加的学生的资料!

");

repeat4:

printf("请输入学生学号(学号应大于0):

");

scanf("%d",&stu->number);

while(stu->number<0)*输入学号,学号应大于0*

{

getchar();

printf("输入错误,请重新输入学生学号:

");

scanf("%d",&stu->number);

}*输入错误,重新输入学号*

if(stu->number==0)

gotoend2;*当输入的学号为0时,转到末尾,结束追加*

else

{

p3=>0)

{

for(i=0;i

{

if(stu->number!

=p3->number)

p3=p3->next;

else

{

printf("学号重复,请重输!

\n");

gotorepeat4;

*当输入的学号已经存在,程序报错,返回前面重新输入*

}

}

}

}

******************************************************

printf("输入学生姓名:

");

scanf("%s",stu->name);*输入学生姓名*

printf("请输入c成绩(0~100):

");

scanf("%f",&stu->C);*输入各科成绩,成绩应在0-100,直到输入正确*

while(stu->C<0||stu->C>100)

{

getchar();

printf("输入错误,请重新输入c成绩");

scanf("%f",&stu->C);}

printf("请输入高数成绩(0~100):

");

scanf("%f",&stu->Math);

while(stu->Math<0||stu->Math>100)

{

getchar();

printf("输入错误,请重新输入高数成绩");

scanf("%f",&stu->Math);

}

printf("请输入英语成绩(0~100):

");

scanf("%f",&stu->English);

while(stu->English<0||stu->English>100)

{

getchar();

printf("输入错误,请重新输入英语成绩");

scanf("%f",&stu->English);}*输入错误,重新输入sql成绩直到正确为止*

p1==n+1;

p1=;i++)

{

for(j=i+1;j<=n;j++)

{

max=p1;

p1=p1->next;

if(max->number>p1->number)

{

k=max->number;

max->number=p1->number;

p1->number=k;

*交换前后结点中的学号值,使得学号大者移到后面的结点中*

strcpy(t,max->name);

strcpy(max->name,p1->name);

strcpy(p1->name,t);

*交换前后结点中的姓名,使之与学号相匹配*

fen=max->C;

max->C=p1->C;

p1->C=fen;

*交换前后结点中的各科成绩,使之与学号相匹配*

fen=max->Math;

max->Math=p1->Math;

p1->Math=fen;

fen=max->English;

max->English=p1->English;

p1->English=fen;

}

}

max=",n);

return(");return(");

printf("|学号\t|姓名\t|C\t|高数\t|英语\t|\n");

printf("-----\n");*打印表格域*

p1=",p1->number,p1->name,p1->C,p1->Math,p1->English);

printf("-----\n");

}*打印表格域*

else

printf("%d不存在此学生!

\n",number);

printf("输入要查询的学生的学号,");

scanf("%d",&number);

}

printf("已经退出了!

\n");

return(");

return(",number);n=n-1;

}

else

printf("%d不存在此学生!

\n",number);

*找不到该结点*

printf("输入要删除的学生的学号:

");

scanf("%d",&number);

getchar();

}

#ifdefDEBUG

printf("已经退出了!

\n");

#endif

printf("现在的学生数为:

%d个!

\n",n);

return(");}

else

{

printf("%d\n",n);

printf("----\n");

printf("|学号\t|姓名\t|C\t|高数\t|英语\t|\n");

printf("-----\n");*打印表格域*

p=",p->number,p->name,p->C,p->Math,p->English);

printf("---\n");*打印表格域*

p=p->next;

}while(p!

=NULL);*打印完成了*

}

}

*==============================================================================================*

*==============================================================================================*

score*statisticslist(score*;

score*p;

intx,y=0,i=0;

p=");

scanf("%d",&x);

getchar();

switch(x)

*用switch语句实现功能选择*

{

case1:

if(");return(");

printf("|学号\t|姓名\t|C\t|高数\t|英语\t|总分\t|平均分\t|\n");

printf("\n");*打印表格域*

while(p!

=NULL)

{

sum1=p->C+p->Math+p->English;*计算个人总分*

ave1=sum13;*计算个人平均分*

printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->C,p->Math,p->English,sum1,ave1);

*打印结果*

printf("\n");*打印表格域*

p=p->next;

}

}

return(");return(",ave1);

printf("高数平均分是%.1f\n",ave2);

printf("英语平均分是%.1f\n",ave3);*打印结果*

return(");return()

{

i=i+1;

sum1=p->C+p->Math+p->English;*计算个人总分*

if(max

max=sum1;

p=p->next;

}

printf("总分最高分:

%.1f",max);

printf("\n");

return(");

return(=p->C+p->Math+p->English;

while(p!

=NULL)

{

sum2=p->C+p->Math+p->English;

if(min>sum2)

min=sum2;

p=p->next;

}

}

printf("总分最低分:

%.1f",min);

printf("\n");

return(");

}

return([20];*用来存放文件保存路径以及文件名*

printf("请输入文件路径及文件名:

");

scanf("%s",filepn);

if((fp=fopen(filepn,"w+"))==NULL)

{

printf("不能打开文件!

\n");

return0;

}

fprintf(fp,"学生成绩管理系统\n");

fprintf(fp,"作者:

班级:

11级计算机学号:

V\n");

fprintf(fp,"-----\n");

fprintf(fp,"|学号\t|姓名\t|C\t|高数\t|英语\t|\n");

fprintf(fp,"-----\n");

*打印表格域*

while(p1!

=NULL)

{

fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->C,p1->Math,p1->English);

p1=p1->next;*下移一个结点*

}

fclose(fp);

printf("文件已经保存!

\n");

return0;

}

*==============================================================================================*

*==============================================================================================*

score*taxislist(score*;

chart[10];

if(");return(");

printf("4按高数成绩排序\t5按英语成绩排序\t\n");

for(i=0;i<80;i++)

printf("\3");

printf("请选择操作:

");

scanf("%d",&x);*选择操作*

getchar();

switch(x)*用switch语句实现功能选择*

{

case1:

for(i=1;i

{

for(j=i+1;j<=n;j++)

{

max=p;

p=p->next;

if(max->number>p->number)

{

k=max->number;

max->number=p->number;

p->number=k;

*交换前后结点中的学号值,使得学号大者移到后面的结点中*

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

*交换前后结点中的姓名,使之与学号相匹配*

fen=max->C;

max->C=p->C;

p->C=fen;*交换前后结点中的各科成绩,使之与学号相匹配*

fen=max->Math;

max->Math=p->Math;

p->Math=fen;

fen=max->English;

max->English=p->Engl

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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