淮海工学院课程设计学生成绩管理系统Word下载.docx

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

淮海工学院课程设计学生成绩管理系统Word下载.docx

《淮海工学院课程设计学生成绩管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《淮海工学院课程设计学生成绩管理系统Word下载.docx(46页珍藏版)》请在冰点文库上搜索。

淮海工学院课程设计学生成绩管理系统Word下载.docx

2)菜单函数,提供一个可以选择任何一个功能的选择窗口,供用户选择需要执行的操作

3)打开文件函数,把文件的信息打开到一个结构体数组中

4)输入函数,提供录入职工信息功能

5)输出函数,提供学生信息输出功能,浏览学生信息

6)排序函数,提供对学生信息检索,按条件查找排序功能

7)删除学生信息函数,提供对学生信息的删除功能

8)退出函数,执行退出功能

4关键功能算法和绘制函数流程图

4.1整体流程图

开始

主函数

菜单

Swith

删除信息

排序查询

信息查询

输出显示

输入功能

退出

Y

继续

结束

图1功能模块

4.2显示模块流程图

查找磁盘上的文件

成功否

用for语句实现把文件的所有内容输入到数组中

图2显示模块

4.3保存模块流程图

开始

建立(查找)磁盘文件

用for语句实现把

数组的所有内容储存在文件中

结束

图3保存模块

4.4输入模块流程图

输入各个学生的信息

结束

N

图4输入模块

4.5排序模块流程图:

从文件中读入数据

swith

平均成绩

总成绩

英语成绩

数学成绩

语文成绩

图5排序模块

4.6显示模块流程图

执行函数

输出每个学生的信息

学号不存在

·

图6显示模块

4.7删除函数流程图:

执行open()函数

输入需要删除的学生号

是否找到

把该员工后面的每一个学生信息陆续前提

执行close()函数把新的学生信息输出到文件中保存起来

图7删除模块

4.8查找函数的流程图:

执行open()函数从文件中读入数据

输入要查询的学生学号

是否存在匹配

输出学生的各科成绩

图8查找模块

5运行结果说明

5.1主菜单:

图9主菜单

5.2输入界面:

图10输入界面

5.3排序界面

图11排序界面

5.4查询界面:

图12查询界面

5.5删除界面:

图13删除界面

5.6保存界面:

图14保存界面

5.7修改界面

图15修改界面

5.8统计界面

图16统计界面

6简要总结及自我评价

忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。

尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。

另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。

为了解决此。

类问题,最好就是多向同学,老师请教,不要怕难为情。

尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是小事。

在设计这个程序时,我们刚开始是根据老师给我们提供的资料,用画图以及循环将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也查了相应的资料,但是它上面用得是坐标来做的,所以为了方便设计程序,我们也改为坐标来做的,这样计算问题解决了。

接下去就是按键问题,我们的资料是用鼠标做的,所以关于按键这个函数就只能我们自己设计,还好手头有类似的资料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我们搞定了。

最后就是闪烁,这个设计的方法很死板,都一个类型,就是算坐标比较烦琐,要确定好它的位置,但是这些只要你自己愿意去尝试,问题都可以迎刃而解的。

从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神得难能可贵,尽管一年下来大家不怎么有多大接触,但是彼此之间的友谊已经在我们心里扎根生底,在遇到问题时,我们会共同进退,每个人都很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。

总之,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会

7参考文献

[1]谭浩强著.C程序设计(第三版).北京:

清华大学出版社,2005

[2]HerbertSchildt著.王曦若译.ANSIC标准详解.北京:

学院出版社,1994

[3]谭浩强著.C程序设计(第二版).北京:

清华大学出版社,1999

程序:

#include"

stdio.h"

/*标准输入输出函数库*/

stdlib.h"

/*标准函数库*/

string.h"

/*字符串函数库*/

conio.h"

/*屏幕操作函数库*/

#defineHEADER1"

----------------------------student'

sinformation----------------------------\n"

#defineHEADER2"

|Number|Name|C|Math|English|Total|Average|\n"

#defineHEADER3"

|---------------|---------------|----|----|----|--------|-------|"

#defineFORMAT"

|%-10s|%-15s|%4d|%4d|%4d|%4d|%.2f|\n"

#defineDATAp->

data.num,p->

data.name,p->

data.egrade,p->

data.mgrade,p->

data.cgrade,p->

data.total,p->

data.ave

#defineEND"

--------------------------------------------------------------\n"

intshoudsave=0;

/**/

structstudent

{

charnum[10];

/*Number*/

charname[20];

charsex[4];

intcgrade;

intmgrade;

integrade;

inttotal;

floatave;

charneartime[10];

/*最近更新时间*/

};

typedefstructnode

structstudentdata;

structnode*next;

}Node,*Link;

/*函数*/

voidmenu()

system("

cls"

);

/*调用DOS命令,清屏.与clrscr()功能相同*/

