中南大学c语言课程实践报告.docx

上传人:b****6 文档编号:4109903 上传时间:2022-11-27 格式:DOCX 页数:15 大小:41.46KB
下载 相关 举报
中南大学c语言课程实践报告.docx_第1页
第1页 / 共15页
中南大学c语言课程实践报告.docx_第2页
第2页 / 共15页
中南大学c语言课程实践报告.docx_第3页
第3页 / 共15页
中南大学c语言课程实践报告.docx_第4页
第4页 / 共15页
中南大学c语言课程实践报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

中南大学c语言课程实践报告.docx

《中南大学c语言课程实践报告.docx》由会员分享,可在线阅读,更多相关《中南大学c语言课程实践报告.docx(15页珍藏版)》请在冰豆网上搜索。

中南大学c语言课程实践报告.docx

中南大学c语言课程实践报告

中南大学

C语言程序设计实践报告

题目学生信息管理系统

学生姓名张眼

指导教师刘伟荣

学院信息科学与工程学院

专业班级电气信息1113班

完成时间2012年6月28日星期四

1■设计任务及设计目标

学生信息管理系统是基于系统主菜单的操作来实现学生数据的录入、修改、查询和统计等系统的基本功能。

达到对学生信息的存储、统计、管理的目的。

需要处理的数据如:

班级、学号、姓名等。

实现的功能模块如:

数据的录入、数据的修改、数据的插入、数据的查询和数据的统计等。

在实践过程中熟练掌握C语言的基本知识:

