C语言综合设计报告.docx
- 文档编号:3424230
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:20
- 大小:26.91KB
C语言综合设计报告.docx
《C语言综合设计报告.docx》由会员分享,可在线阅读,更多相关《C语言综合设计报告.docx(20页珍藏版)》请在冰点文库上搜索。
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->sum
break;
case3:
if(pm->score[0]
break;
case4:
if(pm->score[1]
break;
case5:
if(pm->score[2]
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_1
elseif(min_1>p->score[0])min_1=p->score[0];
if(max_2
elseif(min_2>p->score[1])min_2=p->score[1];
if(max_3
elseif(min_3>p->score[2])min_3=p->score[2];
if(max_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)
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 综合 设计 报告