C语言综合设计报告.docx

上传人:b****1 文档编号:3424230 上传时间:2023-05-05 格式:DOCX 页数:20 大小:26.91KB
下载 相关 举报
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_第6页
第6页 / 共20页
C语言综合设计报告.docx_第7页
第7页 / 共20页
C语言综合设计报告.docx_第8页
第8页 / 共20页
C语言综合设计报告.docx_第9页
第9页 / 共20页
C语言综合设计报告.docx_第10页
第10页 / 共20页
C语言综合设计报告.docx_第11页
第11页 / 共20页
C语言综合设计报告.docx_第12页
第12页 / 共20页
C语言综合设计报告.docx_第13页
第13页 / 共20页
C语言综合设计报告.docx_第14页
第14页 / 共20页
C语言综合设计报告.docx_第15页
第15页 / 共20页
C语言综合设计报告.docx_第16页
第16页 / 共20页
C语言综合设计报告.docx_第17页
第17页 / 共20页
C语言综合设计报告.docx_第18页
第18页 / 共20页
C语言综合设计报告.docx_第19页
第19页 / 共20页
C语言综合设计报告.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言综合设计报告.docx

《C语言综合设计报告.docx》由会员分享,可在线阅读,更多相关《C语言综合设计报告.docx(20页珍藏版)》请在冰点文库上搜索。

C语言综合设计报告.docx

C语言综合设计报告

昆明理工大学

《C程序设计基础》课程

综合设计实践教学课题报告

组长:

学号***姓名***

组员:

学号***姓名***

学号***姓名***

学号***姓名***

学号***姓名***

学号***姓名**

联系人及联系电话:

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

学院:

理学院专业班级:

电信111

指导教师:

***

昆明理工大学计算中心

2012年5月30日

昆明理工大学计算中心

《程序设计基础》课程综合设计实践教学课题考核表

课题名称:

学生成绩管理系统学院:

理学院专业班级:

电信111

学号

姓名

小组

编号

题号

承担及完成的内容

成绩

备注

小组

自评

教师

评定

***

显示函数与信息删除函数设计

**

main()函数与数据结构设计

***

信息录入函数与排序函数设计

***

查询函数设计

***

插入函数设计

****

按学号排序函数与按总分排序函数设计

题目

要求

学生成绩管理系统

用C语言编程实现学生成绩的录入、查询、添加、排序、删除等功能。

教师评语

教师签名:

***2012年6月10日

《C程序设计》课程综合设计实践教学课题报告

1、系统概述

本学生成绩管理系统主要解决学生成绩的录入、查询、添加、排序、删除等问题。

主要通过建立链表、插入结点、删除链表中的结点、输出链表、定义函数等方式实现预期的功能。

2、数据结构设计

#include

#include

#include

#defineLENsizeof(Student)

#defineNULL0

typedefstructstudent

{

intnum;/*定义变量:

学号*/

charname[20];/*定义变量:

姓名*/

charsex[2];/*定义变量:

性别*/

intscore[3];/*定义变量:

成绩*/

intsum;/*定义变量:

总成绩*/

structstudent*next;

}Student;

intn;/*定义全局变量*/

Student*cin(void);/*函数声明:

信息录入函数*/

Student*sort_1(Student*head,int);/*函数声明:

按学号排序函数*/

voidsort_2(Student*head);/*函数声明:

按总分排序函数*/

voidprint(Student*head);/*函数声明:

显示函数*/

Student*sort_all(Student*head);/*函数声明:

排序函数*/

voidfind(Student*head);/*函数声明:

查询函数*/

Student*add_new(Student*head);/*函数声明:

插入函数*/

3、模块设计

设计职责分配

设计内容

组员

main()函数与数据结构设计

***

信息录入函数与排序函数

***

按学号排序函数与按总分排序函数

***

查询函数

***

插入函数