数据类型(整型、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。

进一步掌握函数嵌套调用、文件的读写、链表的应用等。

2.总体设计

将整个系统分成若干子模块,

设计流程图如下:

学生信息管理系统

 

【1】输

入学生信息

【2】浏

览学生

信息

【3】查

询学生

信息

【4】删

除学生信息

【5】修

改学生信息

【6】不

及格学生列表

【7】学

生平均成绩

【8】学生课程信息查询

【0】退

出系统

++\n");

|学生信息管理系统欢迎您

++\n");

设计者:

张眼\n");

指导老师:

刘伟荣\n");

printf("重要提示:

为保证您的操作得到保存,请按正常顺序退出系统!

谢谢合作

do

{

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

printf("\t\t\t|**菜单**|\n");

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

printf("\t\t\t*

[1]----

-录入/插入学生信息

*\n")

printf("\t\t\t*

[2]----

-浏览学生信息

*\n");

printf("\t\t\t*

[3]----

-查询学生信息

*\n");

printf("\t\t\t*

[4]----

-删除学生信息

*\n");

printf("\t\t\t*

[5]----

-修改学生信息

*\n");

printf("\t\t\t*

[6]----

-不及格学生列表

*\n");

printf("\t\t\t*

[7]----

-成绩信息查询

*\n");

printf("\t\t\t*

[8]----

-平均成绩

*\n");

printf("\t\t\t*

[0]----

-退出系统

*\n");

printf("\t\t\t********************************\n")・

printf("请输入您的选择:

");

seanf("%d",&z);

switch(z)

{

case0:

tc();break;

case1:

lr();break;

case2:

ll();break;

case3:

cx();break;

case4:

sc();break;

case5:

xg();break;

case6:

bj();break;

case7:

kc();break;

case8:

pj();break;

default:

printf("\n无效选项!

");

}

}

while(z!

=0);

}

2输入模块:

输入部分包括学生的姓名,学号等基本信息以及学生的大学物理,英语,微积和信号的成绩,可以通过函数voidlr()实现此功能。

voidlr()/*录入函数*/

{

inty;

if(n==0)

p=stu;

do

{

printf("-\n”);

printf("请输入学生的学号:

”);scanf("%ld",&p->num);

printf("请输入学生的姓名:

”);

scanf("%s",p->name);

printf("请输入学生的年龄:

");

scanf("%d",&p->age);

printf("请输入学生的性别:

");

scanf("%s",p->sex);

printf("请输入学生的班级:

");

scanf("%d",&p->clas);

printf("请输入大物考试成绩:

");

scanf("%d",&p->pt);

printf("请输入大物平时成绩:

");

scanf("%d",&p->ps);

printf("请输入英语考试成绩:

");

scanf("%d",&p->et);

printf("请输入英语平时成绩:

");

scanf("%d",&p->es);

printf("请输入微积分考试成绩:

");

scanf("%d",&p->ct);

printf("请输入微积分平时成绩:

");

scanf("%d",&p->cs);

printf("请输入信号考试成绩:

");

scanf("%d",&p->xt);

printf("请输入信号平时成绩:

");

scanf("%d",&p->xe);

n++;

p++;

printf("\n1.继续输入.\n0.输入完毕.\n");

printf("请选择:

");

scanf("%d",&y);

}

while(y==1);

printf("提示:

输入完毕你一共输入%d个\n",n);

3查询模块:

该模块是通过输入的学生信息(学号或姓名)来查找学

生的所有信息并且显示在屏幕上。

通过函数voidcx()来实现。

voidcx()/*查询函数*/

{

intc;

intw,i,j=0;

charname[20];

if(n!

=0)

{

do{printf("\n");

printf("++\n");

printf("|按学号查询请按1|\n");

printf("|按姓名查询请按2|\n");

printf("|取消请按0|\n");

printf("++\n");

printf("请输入选择:

");

scanf("%d",&c);

switch(c)

{

case0:

break;

case1:

printf("请输入学生的学号;");

scanf("%ld",&w);

printf("\n");

for(i=0;i

if(stu[i].num==w)

{

printf("\n学号\t姓名\t年龄\t性别\t班级\n”);

printf("%ld\t%s\t%d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].clas);

j=1;

}

if(j==0)

printf("提示:

没有该学生记录,请核对!

”);

break;

case2:

printf("请输入学生的姓名:

");

scanf("%s",name);

printf("\n");

for(i=0;i

if(strcmp(name,stu[i].name)==0)

{

printf("\n学号\t姓名\t年龄\t性别\t班级\n”);

j=1;

printf("%ld\t%s\t%d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].

clas);

}

if(j==0)

printf(”提示:

没有该学生记录,请核对!

”);

break;

default:

printf("\n提示:

无效选项!

");

break;

}

}while(c!

=0);

}elseprintf("提示:

无学生数据,请输入数据!

”);

}

4删除模块:

该模块通过输入要删除的学生学号,通过学号查找并删

除记录。

如果没有学生信息输出提示:

无学生数据,请输入数据!

通过函数voidsc()实现

voidsc()/*删除函数*/

{

longintnum;

inti,j,e;

if(n!

=0)

{

printf("学号\t姓名\t年龄\t性别\t班级\n");

printf("\n");

for(i=0;i

printf("%ld\t%s\t%d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].clas);

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

”);

scanf("%ld",&num);

printf("\n");

for(i=0;i

if(num==stu[i].num)

j=i;

if(j!

=(n-1))

{

for(e=j;e<(n-1);e++)

{

stu[e].num=stu[e+1].num;

strcpy(stu[e].name,stu[e+1].name);

strcpy(stu[e].sex,stu[e+1].sex);

stu[e].age=stu[e+1].age;

stu[e].clas=stu[e+1].clas;

stu[e].pt=stu[e+1].pt;

stu[e].ps=stu[e+1].ps;

stu[e].et=stu[e+1].et;

stu[e].es=stu[e+1].es;

stu[e].ct=stu[e+1].ct;

stu[e].cs=stu[e+1].cs;}

n--;

}

elsen--;printf(”提示删除完毕!

”);

}elseprintf("提示:

无学生数据,请输入数据!

”);

}

5修改信息模块:

该模块通过输入要修改的学生学号查找学生信息,并显示用户修改的内容信息,供用户选择,根据选项进行修改。

通过函数voidxg()实现。

voidxg()/*修改函数*/

{

longintnum;

inti,j,c;

if(n!

=0)

{

printf("请输入您要修改的学生的学号:

");

scanf("%ld",&num);

printf("\n");

for(i=0;i

if(stu[i].num==num)

j=i;

do{

printf("请选择您要修改的学生的信息内容:

\n");

printf("++\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");

printf("|信号平时成绩请按13|\n");

printf("|取消请按0|\n");

printf("++\n");

printf("请输入您的选择:

");

scanf("%d",&c);

printf("\n");

switch(c)

{

case0:

break;

case1:

printf("请输入新姓名:

");scanf("%s",stu[j].name);break;

case2:

printf("请输入新年龄:

”);

scanf("%d",&stu[j].age);break;

case3:

printf("请输入新性别:

");

scanf("%s",stu[j].sex);break;

case4:

printf("请输入新学号:

”);scanf("%ld",&stu[j].num);break;

case5:

printf("请输入新班级:

”);

scanf("%d",&stu[j].clas);break;

case6:

printf("请输入大物考试成绩:

");

scanf("%d",&stu[j].pt);

break;

case7:

printf("请输入大物平时成绩:

");

scanf("%d",&stu[j].ps);

break;

case8:

printf("请输入英语考试成绩:

”);

scanf("%d",&stu[j].et);

break;

case9:

printf("请输入英语平时成绩:

");

scanf("%d",&stu[j].es);

break;

case10:

printf(”请输入微积分考试成绩:

");

scanf("%d",&stu[j].ct);

break;

case11:

printf(”请输入微积分平时成绩:

");

scanf("%d",&stu[j].cs);

case12:

printf("请输入信号考试成绩:

”);

scanf("%d",&stu[j].xt);

case13:

printf("请输入信号考试成绩:

”);

scanf("%d",&stu[j].xe);

break;

default:

printf("\n无效选项!

");break;

}

}while(c!

=0);

}elseprintf("提示:

无学生数据,请输入数据!

");

}

6不及格学生计算模块:

该模块通过对已经输入的学生数据进行处

理,当四门功课中有一门成绩小于60,就输出此学生的信息及不及

格科目的成绩。

此功能通过函数voidbj()实现。

voidbj()/*不及格学生列表函数*/

{

inti,j;

chara[4][10]={"大学物理","大学英语","微积分","信号"};

floatl[4];

if(n!

=0)

{printf("\n学号\t姓名\t课程\t\t成绩\n");

for(i=0;i

{l[0]=stu[i].pt*0.7+stu[i].ps*0.3;

l[1]=stu[i].et*0.7+stu[i].es*0.3;

l[2]=stu[i].ct*0.7+stu[i].cs*0.3;

l[3]=stu[i].xt*0.7+stu[i].xe*0.3;

for(j=0;j<4;j++)

if(l[j]<60.0)

{printf("%ld\t%s\t%s\t%3.1f\n",stu[i].num,stu[i].name,a[j],l[j]);

}

}

}

else

printf("提示:

无学生数据,请输入数据!

”);

}

7平均成绩计算模块:

该模块通过对已经输入的的学生成绩进行处

理,计算出每位同学的平均成绩并以平均成绩为最终成绩进行从高到低的排名,排名通过选择法实现,该功能通过函数voidpj()实现。

idpj()/*平均成绩计算函数*/

{

inti,j;

structstudenttemp;

floatl[4],ave[100],m;

if(n>1)

{

for(i=0;i<(n-1);i++)

for(j=i+1;j

{ave[i]=(stu[i].pt*0.7+stu[i].ps*0.3+stu[i].et*0.7+stu[i].es*0.3+stu[i].ct*0.7+stu[i].cs*0.3+stu[i].xt*0.7+stu[i].xe*0.3)/4;

ave[j]=(stu[j].pt*0.7+stu[j].ps*0.3+stu[j].et*0.7+stu[j].es*0.3+stu[j].ct*0.7+stu[j].cs*0.3+stu[i].xt*0.7+stu[i].xe*0.3)/4;

if(ave[i]

{

m=ave[j];temp=stu[j];

ave[j]=ave[i];stu|]]=stu[i];

ave[i]=m;stu[i]=temp;

}}

printf(”学号\t姓名\t年龄\t性别\t班级\t平均成绩\n");

printf(”

---\n");

for(i=0;i

printf("%ld\t%s\t%d\t%s\t%d\t%3.1f\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].clas,ave[i]);

}

elseif(n=0)

printf(”提示:

无学生数据,请输入数据!

”);

else

{ave[0]=(stu[0].pt*0.7+stu[0].ps*0.3+stu[0].et*0.7+stu[0].es*0.3+stu[0].ct*0.7+stu[0].cs*0.3+stu[0].xt*0.7+stu[0].xe*0.3)/4;

printf(”学号\t姓名\t年龄\t性别\t班级\t平均成绩\n");

printf(”

---\n");

printf("%ld\t%s\t%d\t%s\t%d\t%3.1f\n",stu[0].num,stu[0].name,stu[0].age,stu[0].sex,stu[0].clas,ave[0]);}

}

8学生课程信息查询模块:

该模块通过用户输入的选项来查询该学生的各个科目的信息,信息包括课程名称,课程编号,学分,平时成绩,考试成绩,综合成绩,并最终以表格的形式输出。

该功能通过函数voidkc()来实现。

voidkc()/*课程查询函数*/

{

intc;

intw,i,j=0;

charname[20];

if(n!

=0)

{

do{printf("\n");

printf("++\n");

printf("|按学号查询请按1|\n");

printf("|按姓名查询请按2|\n");

printf("|取消请按0|\n");

printf("++\n");

printf("请输入您的选择:

");

scanf("%d",&c);

switch(c)

{

caseO:

break;

case1:

printf("请输入学生的学号;");

scanf("%ld",&w);

printf("\n");

for(i=0;i

if(stu[i].num==w)

{

printf("\n课程名称\t课程编号\t学分\t平时成绩\t考试成绩\t综合成绩\n");

printf("大学物

\t0001\t\t4.0\t%d\t\t%d\t\t%3.1f\n",stu[i].ps,stu[i].pt,0.7*stu[i].pt+0.3*stu[i].ps);

printf(”大学英语\t0002\t\t4.0\t%d\t\t%d\t\t%3.1f\n",stu[i].es,stu[i].et,0.7*stu[i].et+0.3*stu[i].es);

printf(”微积分\t\t0003\t\t3.0\t%d\t\t%d\t\t%3.1f\n",stu[i].cs,stu[i].ct,0.7*stu[i].ct+0.3*stu[i].cs);

printf(”信号\t\t0004\t\t3.0\t%d\t\t%d\t\t%3.1f\n",stu[i].xt,stu[i].xe,0.7*stu[i].xt+0.3*stu[i].xe);

j=1;

}

if(j==0)

printf("提示:

没有该学生记录,请核对!

”);

break;

case2:

printf("请输入学生的姓名:

");

scanf("%s",name);

printf("\n");

for(i=0;i

if(strcmp(name,stu[i].name)==0)

{

printf("\n课程名称\t课程编号\t学分\t平时成绩\t考试成绩\t综合成绩\n");

printf("大学物理\t0001\t4.0\t%d\t%d\t%3.1f\n",stu[i].ps,stu[i].pt,0.7*stu[i].pt+0.3*stu[i].ps);

printf(”大学英语\t0002\t4.0\t%d\t%d\t%3.1f\n",stu[i].es,stu[i].et,0.7*stu[i].et+0.3*stu[i].es);

printf(”微积分\t0003\t3.0\t%d\t%d\t%3.1f\n",stu[i].cs,stu[i].ct,0.7*stu[i].ct+0.3*stu[i].cs);

j=1;

}

if(j==0)

printf("提示:

没有该学生记录,请核对!

");break;

default:

printf("\n提示:

无效选项!

");

break;

}

}while(c!

=0);

}elseprintf("提示:

无学生数据,请输入数据!

");

9退出系统模块:

当用户选择退出程序选项【0】时,执行函数voidtc()输出“谢谢登陆!

再见”而后退出运行。

4•设计总结

本学期我们的c语言课程实践课题一一学生信息管理系统是在老师的指导下,同学间相互的帮助下,设计出来的。

通过C语言的课程设计,我们对c语言中的重要的内容有了一个很好的认识与了解,同时

我们也对c语言的应用有了了解。

C语言的实质就是以一定的语法规范为准,通过对数据量的复杂结构运算,完成一定功能的程序,是一门计算机的基础语言,我们通过这两周的课程实践对其特点和算法有了跟好的了解。

通过这次课程设计,我懂得一个程序的设计就是一个实际问题的解决的过程,从解决问题的角度,我们可以这样来看:

首先了解这个问题的基本要求,即输入,输出,完成输入到输出的要求是什么,讲问题一一分开;其次,我们要捋清思路,逐一解决问题,着重考虑如何从输入导出输出,在这个过程中,可以确定所需的变量,数据,函数,然后确定处理过程一一算法。

总的来说,这次实践让我受益匪浅,让我对c语言有了进一步的认识,c语言功能高,表达能力强,使用灵活方便,目标程序效率高,是我们日后工作的良好工具。

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

当前位置:首页 > 初中教育 > 政史地

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

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