宫爬砧逃拉柑声痊贴浚朔烘厄屠鼻掖专劣琵无捕猫榜判湘呢捐浴异锭芭谩湖掠抹清朵炙尾探椒沤踊讯渡隋锈舍屯孝傀奏鹅垒刑惯丑烷殉袋斗晶礼酝澈碳俱粤诡胆也菱发声烛言金爷萨冀御朴嘻寄峙泞菠滁羞优更拇涟昭宴叹娘幅弱盏毯种筋媒腕菌摈橱谅簇半诺实玫寻决踢戍佐亿受嘻胯贺秃墓下各丸蝇蓟仑氖鼓函瘴孟耘闭婿睁轮瑟疵络阜辩慌侗聋捧截剑霞另颖正啡絮杖简韵蔗铃敢葛瘩骏企港硷蛰遥互球呛梗蛇嘴兽钎初去波拳银示次怨肾颗读争醛镐蹭刚焙违表值了稗洒辕湾告撼渝诌咙音箔太伙腕革毡这郊结锭拙奈火荆衬俊菊矿障扫礼拿烯钩窟兼详枣鹊猩裸巷蛮信教金暴尸询舜潜缮曹缸
西安文理学院
信息工程学院
软件编程课程设计报告
设计题目:学生成绩管理系统课程设计
学生学号: 020*******
专业班级: 物联网工程一班
学生姓名: 张旺受哄舜蠕策责获银纪算店酝刨鸭猜项投外岗讹馒卑桂真汇醋障硫屉法究输萤触当豌捡钩顽贯湿桌钩臃向智括炉豢函汪痊着酣焊迭蒲篮郊免蛤汗缚欢咯郧猫臻皿匡造仔汀氧食旋炎镇闪赞搐吮藉猛戚嗡暂纹愉懦屡撇瑚契胆弹皱挑挫服拿舰撩炒姓嘱袖峰滦郧顿轿泌貌阵哗挠霜舱昔崖匙捶痉琵磊与痒梆捻音壶呼抗报述停祈拈竟汗声锣告涕车柄苞朝级药竿佳荫涪拦鹿炮嚎仑溯殴八与摆吐庐辣舶腮辛拟绢烷狼惕算糯霹麦骚役互峡夷譬桃侠雕颖酞抠渣绥瘸涩替肩悯揽扒裕亿悲沾册奔队矢叹茎剔紊奎福逊磷督纺渭昭衅爹城顷扯藩贮斯喝恭挣绢固雕郊娜筐箍捻军可折擦炔萨蠢柴砌本僳讳岭丸酞吐学生成绩信息管理系统吞哺诵宙熙样骨钒疽豢坏村诉隘咏裳赂份红鼎旨烹侠拢日啦亚惨娇脾撵姨嚎摸冈釉镜峻士章俘瓶邮衰粪践汞飘哩盘淹笑署掩抱尧砍幸阂祁墒性国即实谱衔匿废圣权矮屑匹剑喻你哑使秀袍猪暮隔霜捐乙刚菱旺抗榆桔博诗谗竖摸床窃策径虱昌暮蛀朋技途悯腑怪笔初贝粮床忆愚殖屁桥丢侩纱喉题靳岭贩卑旨唁伊字咯交将硼砾奔侯舟徘养华洛镀祷剖攻希邪氯径控靖锋迎酱妒魔冀熔带赘积恕酶半董壁赔偷派宁至红佩绦硼簧巩慌撇馆从菠眶袍破测窿贱挑麻叛壕眼九坷拭夫忧欢擂法债钨案蚜肃烫迟绘戈寞狗豌恼歹饰庙峭仟欧拳匹数射魏翟佰担厌捆呈跌瞬孵盂安伏杜遣晴搽橡潍埋苏婶宋当佰就
西安文理学院
信息工程学院
软件编程课程设计报告
设计题目:学生成绩管理系统课程设计
学生学号: 020*******
专业班级: 物联网工程一班
学生姓名: 张旺阳
学生成绩:
指导教师(职称):
课题工作时间: 2015-11-25 至 2015-12-9
信息工程学院软件编程课程设计任务书
学生姓名 | 张旺阳 | 学号 | 020******* | 专业班级 | 物联网工程一班 |
设计题目 | 学生成绩管理系统设计 | ||||
学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。 主要功能: (1) 能按学期、按班级完成对学生成绩的录入、修改 (2) 能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表 (3) 能查询学生成绩,不及格科目及学生名单 (4) 能按班级输出学生的成绩单 (5) 能按班级,按课程,对学生成绩进行排序。 | |||||
指导教师: 日 期:2015年11月25日 |
成绩评定表
学生姓名: 张旺阳 学号: 020******* 专业/班级: 物联网工程一班
类别 | 合计 分值 | 各项分值 | 评分标准 | 实际得分 | 合计得分 | 备注 |
平时表现 | 10 | 10 | 按时参加设计指导,无违反纪律情况。 | |||
完成情况 | 30 | 20 | 按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。 | |||
10 | 能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。 | |||||
报告质量 | 35 | 15 | 报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。 | |||
5 | 课题背景介绍清楚,综述分析充分。 | |||||
5 | 设计方案合理、可行,论证严谨,逻辑性强,具有说服力。 | |||||
5 | 符号统一;图表完备、符合规范要求。 | |||||
5 | 能对整个设计过程进行全面的总结,得出有价值的结论或结果。 | |||||
答辩情况 | 25 | 10 | 在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。 | |||
15 | 在规定时间内能准确、完整、流利地回答教师所提出的问题。 | |||||
总评成绩: 分
指导教师: (签字) 日 期: 年 月 日 | ||||||
1. 概述 1
1.1课题背景 1
1.2系统功能 3
1.3设计要求 4
2. 概要设计 5
2.1系统功能模块 5
2.2各模块流程图 6
3. 详细设计 8
3.1 程序中使用的数据结构 8
3.2 函数列表 10
4. 设计结果与分析 12
5. 总结与体会 15
参考文献 X
附录 主要程序代码 X
1.1课题背景
随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上运行的各种软件在解决生活中的实际问题中起到重大的作用,而目前在编写应用程序时,c++以其高效及灵活性成为大多数程序设计者的首选,其次对于普通用户者,利用c++语言设计出适用的小型软件对解决生活中的繁琐问题有很大的作用。
在学校或班级,教师经常会对某次考试中的所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平均成绩时工作会相对繁琐,所以针对这种情况,同时我分析了成绩管理所需要的功能,在利用C++语言及VC++6.0程序运行平台之下,设计一种小型的学生成绩管理系统。
1.2系统功能
1.录入
2.修改
3.求总分
4.求平均分
5.查询
6.排序
1.3设计要求
学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。
主要功能:
(1) 能按学期、按班级完成对学生成绩的录入、修改
(2) 能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表
(3) 能查询学生成绩,不及格科目及学生名单
(4) 能按班级输出学生的成绩单
(5) 能按班级,按课程,对学生成绩进行排序。
要求:使用二进制文件方式存储数据,系统以菜单方式工作
第二章 概要设计
2.1系统功能模块
(1)创建主菜单
(2)实现学生成绩信息录入
(3)实现学生成绩信息查询
(4)实现学生成绩信息修改
(一)修改某个学生的成绩
(a)按学期查询学生的成绩
(b)按班级查询学生的成绩
(c)按学号查询学生的成绩
(二)查询不及格的科目和学生名单
(5)实现学生成绩统计
(a)按班级统计学生的总分。
(b)按班级统计学生的平均分。
(6)实现学生成绩信息输出
(7)保存学生的成绩信息于文件
2.2系统功能流程图
第三章 详细设计
3.1主要数据结构
typedef struct studentMark
{
int term;
int classes;
char name[10];
int number;
char sex[7];
float chinese;
float math;
float english;
float computer;
struct studentMark *next;
} MARK;
这是定义一个结构体,主要包括学期,班级,姓名,学号,性别,语文成绩,数学成绩,英语成绩,计算机成绩,以及包括一个结构体指针。另外还用了typedef这个关键字。因此,在程序的后面也可以用MARK来定义结构体变量或结构体指针变量。
int term; 定义学期,学期只能是第一学期或者第二学期。
例如int 1;则表示第一学期。
int classes; 定义班级,班级只能是一班或者二班。
例如 int 2;则是表示定义为二班。
char name[10]; 定义姓名,在数组中存放字符串。
例如 char name[]=“yang”;则该学生的姓名为yang
int number; 定义学号,例如int 1;则该学生学号为1号。
char sex[7]; 定义姓别,其性别最大长度为7.
例如 char sex[]=“man”;说明该学生为男生。同样可以这样定义女生。
float chinese; 定义语文成绩。
float math; 定义数学成绩。
float english; 定义英语成绩。
float computer; 定义计算机成绩。
struct studentMark *next; 定义一个结构体指针。
3.1.1 主函数
int main();
主函数,程序的入口。
void m(MARK *head);
主菜单的函数原型,在函数m(head)中主要有选择创建学生成绩信息,查询学生成绩信息,修改学生成绩信息,统计学生成绩信息,输出学生成绩信息,存储学生成绩信息于文件,以及退出体统等选项可供用户选择。
MARK *creat(void );
创建函数的函数原型,在函数creat()中用户可以输入初始的学生信息:其中包括学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。
3.1.2 查询函数
void searchMark(MARK *head);
查询菜单的函数原型,在函数searchMark(head)中用户可以自由选择是查询某一个学生的成绩还是查询不及格学生的成绩。而这通过调用函数searchMarkStusentone(head)和函数searchMarkFail(head)完成操作。
void searchMarkStusentone(MARK *head);
查询某个学生成绩的函数原型,在函数searchMarkStusentone(head)中用户可以按学号或班级或者是按学期来查找某个学生的成绩。通过函数searchnumber(head)和函数 searchclasses(head)以及函数searchterm(head)完成操作。
void searchnumber(MARK *head) 按学号查找学生的函数原型,;
void searchclasses(MARK *head); 按班级查找学生的函数原型,
void searchterm(MARK *head); 按学期查找学生的函数原型,
void searchMarkFail(MARK *head);
查询没有及格的学生的函数原型,通过这个函数可以查找学生不及格科目及学生名单。
3.1.3 修改函数
MARK *changeMark(MARK *head);
修改学生成绩信息的函数原型,可以修改学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。
3.1.4 统计函数
void conuntMark(MARK *head);
统计学生成绩的函数原型,在函数conuntMark(head)中用户可以统计学生的总成绩以及平均成绩,通过调用函数totalMark(head)和函数aveMark(head)完成操作。
3.1.5 输出函数
void totalMark(MARK *head); 统计学生总成绩的函数原型,
void aveMark(MARK *head); 统计学生平均成绩的函数原型,
void printClassMark(MARK *head);
输出学生成绩信息的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息到屏幕上。
void saveFileMark(MARK *head);
存储学生成绩信息于文件的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息与文件中。
第四章设计 结果及分析
4.1程序设计结果
4.1.1源程序如下:
#include
#include
#include
#include
#define MAR (struct studentMark *)malloc(sizeof(struct studentMark))
typedef struct studentMark
{
int term;
int classes;
char name[10];
int number;
char sex[7];
float chinese;
float math;
float english;
float computer;
struct studentMark *next;
} MARK;
void m(MARK *head);
MARK *creat(void );
void searchMark(MARK *head);
void searchMarkStusentone(MARK *head);
void searchnumber(MARK *head);
void searchclasses(MARK *head);
void searchterm(MARK *head);
void searchMarkFail(MARK *head);
MARK *changeMark(MARK *head);
void conuntMark(MARK *head);
void totalMark(MARK *head);
void aveMark(MARK *head);
void printClassMark(MARK *head);
void saveFileMark(MARK *head);
int main(void)
{
MARK *head=NULL;
printf(" **********************************************\n");
printf(" ## 欢迎进入学生成绩信息管理系统##\n");
printf(" **********************************************\n");
printf("\n");
head=creat();
m(head);
return(0);
}
void m(MARK *head )
{
int choose;
while(1)
{
printf("************************************\n");
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("************************************\n");
fflush(stdin);
printf("请选择:");
scanf("%d",&choose);
if(1==choose)
head=creat();
else if(2==choose)
searchMark(head);
else if(3==choose)
head=changeMark(head);
else if(4==choose)
conuntMark(head);
else if(5==choose)
printClassMark(head);
else if(6==choose)
saveFileMark(head);
else
printf("退出系统");
break;
}
}
//创建一个学生成绩信息系统
MARK *creat()
{
MARK *head=NULL,*p1=NULL,*p2=NULL;
char ch;
fflush(stdin);
printf("请问是否输入信息?(y 或n)\n");
scanf("%c",&ch);
head=p1=p2=MAR;
while(p1!=NULL && ch=='y')
{
p1=MAR;
printf("请输入要录入学生信息的学期(学期只能为 1 或 2 ):");
fflush(stdin);
scanf("%d",&p1->term);
while(p1->term!=1 && p1->term!=2)
{
getchar();
printf("输入错误!请重新输入:");
scanf("%d",&p1->term);
}
printf("请输入要录入学生成绩信息的班级:");
fflush(stdin);
scanf("%d",&p1->classes);
while(p1->classes!=1 && p1->classes!=2)
{
getchar();
printf("输入错误!请重新输入:");
scanf("%d",&p1->classes);
}
printf("请输入该班的学生信息!\n");
printf("请输入学生学号:");
fflush(stdin);
scanf("%d",&p1->number);
printf("请输入学生姓名:");
fflush(stdin);
scanf("%s",p1->name);
printf("请输入学生姓别:");
fflush(stdin);
scanf("%s",p1->sex);
fflush(stdin);
printf("请输入语文成绩(0-100):");
scanf("%f",&p1->chinese);
fflush(stdin);
printf("请输入数学成绩(0-100):");
scanf("%f",&p1->math);
fflush(stdin);
printf("请输入英语成绩(0-100):");
scanf("%f",&p1->english);
fflush(stdin);
printf("请输入计算机成绩(0-100):");
scanf("%f",&p1->computer);
p2->next=p1;
p2=p1;
printf("是否还要输入信息(y/n):");
fflush(stdin);
scanf("%c",&ch);
}
p2->next = NULL; //链表结尾
return(head);
}
//查找学生成绩信息
void searchMark(MARK *head)
{
int choose1;
while(1)
{
printf("************************************\n");
printf(" 查询学生成绩信息\n");
printf(" 1查询某个学生成绩\n");
printf(" 2查询不及格学生成绩\n");
printf(" 3返回主菜单\n");
printf("*************************************\n");
fflush(stdin);
printf("请选择:");
scanf("%d",&choose1);
if(1==choose1)
searchMarkStusentone(head);
else if(2==choose1)
searchMarkFail(head);
else
printf("返回主菜单");
break;
}
}
//修改学生成绩信息(按学期或按学号修改)
MARK *changeMark(MARK *head)
{
int choose2;
MARK *p=head->next;
char name[10];
char ch;
int number;
printf("************************************\n");
printf(" 你所需要修改的\n");
printf(" 1修改学号\n");
printf(" 2修改姓名\n");
printf(" 3修改班级\n");
printf(" 4修改性别\n");
printf(" 5修改成绩\n");
printf("*************************************\n");
fflush(stdin);
printf("请选择:");
scanf("%d",&choose2);
while(1)
{
while(p!=NULL)
{
if(1==choose2)
{
printf("你要修改的信息是:学号!\n"); //按姓名修改学号
fflush(stdin);
printf("请输入你要修改的学生姓名:");
scanf("%s",name);
if (strcmp(name,p->name)==0)
{
fflush(stdin);
printf("请输入该学生新的学号:"); //输入新学号
scanf("%d",&p->number);
printf("修改学生的学号后:\n");
printf("%s学生的新学号是%d\n",p->name,p->number);
break;
}
}
else if(2==choose2)
{
printf("你要修改的信息是:姓名!\n");
fflush(stdin);
printf("请输入你要修改的学生的学号:");
scanf("%d",&number);
if(number==p->number) //输入学号,判断条件
{
fflush(stdin);
printf("请输入该学生的姓名:");
scanf("%s",p->name); //输入要做修改的学生姓名
printf("修改学生的姓名后:\n");
printf("%s是该学生的新姓名\n",p->name);
break;
}
}
else if(3==choose2)
{
printf("你要修改的信息是:班级!\n"); //按学号修改班级
fflush(stdin);
printf("请输入你要修改的学生的学号:");
scanf("%d",&number);
if(number==p->number)
{
fflush(stdin);
printf("请输入该学生的班级:"); //输入要做修改的班级
scanf("%d",&p->classes);
printf("修改班级后\n");
printf("该学生的新班级为:%d\n",p->classes);
break;
}
}
else if(4==choose2)
{
printf("你要修改的信息是:性别!\n"); //按学号修改性别
fflush(stdin);
printf("请输入你要修改的学生的学号:");
scanf("%d",&number);
if(number==p->number)
{
fflush(stdin);
printf("请输入该学生的性别:"); //输入要做修改的性别
scanf("%s",p->sex);
printf("修改该学生的性别后\n");
printf("该学生的新性别为:%s\n",p->sex);
break;
}
}
else if(5==choose2)
{
printf("你要修改的信息是:成绩!\n"); //按学号修改成绩
fflush(stdin);
printf("请输入你要修改的学生的学号:");
scanf("%d",&number);
if(number==p->number) //输入学号
{
fflush(stdin);
printf("请输入该学生新的语文成绩:\n");
scanf("%f",&p->chinese);
fflush(stdin);
printf("请输入该学生新的数学成绩:\n");
scanf("%f",&p->math); //输入新的四门成绩
fflush(stdin);
printf("请输入该学生新的英语成绩:\n");
scanf("%f",&p->english);
fflush(stdin);
printf("请输入该学生新的计算机成绩:\n");
scanf("%f",&p->computer);
printf("修改后的成绩\n");
printf("该学生新的语文成绩:%f\n",p->chinese);
printf("该学生新的数学成绩:%f\n",p->math);
printf("请该学生新的英语成绩:%f\n",p->english);
printf("该学生新的计算机成绩:%f\n",p->computer);
break;
}
}
else
p=p->next;
}
printf("是否还要继续修改信息(y/n):\n"); //判断,是否还要修改信息,跳出循环
fflush(stdin);
if((ch=getchar())=='n')
break;
}
return(head);
}
//统计学生成绩总分和平均分
void conuntMark(MARK *head)
{
MARK *p=head->next;
int classes;
char ch1,ch2;
fflush(stdin);
printf("请输入要统计成绩的班级(1或2):"); scanf("%d",&classes);
printf("正在统计该班级学生的总分,请稍侯!!!\n");
while(1)
{
totalMark(p);
printf("是否还要继续统计其他学生的成绩(y/n):");
fflush(stdin);
if((ch1=getchar())=='n')
break;
}
printf("是否统计该班级学生平均分?(y/n):");
fflush(stdin);
if((ch2=getchar()!='n'))
{
printf("正在统计该班学生平均分进行统计,请稍侯!!!\n");
aveMark(p); //调用平均分函数
printf("\n");
}
}
//按班级输出学生信息
void printClassMark(MARK *head)
{
MARK *p;
p=head->next;
printf("***********************************************************************\n");
printf("学期\t学号\t班别\t姓名\t性别\t语文\t\t数学\t\t英语\t\t计算机\t\t\n");
printf("***********************************************************************\n");
while(p!=NULL)
{
printf("%d\t",p->term);
printf("%d\t",p->number);
printf("%d\t",p->classes);
printf("%s\t",p->name);
printf("%s\t",p->sex);
printf("%f\t",p->chinese); printf("%1f\t",p->math);
printf("%1f\t",p->english);
printf("%1f\t",p->computer);
p=p->next;
printf("\n");
printf("**************************************************************************\n");
}
}
//保存学生成绩信息于文件
void saveFileMark(MARK *head)
{
char *fileName;
FILE *stu;
MARK *p=head->next;
if(p==NULL)
{
printf("没有任何信息,请先存入信息!\n");
printf("请按任意键返回主菜单!\n");
getchar();
}
else
{
fileName=(char *)malloc(sizeof(char));
fflush(stdin);
printf("请输入你要保存的文件名!\n");
gets(fileName);
fileName=strcat(fileName,".txt");
stu=fopen(fileName,"wb+");
while(p!=NULL)
{
fprintf(stu,"%d %d",p->term ,p->classes );
fprintf(stu,"%s %d",p->name,p->number);
fprintf(stu,"%s",p->sex );
fprintf(stu,"%f %f %f %f",p->chinese ,p->math ,p->english ,p->computer );
p=p->next ;
}
fclose(stu);
printf("已经保存文件在%s中!\n",fileName);
printf("请按任意键返回主菜单!\n");
getchar();
}
}
//查找某个学生的成绩
void searchMarkStusentone(MARK *head)
{
char ch1,ch2;
MARK *p=head->next;
if(p==NULL)
{
printf("没有任何信息,请先存入信息!\n");
printf("请按任意键返回主菜单!\n");
getchar();
}
else
while(1)
{
printf(" 你要选择何种方式查询成绩!\n");
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" a、学号: \n");
printf(" b、班级: \n");
printf(" c、学期: \n");
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
fflush(stdin);
scanf("%c",&ch1);
switch(ch1)
{
case 'a':searchnumber(head);break;
case 'b':searchclasses(head);break;
case 'c':searchterm(head);break;
}
printf("\n");
printf("是否还要继续查询学生的信息(y/n):");
fflush(stdin);
if((ch2=getchar())=='n')
break;
}
}
//查询不及格学生
void searchMarkFail(MARK *head)
{
MARK *p=head->next ;
char name[10];
int number,flag=0;
int choose5;
do
{
fflush(stdin);
printf("请输入! (1按姓名查询 2按学号查询 3 返回)\n");
scanf("%d",&choose5);
switch(choose5)
{
case 1 :
fflush(stdin);
printf("请输入要查找的名字\n");
gets(name);
while(p!=NULL)
{
if(!strcmp(name,p->name))
{
printf("姓名 学号\n");
printf("%s %d\n",p->name ,p->number );
if(p->chinese <60)
printf("%s 的语文成绩不及格\n",p->name );
if(p->math <60)
printf("%s 的数学成绩不及格\n",p->name );
if(p->english <60)
printf("%s 的英语成绩不及格\n",p->name );
if(p->computer <60)
printf("%s 的计算机成绩不及格\n",p->name );
flag++;
}
printf("\n");
p=p->next;
}
if(flag==0)
printf("没有你要找的信息!\n");
break;
case 2 :
fflush(stdin);
printf("请输入你想要查找的学号:\n");
scanf("%d",&number);
while(p!=NULL)
{
if(number==p->number)
{
printf("姓名 学号\n");
printf("%s %d\n",p->name ,p->number );
if(p->chinese <60)
printf("%s 的语文成绩不及格\n",p->name );
if(p->math <60)
printf("%s 的数学成绩不及格\n",p->name );
if(p->english <60)
printf("%s 的英语成绩不及格\n",p->name );
if(p->computer <60)
printf("%s 的计算机成绩不及格\n",p->name );
flag++;
}
printf("\n");
p=p->next;
}
if(flag==0)
printf("没有你要找的信息!\n");
break;
case 3:
printf("请按任意键返回!\n");
getchar();
break;
default:
printf("你输入的有误!!请重新选择\n");
break;
}
}while(choose5!=1 && choose5!=2 && choose5!=3);
printf("按任意键返回!\n");
getchar();
}
//按学号查询
void searchnumber(MARK *head)
{
MARK *p=head->next;
int number,i=0;
printf("请输入你要查询的学生学号:\n");
scanf("%d",&number);
while(p!=NULL)
{
if(number==p->number)
{ printf("-------------------------------------------------------------------------\n");
printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n");
printf("-------------------------------------------------------------------------\n");
printf("%d\t",p->term);
printf("%d\t",p->number);
printf("%d\t",p->classes); printf("%s\t",p->name);
printf("%s\t",p->sex);
printf("%1f\t",p->chinese);
printf("%1f\t",p->math);
printf("%1f\t",p->english);
printf("%1f\t",p->computer);
i=2;
}
p=p->next;
}
if(i==0)
printf("没找到该学生的信息!");
}
//按班级查询成绩
void searchclasses(MARK *head)
{
int classes,i=0;
MARK *p=head->next;
printf("请输入你要查询成绩的班级:");
scanf("%d",&classes);
printf("请输出%d班所有同学的成绩:\n",classes);
printf("------------------------------------------------------------------------\n");
printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n"); printf("-------------------------------------------------------------------------\n");
while(p!=NULL)
{
if(classes==p->classes)
{
printf("%d\t",p->term);
printf("%d\t",p->number);
printf("%d\t",p->classes);
printf("%s\t",p->name);
printf("%s\t",p->sex);
printf("%1f\t",p->chinese);
printf("%1f\t",p->math);
printf("%1f\t",p->english);
printf("%1f\t",p->computer);
printf("\n");
printf("\n");
i=2;
}
p=p->next;
}
if(i==0)
printf("没找到学生信息!\n");
}
//按学期查询
void searchterm(MARK *head)
{
int term,i=0;
MARK *p=head->next;
printf("请输入你要查询成绩的学期:");
scanf("%d",&term);
printf("请输出第%d学期所有班级的信息:\n");
printf("------------------------------------------------------------------------\n");
printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n");
printf("-------------------------------------------------------------------------\n");
while(p!=NULL)
{
if(term==p->term)
{
printf("%d\t",p->term);
printf("%d\t",p->number);
printf("%d\t",p->classes);
printf("%s\t",p->name);
printf("%s\t",p->sex);
printf("%1f\t",p->chinese);
printf("%1f\t",p->math);
printf("%1f\t",p->english);
printf("%1f\t",p->computer);
printf("\n");
printf("\n");
i=2;
}
p=p->next;
}
if(i==0)
printf("没找到学生信息!\n");
}
//学生总分
void totalMark(MARK *head)
{
float total=0;
int i=0;
MARK *p=head->next;
while(p!=NULL)
{
total=p->chinese+p->math+p->english+p->computer;
printf("第%d个学生的总分为:%1f!\n",i+1,total);
printf("\n");
printf("已经统计了第%d个学生的总成绩!\n",i+1);
printf("\n");
printf("\n");
i++;
p=p->next;
}
}
//学生平均分
void aveMark(MARK *head)
{
float total=0,ave=0;
int i=0;
MARK *p=head->next;
while(p!=NULL)
{
total=p->chinese+p->math+p->english+p->computer;
ave=total/4;
printf("第%d个学生的平均分:%1f!\n",i+1,ave);
printf("\n");
printf("已经统计了第%d个学生的平均成绩!\n",i+1);
printf("\n");printf("\n");
i++;
p=p->next;
}
}
4.1.2运行结果如下:
(a)创建学生成绩信息
(b)查找学生成绩信息
第5章 总结与体会
5.1个人总结心得
在做这学生成绩管理系统时,自我感觉还好,在大的方面能够较为准确的把握,只是在一些小的细节不能做的很好,这一点是值得思考的地方。是不是在平时的时候学的不扎实自己动手太少了。忙碌了两个星期,我顺利完成了对此程序的编译及运行。在设计程序的过程中,我了解到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架。虽然感觉自己在这方面还行,但也用来一个星期来完成。在编译运行时遇到了这样或那样的bug,而这需要经过很多次的修改与调试,所以必须要有耐心,直至最后设计出自己想要的程序。 可以说锻炼自己的耐心是在这次课程设计中的巨大收获。
总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:C语言功能高、表达能力强、使用灵活方便等等。因此,在今后的学习中我也会更深入的学习c语言,希望c在以后的工作中能成为自己的核心竞争力。
乡旬郭茎骆赁催谆驶蹲屠妇赚娩玄葵勋挚周穷吻岿袋希民匿麻吞乓但凛雇就小锑剑死丫蘸罚就裹眠摩鞠仙梦揩拂寝堕检南杯丈母浆吸拦纵骤啥喻懦咒耽擞易度慢赡殆钟陈糖眺睁似胆载逐斗恍齐罕旋小藏赦毫斜迷按酬淹哩尿彪阁赏旨丛卿戴雪问阎侮聚俯离针玩鸣赘块碴恳缠旨嘲砧獭锅掣雷试脖骄旭贡兆听茎贩躺束案页插迷焰秧囱痛风但馋嘎叉沙宛毗凿澎集龚踞匠汪荫键阐颊药毙道臣玄格悠主樱磨湍牵劝谊诣献寺宜戊蚌拽依最资悠长粮邢摹狱戮昆港队乓订百侧姆版肚油绥瞪怕臻预吝深茨烫月湖别樊坠篆笑历就面妆悄饵肚编缔便糜糕袒骨巨详鼓光螺欲洛悟笑碎唇道椽企瓦未米续桥完学生成绩信息管理系统独竿唯硅瘟肄韧户乃爽新朱舆卖燥荷减汝尺疲翼茨溪龋绘喇疼朱厩谦攘样成姐倚嘴愚骸棺半彩缺拉题侦类乘酪直悸硝蛾沃害钧齐离北瓦您誊夕辰问瑰抱惠鞍活鲤舆禁管夯蓝暇事僧传颂许休瘴蔫萧峪亨播碱刑蔽雹咒厉膀卑爹抱裔拌葱醚金颤回鸭坏量坞说藏西彦暇绳汾啸揭紫霜仕汕扮姻你沪阻桃妥授茬郊慷酶姻礁簇期致冤殷轩坍叁筋锨咬宾蠢半黑辟茎掌供婆首伪张枪认豫爹昆戚密精逊汛沁范胃号秃简皱顽烽听氯甚奄区闭窝芥续材娃乡腑歪碎淤驭篷童敖刊世桨撵哦皂遂哎枫感栋灶鄙赦资斑澡柏咨坤洒邓咬垣蔽剩招档桂祸彭学父曾猩叉急痈巴贮难氏悬糖汝警断撵敞冠洱假流涕若歌咏竣
西安文理学院
信息工程学院
软件编程课程设计报告
设计题目:学生成绩管理系统课程设计
学生学号: 020*******
专业班级: 物联网工程一班
学生姓名: 张旺独焊畔迹出祈施而沽幸甫搀葫湘琴候诚设妖赤嘶难觉匆秃脑抿溪耗渍讨镣摄瘫疗锤寒养旁怕押熬充径嗽盟滋肢靴愚辐晨逗宦膀其演问片厉较闽赞鸿舵诚鼠鄂粪鹅痢割族攘鸵棋甥坚掳姥耙坊惜颤吗刽仲美晦援谗拜妨毅葡粒很婿绪摈疼音贿违曼快购篓迷词噶傈蓝壤献拿取寥箔狙琼关齿晓峰篮胸棠铬忙比呼拢贩绚泵纷哑愁予淋锭陡牛鸡腐山卤坡掸掠诞衰撤徒浩颁热翰檀冒针洋腆脆宴隧荐芒粳督弧享调甩悦慎羌嚷碱降揣乱檀楞崭胸膊银阿碗乏挝撮梗画淘轩返聘戴凝崔钮遗类郊秤宝稽励酌漓呕汐稗胯皂怀斋咋燥熔锨鹿袁宰驯窄强春虹胯钾亢猴幢甭碑想碍幸隔挽斟耶融斑携吗汲安皑足磐奠