成绩设计分析管理系统.docx

上传人:b****3 文档编号:13247008 上传时间:2023-06-12 格式:DOCX 页数:26 大小:24.09KB
下载 相关 举报
成绩设计分析管理系统.docx_第1页
第1页 / 共26页
成绩设计分析管理系统.docx_第2页
第2页 / 共26页
成绩设计分析管理系统.docx_第3页
第3页 / 共26页
成绩设计分析管理系统.docx_第4页
第4页 / 共26页
成绩设计分析管理系统.docx_第5页
第5页 / 共26页
成绩设计分析管理系统.docx_第6页
第6页 / 共26页
成绩设计分析管理系统.docx_第7页
第7页 / 共26页
成绩设计分析管理系统.docx_第8页
第8页 / 共26页
成绩设计分析管理系统.docx_第9页
第9页 / 共26页
成绩设计分析管理系统.docx_第10页
第10页 / 共26页
成绩设计分析管理系统.docx_第11页
第11页 / 共26页
成绩设计分析管理系统.docx_第12页
第12页 / 共26页
成绩设计分析管理系统.docx_第13页
第13页 / 共26页
成绩设计分析管理系统.docx_第14页
第14页 / 共26页
成绩设计分析管理系统.docx_第15页
第15页 / 共26页
成绩设计分析管理系统.docx_第16页
第16页 / 共26页
成绩设计分析管理系统.docx_第17页
第17页 / 共26页
成绩设计分析管理系统.docx_第18页
第18页 / 共26页
成绩设计分析管理系统.docx_第19页
第19页 / 共26页
成绩设计分析管理系统.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

成绩设计分析管理系统.docx

《成绩设计分析管理系统.docx》由会员分享,可在线阅读,更多相关《成绩设计分析管理系统.docx(26页珍藏版)》请在冰点文库上搜索。

成绩设计分析管理系统.docx

成绩设计分析管理系统

 

黑龙江东方学院

《C语言程序设计》课程设计报告

 

题目:

成绩设计分析管理系统

 

目  录

第1章绪论1

1.1设计目的1

1.2内容与要求1

第2章系统总体设计2

2.1系统设计的组成框图2

2.2功能描述2

第3章系统详细设计3

3.1程序设计流程图3

3.2功能模块设计3

3.3函数功能描述4

3.4数据结构设计4

第4章系统调试与测试6

4.2系统调试6

第5章结论11

5.1系统中用到的知识点11

5.2编程总结11

附录12

第1章绪论

1.1设计目的

 

1.2内容与要求

 

第2章系统总体设计

2.1系统设计的组成框图

2.2功能描述

第3章系统详细设计

3.1程序设计流程图

3.2功能模块设计

3.3函数功能描述

 

3.4数据结构设计

 

第4章系统使用与测试

4.1使用说明

4.2系统测试

 

主菜单显示

 

运行结果

第5章结论

5.1系统中用到的知识点

5.2系统难点以及解决办法

 

5.3本系统的主要技术

5.4编程总结

 

5.5自评成绩

 

附录

/*程序源代码*/

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

intshoudsave=0;/**/

structstudent

{

charnum[10];/*学号*/

charname[20];

charsex[4];

intcgrade;

intmgrade;

integrade;

inttotle;

intave;

charneartime[10];/*最近更新时间*/

};

typedefstructnode

{

structstudentdata;

structnode*next;

}Node,*Link;

voidmenu()

{

printf("********************************************************************************");

printf("\t1登记学生资料\t\t\t\t\t2删除学生资料\n");

printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");

printf("\t5显示学生资料\t\t\t\t\t6统计学生资料\n");

printf("\t7排序语文成绩\t\t\t\t\t8排序数学成绩\n");

printf("\t9排序英语成绩\t\t\t\t\t10选出分段分数\n");

printf("\t11保存学生资料\t\t\t\t\t12帮助信息\t\t\n");

printf("\t0退出系统\t\t\t\t\t\t\t\n");

printf("********************************************************************************\n");

}

voidprintstart()

{

printf("-----------------------------------------------------------------------\n");

}

voidWrong()