(**

显示函数与信息删除函数

***

4.运行及操作说明

进入系统:

根据提示从键盘录入相关信息:

5、总结和体会

源程序编辑:

编译:

Build:

运行:

输入:

结果:

调试中遇到的主要问题及解决办法:

在程序的调试过程中,常遇到因为误删或漏写分号,或者字母大小写混乱等造成的语法错误,以及函数设计不当等造成的逻辑错误使程序编译错误。

由于VC在程序编译错误时的提示信息较为冗杂且很多未能命中关键,因此,仔细逐行阅读已有代码是常用的解决问题办法,有时也以组员之间交流讨论的方式来寻求解决程序逻辑错误的方法。

收获和体会:

组长:

本次C语言综合设计,锻炼了每一个组员的缜密思考问题并解决问题的能力,对个人的严谨行为习惯的养成有很大帮助,同时也使大家在合作中增进感情,认识到了团队合作的重要性与必要性,为今后在团队中能有更好的表现奠定了基础。

组员:

这次综合设计让我们有了很多提高,克服了不细心的毛病,这在我们以后的学习和工作中有很大的帮助。

编程是一项周密细致的活动,对个人的严谨思考能力有很高的要求,大家的互助合作和个人的独立思考相结合,让我们在解决设计过程中遇到的问题的同时,也提高了自己的思维缜密度,获益良多。

6、程序源代码

/***********************************************************************************************************/

#include

#include

#include

#defineLENsizeof(Student)

#defineNULL0

typedefstructstudent

{

intnum;

charname[20];

charsex[2];

intscore[3];

intsum;

structstudent*next;

}Student;

intn;

Student*cin(void);

Student*sort_1(Student*head,int);

voidsort_2(Student*head);

voidprint(Student*head);

Student*sort_all(Student*head);

voidfind(Student*head);

Student*add_new(Student*head);

/***********************************************************************************************************/

Student*cin()/*信息录入函数*/

{

intflag;

Student*head,*p1,*p2;

n=0;

head=(Student*)malloc(LEN);

p2=head;

printf("请输入第【%d】名学生的相关信息(学号为0结束输入):

\n",n+1);

printf("学号:

");

scanf("%d",&flag);

while(getchar()!

='\n');

for(;flag;)

{

n++;

p1=(Student*)malloc(LEN);

p1->num=flag;

printf("姓名:

");

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

printf("性别:

");

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

printf("数学成绩:

");

scanf("%d",&p1->score[0]);

printf("英语成绩:

");

scanf("%d",&p1->score[1]);

printf("物理成绩:

");

scanf("%d",&p1->score[2]);

p1->sum=p1->score[0]+p1->score[1]+p1->score[2];

p2->next=p1;

p2=p1;

printf("\n请输入第【%d】名学生的相关信息(学号为0结束输入):

\n",n+1);

printf("学号:

");

scanf("%d",&flag);

}

p2->next=NULL;

printf("\n\n");

returnhead;

}

/***********************************************************************************************************/

Student*sort_all(Student*head)/*排序函数*/

{

intchoose;

for(;;)

{

printf("\n\t\t+++++【统计排序】+++++\n");

printf("\t\t|\t1.按学号排序\t|\n");

printf("\t\t|\t2.按总分排序\t|\n");

printf("\t\t|\t7.单科最高分及平均分|\n");

printf("\t\t|\t8.当前学生成绩\t|\n");

printf("\t\t|\t0.返回上一级菜单|\n");

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

printf("请选择:

");

scanf("%d",&choose);

while(getchar()!

='\n');

switch(choose)

{

case1:

case2:

case3:

case4:

case5:

case6:

head=sort_1(head,choose);

break;

case7:

print(head);sort_2(head);

break;

case8:

print(head);

break;

case0:

returnhead;

default:

printf("\n\n非法值!

请重新输入:

\n\n");

break;

}

}

}

/***********************************************************************************************************/

Student*sort_1(Student*head,intchoose)/*按学号排序*/

{

Student*p1,*p2=head->next,*pm,*px;

Studentmid;

if(!

p2)returnhead;

for(p1=p2;p1->next!

=NULL;p1=p1->next)

{

pm=p1;

for(p2=p1->next;p2!

=NULL;p2=p2->next)

switch(choose)

{

case1:

if(pm->num>p2->num)pm=p2;

break;

case2:

if(pm->sumsum)pm=p2;

break;

case3:

if(pm->score[0]score[0])pm=p2;

break;

case4:

if(pm->score[1]score[1])pm=p2;

break;

case5:

if(pm->score[2]score[2])pm=p2;

break;

}

if(pm!

=p1)

{

mid=*pm;

*pm=*p1;

*p1=mid;

px=pm->next;

pm->next=p1->next;

p1->next=px;

}

}

printf("\n排序后的成绩表为:

\n");

print(head);

returnhead;

}

/***********************************************************************************************************/

voidsort_2(Student*head)/*按总分排序*/

{

Student*p=head->next;

intmax_1,max_2,max_3,min_1,min_2,min_3;

intmax_sum,min_sum;

intsum_1=0,sum_2=0,sum_3=0;

floataver_1,aver_2,aver_3,aver_sum;

if(!

p)return;

max_1=min_1=p->score[0];max_2=min_2=p->score[1];

max_3=min_3=p->score[2];

max_sum=min_sum=p->sum;

for(;p;p=p->next)

{

if(max_1score[0])max_1=p->score[0];

elseif(min_1>p->score[0])min_1=p->score[0];

if(max_2score[1])max_2=p->score[1];

elseif(min_2>p->score[1])min_2=p->score[1];

if(max_3score[2])max_3=p->score[2];

elseif(min_3>p->score[2])min_3=p->score[2];

if(max_sumsum)max_sum=p->sum;

elseif(min_sum>p->sum)min_sum=p->sum;

sum_1+=p->score[0];sum_2+=p->score[1];sum_3+=p->score[2];

}

aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;

aver_sum=aver_1+aver_2+aver_3;

printf("共【%d】名学生\n",n);

printf("总分最高分为【%d】,最低分为【%d】,平均分为【%.2f】\n",max_sum,min_sum,aver_sum);

}

/***********************************************************************************************************/

voidfind(Student*head)/*查询函数*/

{

Student*p;

intchoose,fnum;

chartem[20];

if(n==0)

{

printf("\n数据为空!

\n");

return;

}

for(;;)

{

printf("\n选择查询方式:

\n\n");

printf("1.按学号;2.按姓名;0.不查询\n\n");

printf("请选择:

");

scanf("%d",&choose);

while(getchar()!

='\n');

if(choose==1)

{

printf("\n请输入学号(输入0结束查询):

");

scanf("%d",&fnum);

for(;fnum;)

{

for(p=head->next;p!

=NULL&&p->num!

=fnum;p=p->next);

if(!

p)

{

printf("\n\n无法查询,请重新输入(输入0结束查询):

");

scanf("%d",&fnum);

}

elseif(p->num==fnum)

{

printf("%d:

\n",p->num);

printf("学号\t姓名\t性别\t数学成绩英语成绩物理成绩总分\n");

printf("%d\t%s\t%s\t%d%d%d%d\n",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->sum);

printf("\n\n请输入学号(输入0结束查询):

");

scanf("%d",&fnum);

}

}

}

elseif(choose==2)

{

printf("\n请输入姓名(输入0结束查询):

");

scanf("%s",tem);

for(;strcmp(tem,"0");)

{

for(p=head->next;p!

=NULL&&strcmp(p->name,tem);p=p->next);

if(!

p)

{

printf("\n\n无法查询,请重新输入(输入0结束查询):

");

scanf("%s",tem);

}

elseif(!

strcmp(p->name,tem))

{

printf("\n%s:

\n",p->name);

printf("学号\t姓名\t性别\t数学成绩英语成绩物理成绩总分\n");

printf("%d\t%s\t%s\t%d%d%d%d\n",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->sum);

printf("\n\n请输入姓名(输入0结束查询):

");

scanf("%s",tem);

}

}

}

elseif(choose==0)

{

printf("\n不查询!

\n");

break;

}

else

{

printf("\n其他选择,视作不查询!

\n");

break;

}

}

}

/***********************************************************************************************************/

Student*add_new(Student*head)/*插入函数*/

{

Student*p;

intflag;

printf("\n\n请输入新加入学生的相关信息(学号为0表示结束输入):

\n");

printf("学号:

");

scanf("%d",&flag);

while(getchar()!

='\n');

for(;flag;)

{

p=(Student*)malloc(LEN);

p->num=flag;

printf("姓名:

");

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

printf("性别:

");

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

printf("数学成绩:

");

scanf("%d",&p->score[0]);

printf("英语成绩:

");

scanf("%d",&p->score[1]);

printf("物理成绩:

");

scanf("%d",&p->score[2]);

p->sum=p->score[0]+p->score[1]+p->score[2];

p->next=head->next;

head->next=p;

n++;

printf("\n请输入新加入学生的相关信息(学号为0表示结束输入):

\n");

printf("学号:

");

scanf("%d",&flag);

}

head=sort_1(head,1);

printf("加入后的成绩表为:

\n");

print(head);

returnhead;

}

/***********************************************************************************************************/

voidprint(Student*head)/*显示函数*/

{

Student*p=head->next;

if(!

p)

{

printf("\n\n\t\t+++++数据为空!

++++++\n\n\n");

return;

}

printf("共有【%d】名学生:

\n",n);

printf("+++++++++++++++成绩统计+++++++++++++++++\n");

printf("学号\t姓名\t性别\t数学英语物理总分\n");

for(;p;p=p->next)

printf("%d\t%s\t%s\t%d%d%d%d\n",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->sum=p->score[0]+p->score[1]+p->score[2]);

}

/***********************************************************************************************************/

structstudent*del(structstudent*head,longnum)/*信息删除函数*/

{

structstudent*p1,*p2;

if(head==NULL)

{

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2