资源描述
「
「
天不老,情难绝。心似双丝网,中有千千结。-张先《千秋岁》
似此星辰非昨夜,为谁风露立中宵。-黄景仁《绮怀诗二首其一》
直道相思了无益,未妨惆怅是清狂。-李商隐《无题六首其三》
深知身在情长在,怅望江头江水声。-李商隐《暮秋独游曲江》
26、自由代表是内心永久孤单。
27、现实太假,还是自己太傻?
28、一切由于寂寞,才开始了暧昧。
29、生活真正意义是:生下来,活下去。
30、年龄不是差距,身高不是距离。
31、人生是一张单程车票,没有后退,没有返回!
32、虽然有时候我会心痛,但是我却拥有别人不曾拥有幸福,因此我知足了!
33、在爱与被爱选取里,我选取了被爱,错、又能如何?
34、在你世界,没有我存在,因此你感受不到我内心深处苍桑!
C语言程序设计
探究式自主设计报告
系 部: 电子电气工程系
专 业: 电气自动化
班 级:
姓 名:
课题名称: 学生成绩管理体统
指引教师:
********** 学 院
12月12日
说 明
1、设计目
1)复习巩固C语言基本知识,进一步加深对C语言编程理解和掌握;
2)运用所学知识,理论和实际结合,运用资源,采用模块化构造,使用模仿修改自主设计相结合办法,锻炼学生综合分析解决实际问题编程能力;
3)培养学生在项目开发中团队合伙精神、创新意识及实战能力。
2、设计任务
依照学生实际状况,进行分组选题。重要课程设计题目如下(学生也可自主选题):
1、图书管理系统 2、学生信息管理系统
3、学生成绩管理系统 4、学生通讯录管理系统
5、职工信息管理系统 6、设计简朴计算器
课程设计采用学生自主设计和指引教师辅导相结合方式。
3、设计规定与设计报告
设计规定:
1、任选上述题目之一,或自选题目。 2、模块化程序设计
3、锯齿形程序书写格式。 4、必要通过编译连接运营
设计报告:
1、设计目和任务
2、总体设计:涉及程序设计构成框图、流程图。
3、详细设计:涉及模块功能阐明:函数功能、入口及出口参数阐明,函数调用关系描述等。
4、调试与测试:涉及调试办法,测试成果分析与讨论,测试过程中遇到重要问题及采用解决办法。
5、源程序清单和执行成果:清单中应有足够注释。 设计目和任务
(重要简介设计任务,为什么要设计,设计要达到什么样目。)
设计目:(1)基本掌握面向过程程序设计基本思路和办法;
(2)达到纯熟掌握C语言基本知识和技能;
(3)可以运用所学基本知识和技能,解决简朴程序设计问题
程序功能:(1). 学生基本信息及成绩所选科目成绩录入。
(2). 基本信息查询(分系、班级;分科目)与修改。
(3). 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和先进率);
(4). 对所开课程成绩分析(求其平均成绩,最高分和最低分);
(5). 对学生考试成绩进行排名;
目 录
一、总体设计 1
二、详细设计 1
三、调试与测试 1
四、源程序清单和执行成果 1
五、建议和体会 1
六、参照文献 1
一:总体设计
设计流程图如下:
二、详细设计
1、输入初始学生信息:其中涉及学生姓名、学号和性别以及学生语文、数学、英语和计算机等有关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生所有信息涉及学生语文、数学、英语和计算机等成绩。
3、插入模块:可用insert( )函数来实现。其中通过学号大小来比较,并且以此来排序。
4、输出学生信息以及成绩:通过学生姓名来查看学生语文、数学、英语和计算机等有关成绩,同步也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩平均分数、最高和最低分数。
5、退出系统:可用一种函数exit()来实现,一方面将信息保存到文献中,释放动态创立内存空间,再退出此程序。
三、调试与测试
四、源程序设计和测试成果
五、建议和体会
六、参照文献
指引教师评语及评分
考核小组意见及评分
综合评分
三:调试与测试
问题一、学生初始信息模块:
其中涉及学生姓名、学号和性别以及学生语文、数学、英语和计算机等有关信息;可用函数cin(stu *p1)来实现此操作。当对的输入存在学生学号,系统进行判断时,提示不存在此学生。
解决办法及环节:
1、一种个输出所有学生学号,检查文献中与否有此学生,发既有。
2、既然有此学生,那么检查循环判断与否有此学生语句发现没有错
3、输出用于循环检查语句中学生信息,发现乱码
4、仔细分析乱码因素,最后发现是变量类型错误,错将学生类型构造体指针变量定义为了其她类型指针变量。
问题二、查询模块:
可用stu *lookdata(stu *p1) 来实现。找到就输出此学生所有信息涉及学生语文、数学、英语和计算机等成绩。当对的输入查找信息时,系统却不可以得到所要查找学生信息以及学生语文、数学、英语和计算机成绩。
解决办法及环节:
1、检查所编写程序代码与否完全对的,若不是,则改之,然后再继续对的输入查找信息看能否得到所要查找学生信息以及学生语文、数学、英语和计算机成绩。
2、检查当咱们在输入查找信息时,看与否咱们输入信息有误,若是这样话,咱们应当仔细输入查找信息。
四:源程序清单和执行成果
源程序如下:
#include "stdio.h"
#include "math.h"
#define N 30
struct student
{
long int num;
char name[10];
char sex[3];
int Chinese,Math,English,total,average;
}stu[N]={{4001,"lks","m",100,100,100},{4002,"lyt","w",99,63,89},{4003,"asd","w",60,70,80},{4004,"fgh","m",41,100,98},
{4005,"asd","m",74,74,87},{4006,"yt","m",85,58,78},{4007,"qwe","w",74,100,87},{4008,"dcs","w",74,85,96},
{4009,"qfg","m",74,78,36},{4010,"gft","m",45,85,98},{4011,"mn","m",60,77,17},{4012,"yer","w",78,78,100},{4013,"lsd","m",100,89,85}},s;
int M=13;
void modify(struct student stu[])
{
int t;long num;char z;
t=search(stu)-400;
printf("input num:");
scanf("%ld",&stu[t].num);
printf("input name:");
scanf("%s",stu[t].name);
printf("input sex:");
scanf("%s",stu[t].sex);
printf("input score of Chinese:");
scanf("%d",&stu[t].Chinese);
printf("input score of Math:");
scanf("%d",&stu[t].Math);
printf("input score of English:");
scanf("%d",&stu[t].English);
stu[t].average=(stu[t].English+stu[t].Math+stu[t].Chinese)/3;
stu[t].total=stu[t].English+stu[t].Math+stu[t].Chinese;
printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
printf("\t%4ld\t",stu[t].num);
printf(" %s\t",stu[t].name);
printf("%s\t",stu[t].sex); printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[t].Chinese,stu[t].Math,stu[t].English,stu[t].total,stu[t].average);
printf("Next?y/n???");
scanf("%s",&z);
if(z=='y')
modify(stu);
}
void output(struct student stu[])
{
int i; printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
for(i=0;i<M;i++)
{
printf("\t%4ld\t",stu[i].num);
printf(" %s\t",stu[i].name);
printf("%s\t",stu[i].sex); printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average);
}
}
void sort(struct student stu[])
{
int i,j,t;
printf("1.an yingyu chengcheji paixu\n2.an yuwen chengji paixu\n3.an shuxue chengji paixu\n4.an pingjue chengji paixu\n5.an zongfen paixu\n");
scanf("%d",&t);
switch(t)
{
case 1:
for(i=0;i<M-1;i++)
for(j=0;j<M-i-1;j++)
{
if(stu[j].English<stu[j+1].English)
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
output(stu);
getch();
break;
case 2:
for(i=0;i<M-1;i++)
for(j=0;j<M-i-1;j++)
{
if(stu[j].Chinese<stu[j+1].Chinese)
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
output(stu);
getch();
break;
case 3:
for(i=0;i<M-1;i++)
for(j=0;j<M-i-1;j++)
{
if(stu[j].Math<stu[j+1].Math)
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
output(stu);
getch();
break;
case 4:
for(i=0;i<M-1;i++)
for(j=0;j<M-i-1;j++)
{
if(stu[j].average<stu[j+1].average)
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
output(stu);
getch();
break;
case 5:
for(i=0;i<M-1;i++)
for(j=0;j<M-i-1;j++)
{
if(stu[j].total<stu[j+1].total)
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
output(stu);
getch();
break;
}
}
int search(struct student stu[])
{
long t,i,z,K='y';char name[20];
printf("1.an xuehao chazhao\n2.an xingming chazhao\n");
scanf("%d",&z);
switch(z)
{
case 1:
printf("qing shuru xuehao:\n");
scanf("%ld",&t);
for(i=0;i<M;i++)
{
if(stu[i].num==t)
{
K='x'; printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
printf("\t%4ld\t",stu[i].num);
printf(" %s\t",stu[i].name);
printf(" %s\t",stu[i].sex);
printf("%4d\t%4d\t%4d\t%4d%6d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average);
return(stu[i].num);
getche();
break;
}
}
if(K='y')
{
printf("No find");
getchar();
}
break;
case 2:
printf("qing shuru xingming:");
scanf("%s",name);
for(i=0;i<M;i++)
{
if(strcmp(stu[i].name,name)==0)
{
K='x'; printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
printf("\t%4ld\t",stu[i].num);
printf(" %s\t",stu[i].name);
printf(" %s\t",stu[i].sex);
printf("%4d\t%4d\t%4d\t%4d%6d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average);
getche();
break;
}
}
if(K='y')
{
printf("No find");
getchar();
}
break;
}
}
void insert(struct student stu[])
{
int i;char z='y';
for(i=M;i<=N&&z=='y';i++)
{
printf("input num:");
scanf("%ld",&stu[i].num);
printf("input name:");
scanf("%s",stu[i].name);
printf("input name:");
scanf("%s",stu[i].sex);
printf("input score of Chinese:");
scanf("%d",&stu[i].Chinese);
printf("input score of Math:");
scanf("%d",&stu[i].Math);
printf("input score of English:");
scanf("%d",&stu[i].English); stu[i].average=(stu[i].English+stu[i].Math+stu[i].Chinese)/3;
stu[i].total=stu[i].English+stu[i].Math+stu[i].Chinese;
printf("Next?y/n???");
z=getche();
if(z!='y')
{
M=i+1;
sort(stu);
output(stu);
}
}
}
void delete(struct student stu[])
{
long t,i,z;char l,name[20];
printf("1.an xuehao shanchu/n2.an xingming chanchu");
scanf("%d",&z);
switch(z)
{
case 1:
printf("qing shuru xuehao:");
scanf("%ld",&t);
for(i=0;i<M;i++)
{
if(stu[i].num==t)
{ printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
printf("\t%4ld\t",stu[i].num);
printf(" %s\t",stu[i].name);
printf("%s\t",stu[i].sex); printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average);
break;
}
}
printf("Go on?y/n???");
scanf("%s",&l);
if(l=='y')
{
for(;i<M;i++)
{
stu[i]=stu[i+1];
}
stu[M-1].num=0;
output(stu);
}
else
break;
case 2:
printf("qing shuru xingming:");
scanf("%s",name);
for(i=0;i<M;i++)
{
if(strcmp(stu[i].name,name)==0)
{
printf("\tNUM\tNAME\tSEX\tCHINESE\tMATH\tENGLISH\tTOTAL\tAVERAGE\n");
printf("\t%4ld\t",stu[i].num);
printf(" %s\t",stu[i].name);
printf("%s\t",stu[i].sex); printf("%4d\t%4d\t%4d\t%4d%8d\n",stu[i].Chinese,stu[i].Math,stu[i].English,stu[i].total,stu[i].average);
break;
}
}
printf("Go on?y/n???");
scanf("%s",&l);
if(l=='y')
{
for(;i<M;i++)
{
stu[i]=stu[i+1];
}
stu[M-1].num=0;
output(stu);
}
else
break;
}
}
main()
{
int choice,i;
clrscr();
for(i=0;i<M;i++)
{ stu[i].average=(stu[i].English+stu[i].Math+stu[i].Chinese)/3;;
stu[i].total=stu[i].English+stu[i].Math+stu[i].Chinese;
}
for(;;)
{
printf("\n------ xuesheng chengji guanli xitong------\n");
printf("1.modify xuesheng jilu \n");
printf("2.output xuesheng jilu\n");
printf("3.sort xuesheng jilu\n");
printf("4.search xuesheng jilu\n");
printf("5.insert xuesheng jilu\n");
printf("6.delete xuesheng jilu\n");
printf("7. exit\n");
printf("pllease input(1-7):\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
modify(stu);
break;
case 2:
output(stu);
break;
case 3:
sort(stu);
break;
case 4:
search(stu);
break;
case 5:
insert(stu);
break;
case 6:
delete(stu);
break;
case 7:
exit();break;
}
}
getch();
}
五:建议和体会
本学期咱们C语言程序设计课程考试题目是让学生自主设计。全班共分了6个小组,咱们3组需要完毕题目是设计学生成绩管理系统 。
C语言实质就是以一定语法规范为准,通过对数据量复杂构造运算,完毕一定功能程序,是一门计算机基本语言,咱们通过这一学期学习,对于其特点和算法有了一定限度理解。这两周课程设计正是让咱们巩固此前知识并在此基本上可以有所突破。
在人们共同努力下,忙碌了两个星期,咱们顺利完毕了对此程序编译及试运营。在设计程序过程中,咱们理解到要设计一种完整程序,其中最难也许就属设计整个程序框架,其中也许会需要通过诸多次修改与调试,因此必要要有耐心,直至最后设计出自己想要程序。
此外平时学习c语言基本也很核心,由于如果平时学得就不怎么样,那么你面对这样一种比较有难度程序,也许会望而却步,看懂她人程序都是个难点,更别说让自己去设计。为理解决此类问题,最佳就是多向同窗,教师请教,查找资料。
设计一种程序过程就是解决一种实际问题过程,从解决实际问题角度,咱们可以这样来看:一方面要理解这个问题基本规定,即输入、输出、完毕从输入到输出规定是什么;在次咱们必要捋清思路,逐个解决问题各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可拟定所需变量、数组、函数,然后拟定解决过程--算法。
感谢这次课程设计,它使我更加深刻地体会到c语言程序编写过程严谨与细致,尚有就是无论做任何事都要有耐心。固然团队合伙也是非常重要一种环节,这会使你在学习过程中倍感轻松,因此在本次课程设计过程中,通过咱们小组全体成员共同努力,终于完毕了这个学生管理系统设计。
总来说,这次程序设计让我获益匪浅,对C语言也有了进一步结识:C语言功能高、表达能力强、使用灵活以便、目的程序效率高等等。C语言是在国内外广泛使用一种计算机语言,相信除了以上长处,尚有许多咱们尚未发现,但愿能在后来学习中有更进一步结识。
六:参照文献
教材:C语言程序设计
C程序编程技术
指引教师评语及评分
考核小组意见及评分
综合评分
展开阅读全文