cprintf("

\n"

printf("

@@@@@Students'

performancemanagementsystem@@@@@@\n\n"

@@@@@@@@@@@@@@@@@@@@@@@Menu@@@@@@@@@@@@@@@@@@@@@@@@\n"

*1input2delete*\n"

*3search4modify*\n"

*5count*\n"

*6sort7save*\n"

*8dispaly0exit*\n"

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"

/*cprintf()送格式化输出至文本窗口屏幕中*/

}

voidprintheader()/*格式化输出表头*/

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

voidprintdata(Node*pp)/*格式化输出表中数据*/

Node*p;

p=pp;

printf(FORMAT,DATA);

voidWrong()

\n=====>

error!

voidNofind()

Norecordnow!

PleasepressEnter\n"

voidDisp(Linkl)/*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/

Node*p;

p=l->

next;

/*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后

继结点才有学生信息*/

if(!

p)/*p==NULL,NUll在stdlib中定义为0*/

getchar();

return;

\n\n"

printheader();

/*输出表格头部*/

while(p)/*逐条输出链表中存储的学生信息*/

printdata(p);

p=p->

/*移动直下一个结点*/

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

作用:

用于定位链表中符合要求的节点,并返回指向该节点的指针

参数:

findmess[]保存要查找的具体内容;

nameornum[]保存按什么查找;

在单链表l中查找;

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

Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位连表中符合要

求的接点,并返回该指针*/

Node*r;

if(strcmp(nameornum,"

num"

)==0)/*按Number查询*/

r=l->

while(r!

=NULL)

if(strcmp(r->

data.num,findmess)==0)

returnr;

r=r->

elseif(strcmp(nameornum,"

name"

)==0)/*按Name查询*/

data.name,findmess)==0)

return0;

/*增加学生记录*/

voidAdd(Linkl)

Node*p,*r,*s;

/*实现添加操作的临时的结构体指针变量*/

charch,flag=0,num[10];

r=l;

s=l->

Disp(l);

/*先打印出已有的学生信息*/

while(r->

next!

/*将指针移至于链表最末尾,准备添加记录*/

while

(1)/*一次可输入多条记录,直至输入Number为0的记录结点添加操作*/

while

(1)/*输入Number,保证该Number没有被使用,若输入Number为0,则退出添加记录操作*/

pleaseinputtheNumber(press'

o'

toupperlevel):

"

scanf("

%s"

num);

flag=0;

if(strcmp(num,"

0"

)==0)/*输入为0,则退出添加操作,返回主界面*/

{return;

while(s)/*查询该Number是否已经存在,若存在则要求重新输入一个未被占用的Number*/

{

if(strcmp(s->

data.num,num)==0)

flag=1;

break;

}

s=s->

if(flag==1)/*提示用户是否重新输入*/

{getchar();

printf("

=====>

Number%sexistedalready!

PleasepressEnter.inputagain?

(y/n):

scanf("

%c"

&

ch);

if(ch=='

y'

||ch=='

Y'

continue;

else

return;

{break;

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

/*申请内存空间*/

p)

\nAllocatememoryfailure"

/*如没有申请到,打印提示信息*/

return;

/*返回主界面*/

strcpy(p->

data.num,num);

/*将字符串num拷贝到p->

data.num中*/

pleaseinputtheName:

p->

data.name);

pleaseinputthescoreofC:

%d"

p->

data.cgrade);

pleaseinputthescoreofMath:

data.mgrade);

pleaseinputthescoreofEnglish:

data.egrade);

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

next=NULL;

r->

next=p;

r=p;

shoudsave=1;

voidQur(Linkl)/*按Number或Name,查询学生记录*/

intsel;

/*1:

按Number查,2:

按Name查,其他:

返回主界面(菜单)*/

charfindmess[20];

/*保存用户输入的查询内容*/

l->

next)/*若链表为空*/

1SearchbyNumber\n=====>

2SearchbyName\n"

select[1,2]:

sel);

if(sel==1)/*Number*/

pleaseinputtheNumberyouwanttosearch:

findmess);

p=Locate(l,findmess,"

/*在l中查找Number为searchinput值的节点,并返回节点的指针

*/

if(p)/*若p!

=NULL*/

printheader();

printdata(p);

printf(END);

pressanykeytoback"

getchar();

else

Nofind();

elseif(sel==2)/*Name*/

pleaseinputtheNameyouwanttosearch:

if(p)

Nofind();

Wrong();

/*删除学生记录:

先找到保存该学生记录的节点,然后删除该节点*/

voidDel(Linkl)/*删除*/

Node*p,*r;

next)

norecord!

1DeletebyNumber\n=====>

2DeletebyName\n"

if(sel==1)

pleaseinputtheNumberyouwanttodelete:

=p)

next=p->

free(p);

Deletesuccessful!

elseif(sel==2)

pleaseinputtheNameyouwanttodelete:

/*修改学生记录。

先按输入的Number查询到该记录,然后提示用户修改Number之外的值,Number

不能修改*/

voidModify(Linkl)

{system("

modifytheinformation"

pleaseinputtheNumberyouwanttomodify:

pleaseinputthenewNumber(whichwas%s):

data.num);

pleaseinputthenewName(whichwas%s):

pleaseinputthenewCscore(whichwas%d):

pleaseinputthenewMathscore(whichwas%d):

pleaseinputthenewEnglishscore(whichwas%d):

modifysuccessful!

voidTongji(Linkl)

Node*pm,*pe,*pc,*pt,*pa;

/*用于指向分数最高的接点*/

Node*r=l->

intnum1=0,num2=0,num3=0,num4=0,num5=0;

intselect;

r)

return;

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

selectthesubjectyouwanttocount:

1.C2.Math3.English\n"

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

当前位置:首页 > 小学教育 > 语文

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

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