{

printf("\n=====>提示:

输入错误!

\n");

}

voidNofind()

{

printf("\n=====>提示:

没有找到该学生!

\n");

}

voidprintc()/*本函数用于输出中文*/

{

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

}

voidprinte(Node*p)/*本函数用于输出英文*/

{

printf("%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\n",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);

}

Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/

{

Node*r;

if(strcmp(nameornum,"num")==0)/*按学号查询*/

{

r=l->next;

while(r!

=NULL)

{

if(strcmp(r->data.num,findmess)==0)

returnr;

r=r->next;

}

}

elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/

{

r=l->next;

while(r!

=NULL)

{

if(strcmp(r->data.name,findmess)==0)

returnr;

r=r->next;

}

}

return0;

}

voidAdd(Linkl)/*增加学生*/

{

Node*p,*r,*s;

charnum[10];

r=l;

s=l->next;

while(r->next!

=NULL)

r=r->next;/*将指针置于最末尾*/

while

(1)

{

printf("请你输入学号(以'0'返回上一级菜单:

)");

scanf("%s",num);

if(strcmp(num,"0")==0)

break;

while(s)

{

if(strcmp(s->data.num,num)==0)

{

printf("=====>提示:

学号为'%s'的学生已经存在,若要修改请你选择'4修改'!

\n",num);

printstart();

printc();

printe(s);

printstart();

printf("\n");

return;

}

s=s->next;

}

p=(Node*)malloc(sizeof(Node));

strcpy(p->data.num,num);

printf("请你输入姓名:

");

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

getchar();

printf("请你输入性别:

");

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

getchar();

printf("请你输入语文成绩:

");

scanf("%d",&p->data.cgrade);

getchar();

printf("请你输入数学成绩:

");

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入英语成绩:

");

scanf("%d",&p->data.egrade);

getchar();

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.ave=p->data.totle/3;

/*信息输入已经完成*/

p->next=NULL;

r->next=p;

r=p;

shoudsave=1;

}

}

voidQur(Linkl)/*查询学生*/

{

intsel;

charfindmess[20];

Node*p;

if(!

l->next)

{

printf("\n=====>提示:

没有资料可以查询!

\n");

return;

 

}

printf("\n=====>1按学号查找\n=====>2按姓名查找\n");

scanf("%d",&sel);

if(sel==1)/*学号*/

{

printf("请你输入要查找的学号:

");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

printf("\t\t\t\t查找结果\n");

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();

}

elseif(sel==2)/*姓名*/

{

printf("请你输入要查找的姓名:

");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{

printf("\t\t\t\t查找结果\n");

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();

}

else

Wrong();

}

voidDel(Linkl)/*删除*/

{

intsel;

Node*p,*r;

charfindmess[20];

if(!

l->next)

{

printf("\n=====>提示:

没有资料可以删除!

\n");

return;

}

printf("\n=====>1按学号删除\n=====>2按姓名删除\n");

scanf("%d",&sel);

if(sel==1)

{

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

");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

r=l;

while(r->next!

=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n=====>提示:

该学生已经成功删除!

\n");

shoudsave=1;

}

else

Nofind();

}

elseif(sel==2)

{

printf("请你输入要删除的姓名:

");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{

r=l;

while(r->next!

=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n=====>提示:

该学生已经成功删除!

\n");

shoudsave=1;

}

else

Nofind();

}

else

Wrong();

}

voidModify(Linkl)

{

Node*p;

charfindmess[20];

if(!

l->next)

{

printf("\n=====>提示:

没有资料可以修改!

\n");

return;

}

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

");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

printf("请你输入新学号(原来是%s):

",p->data.num);

scanf("%s",p->data.num);

printf("请你输入新姓名(原来是%s):

",p->data.name);

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

getchar();

printf("请你输入新性别(原来是%s):

",p->data.sex);

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

printf("请你输入新的语文成绩(原来是%d分):

",p->data.cgrade);

scanf("%d",&p->data.cgrade);

getchar();

printf("请你输入新的数学成绩(原来是%d分):

",p->data.mgrade);

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入新的英语成绩(原来是%d分):

",p->data.egrade);

scanf("%d",&p->data.egrade);

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.ave=p->data.totle/3;

printf("\n=====>提示:

资料修改成功!

\n");

shoudsave=1;

}

else

Nofind();

}

voidDisp(Linkl)

{

intcount=0;

Node*p;

p=l->next;

if(!

p)

{

printf("\n=====>提示:

没有资料可以显示!

\n");

return;

}

printf("\t\t\t\t显示结果\n");

printstart();

printc();

printf("\n");

while(p)

{

printe(p);

p=p->next;

}

printstart();

printf("\n");

}

voidTongji(Linkl)

{

Node*pm,*pe,*pc,*pt,*pa;/*用于指向分数最高的接点*/

Node*r=l->next;

if(!

r)

{

printf("\n=====>提示:

没有资料可以统计!

\n");

return;

}

pm=pe=pc=pt=pa=r;

while(r!

=NULL)

{

if(r->data.cgrade>=pc->data.cgrade)

pc=r;

if(r->data.mgrade>=pm->data.mgrade)

pm=r;

if(r->data.egrade>=pe->data.egrade)

pe=r;

if(r->data.totle>=pt->data.totle)

pt=r;

if(r->data.ave>=pa->data.ave)

pa=r;

 

r=r->next;

}

printf("------------------------------统计结果--------------------------------\n");

printf("总分最高者:

\t%s%d分\n",pt->data.name,pt->data.totle);

printf("平均分最高者:

\t%s%d分\n",pa->data.name,pa->data.ave);

printf("英语最高者:

\t%s%d分\n",pe->data.name,pe->data.egrade);

printf("数学最高者:

\t%s%d分\n",pm->data.name,pm->data.mgrade);

printf("语文最高者:

\t%s%d分\n",pc->data.name,pc->data.cgrade);

printstart();

}

voidChinese(Linkl)

{

Linkll;

Node*p,*rr,*s;

ll=(Link)malloc(sizeof(Node));/*用于做新的连表*/

ll->next=NULL;

if(l->next==NULL)

{

printf("\n=====>提示:

没有资料可以排序!

\n");

return;

}

p=l->next;

while(p)

{

s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!

=NULL&&rr->next->data.egrade>=p->data.egrade)

rr=rr->next;

if(rr->next==NULL)

rr->next=s;

else

{

s->next=rr->next;

rr->next=s;

}

p=p->next;

}

free(l);

l->next=ll->next;

printf("\n=====>提示:

排序已经完成!

\n");

}

voidMaths(Linkl)/*对数学排序*/

{

Linkll;

Node*p,*rr,*s;

ll=(Link)malloc(sizeof(Node));/*用于做新的连表*/

ll->next=NULL;

if(l->next==NULL)

{

printf("\n=====>提示:

没有资料可以排序!

\n");

return;

}

p=l->next;

while(p)

{

s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!

=NULL&&rr->next->data.mgrade>=p->data.mgrade)

rr=rr->next;

if(rr->next==NULL)

rr->next=s;

else

{

s->next=rr->next;

rr->next=s;

}

p=p->next;

}

free(l);

l->next=ll->next;

printf("\n=====>提示:

排序已经完成!

\n");

}

voidEnglish(Linkl)/*对英语排序*/

{

Linkll;

Node*p,*rr,*s;

ll=(Link)malloc(sizeof(Node));/*用于做新的连表*/

ll->next=NULL;

if(l->next==NULL)

{

printf("\n=====>提示:

没有资料可以排序!

\n");

return;

}

p=l->next;

while(p)

{

s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!

=NULL&&rr->next->data.cgrade>=p->data.cgrade)

rr=rr->next;

if(rr->next==NULL)

rr->next=s;

else

{

s->next=rr->next;

rr->next=s;

}

p=p->next;

}

free(l);

l->next=ll->next;

printf("\n=====>提示:

排序已经完成!

\n");

}

 

voidselect(Linkl)

{

inti;

intj,k;

Node*pc=l;//用于指向分数最高的接点

Node*r=l->next;

if(!

r)

{

printf("\n=====>提示:

没有资料可以筛选!

\n");

return;

}

printf("输入课程名1.语文2.数学3.英语");

scanf("%d",&i);

if(i==1)

{

printf("请输入筛选分数的上限:

");

scanf("%d",&j);

printf("请输入筛选分数的下限:

");

scanf("%d",&k);

printf("------------------------------筛选结果-----------------------------------------------------------\n");

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

printstart();

while(r!

=NULL)

{

if(k<=(r->data.egrade)&&(r->data.egrade)

printe(r);

r=r->next;

}

}

elseif(i==2)

{

printf("请输入筛选分数的上限:

");

scanf("%d",&j);

printf("请输入筛选分数的下限:

");

scanf("%d",&k);

printf("------------------------------筛选结果-----------------------------------------------------------\n");

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

printstart();

while(r!

=NULL)

{

if(k<=(r->data.mgrade)&&(r->data.mgrade)

printe(r);

r=r->next;

}

}

elseif(i==3)

{

printf("请输入筛选分数的上限:

");

scanf("%d",&j);

printf("请输入筛选分数的下限:

");

scanf("%d",&k);

printf("------------------------------筛选结果-----------------------------------------------------------\n");

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

printstart();

while(r!

=NULL)

{

if(k<=(r->data.cgrade)&&(r->data.cgrade)

printe(r);

r=r->next;

}

}

else

Wrong();

}

 

voidSave

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

当前位置:首页 > 医药卫生 > 基础医学

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

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