C语言课程设计学生成绩管理系统.docx

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

C语言课程设计学生成绩管理系统.docx

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

C语言课程设计学生成绩管理系统.docx

C语言课程设计报告

信息技术工程学院

C语言课程设计报告

题目:

学生成绩管理系统(studentachievementmanagementsystem)

目录

一设计目的 3

二课程设计的内容 3

三课程设计的要求与数据 4

四课程设计应完成的工作 4

五总体设计(包含几大功能模块) 5

六详细设计 6

6.1各个模块的功能和实现 6

6.2流程图 7

(管理员模式流程图) 7

(来宾模式流程图) 8

8

七调试分析(各模块测试结果) 9

7.1源代码 9

7.2各模块测试结果 24

八总结 29

九参考资料 30

一设计目的

通过本课程设计巩固《C语言程序设计》课程的教学成果,深入理解结构体、指针、链表、动态分配内存和文件操作的等C程序设计中的中高级技术,通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力、提高学生利用C语言进行程序设计的能力,初步培养良好的编程习惯和编程风格,初步学习程序的文档的撰写方法。

二课程设计的内容

通过C语言程序系统,设计一个可以对学生的成绩信息进行管理的程序,其中学生的信息可以包括:

学号、各科目的成绩的平均分排序等,其功能可以包括学生成绩的输入、输出、查询、排序、删除、统计、退出等。

三课程设计的要求与数据

1、用C语言实现系统;

2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出、显示,以及整个程序的切换登录模式和修改管理员的信息.

3、学生信息包括:

(1)、每一条记录包括一个学生的学号、姓名、3门课成绩

(2)、成绩信息录入功能:

(成绩信息用文件保存,可以一次完成若干条记录的输入。

(3)、成绩信息显示浏览功能:

完成全部学生记录的显示。

(4)、查询功能:

完成按姓名查找学生记录,并显示。

(5)、成绩信息的删除:

按学号进行删除某学生的成绩.

(6)、排序功能:

按学生平均成绩进行排序。

(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

四课程设计应完成的工作

(1)编写算法;

(2)算法测试,并有具体的测试结果和结果分析;

(3)撰写课程设计报告。

内容包括:

1)封面扉页

2)设计任务书

3)目录

4)总体设计方案(包括流程图)

5)使用说明及运行实例(包括界面)

6)成员设计内容简介

7)项目源程序代码(注意注释的使用)

8)指导教师评语

五总体设计(包含几大功能模块)

1、成绩录入功能

2、成绩输出功能

3、成绩查询功能

4、删除模块

5、排序功能

6、统计功能

7、退出系统

六详细设计

6.1各个模块的功能和实现

(1)整个成绩管理系统设计分为9个模块:

1.输入学生成绩

2.删除学生成绩

3.查询学生成绩

4.修改学生成绩

5.排序学生成绩

6.保存记录

7.显示所有

8.退出系统

9.修改管理员信息

(2)(主要函数的功能)

1.主函数main():

定义学生结构体数组,调用录入,统计等函数对成绩表进行处理。

2.输入数据函数input():

输入学号、成绩。

3.排序函数sort():

对总成绩或者平均成绩,进行排序,按从高到低或者从低到高。

4.显示数据函数display():

显示各个学生的总成绩

5.新增数据函数insert():

增加学生学生记录。

6.删除数据函数del():

由于各种原因,删除某些同学的成绩、学号等。

7.平均值函数average():

求各个同学总成绩的平均值。

8.查询数据函数qur():

查询学生的信息。

9.保存数据函数save():

再一次打开界面是,仍有上次所找的讯息。

10.退出系统函数exit():

当要退出整个系统时。

6.2流程图

(管理员模式流程图)

输出菜单

输入

根据菜单输入n的值选择程序

结束

开始

保存

查找

退出

删除

统计

插入

排序

输出

开始

(来宾模式流程图)

输出菜单

根据菜单,

选择程序

退出程序

切换登录

排序

成绩

显示

成绩

查询

成绩

结束

七调试分析(各模块测试结果)

7.1源代码

#include

#include

#include

#include

#include

#defineHEADER2"学号姓名数学英语C语言总分平均分\n"

#defineFORMAT"%s%s%d%d%d%d%.2f\n"

#defineDATAp->data.num,p->data.name,p->data.mgrade,p->data.egrade,p->data.cgrade,p->data.total,p->data.ave

intsaveflag=0;

typedefunsignedshortWORD;

structstudent{

charnum[10];

charname[15];

intmgrade;

integrade;

intcgrade;

inttotal;

floatave;

};

typedefstructnode{

structstudentdata;

structnode*next;

}Node,*Link;

voidmenu(){

time_tnow;

now=time(NULL);

printf("学生成绩管理系统\n");

printf("\n");

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

printf("**\n");

printf("*1输入成绩2删除成绩*\n");

printf("**\n");

printf("*3查询成绩4修改成绩*\n");

printf("**\n");

printf("*5排序成绩6保存记录*\n");

printf("**\n");

printf("*7显示所有0退出系统*\n");

printf("**\n");

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

printf("*8切换登录模式9修改管理员信息*\n");

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

printf("\n请你选择操作命令前的的数字(0~9):

");

}

intmenu2(){

//intselect;

time_tnow;

now=time(NULL);

system("cls");//清屏

printf("\n学生模式\n\n\n");

printf("学生成绩管理系统\n");

printf("\n");

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

printf("**\n");

printf("*1查询成绩2排序成绩*\n");

printf("**\n");

printf("*3显示所有0退出系统*\n");

printf("**\n");

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

printf("*4切换登录模式*\n");

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

printf("\n请你选择操作命令前的数字(0~4):

");

return0;

}

voidprintheader()

{

printf(HEADER2);

}

voidprintdata(Node*pp){

Node*p;

p=pp;

printf(FORMAT,DATA);

}

voidWrong(){

printf("\n\n\n\n************错误:

输入不合法!

!

!

*********\a\n");

getch();

}

voidNofind(){

printf("\n没有该学生!

!

\n");

}

Node*locate(Linkl,charfindmess[],charnameornum[])

{

Node*r;

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

{

r=l->next;

while(r)

{

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

returnr;

r=r->next;

}

}

elseif(strcmp(nameornum,"name")==0)

{

r=l->next;

while(r)

{

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

returnr;

r=r->next;

}

}

return0;

}

voidstringinput(char*t,intlens,char*notice)

{

charn[225];

do

{

printf(notice);

scanf("%s",n);

if(strlen(n)>lens)

printf("\n超出宽度!

!

!

\n");

}while(strlen(n)>lens);

strcpy(t,n);

}

intnumberinput(char*notice)

{intt=0;

do

{

printf(notice);

scanf("%d",&t);

if(t>100||t<0)printf("\n分数必须在0~100之间!

!

!

\n");

}while(t>100||t<0);

returnt;

}

voidDisp(Linkl){

Node*p;

system("cls");

p=l->next;

if(!

p)

{

printf("\n目前无学生成绩记录!

!

\n");

getch();

return;

}

printf("\n\n");

printheader();

while(p)

{

printdata(p);

p=p->next;//移至下一个结点

}

}

voidAdd(Linkl){

//printf("增加学生记录模块\n");

//system("PAUSE");}

Node*p,*r,*s;

charch,flag=0,num[10];

r=l;

system("cls");

Disp(l);//先打印已有的学生信息

while(r->next!

=NULL)

r=r->next;//将只指针移至链表末尾,准备添加记录

while

(1)//一次可输入条记录,直至输入的学号我0的记录节点添加操作

{

s=l->next;

while

(1)

{

stringinput(num,10,"学号(按0退出):

");

flag=0;

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

return;

s=l->next;

while(s)//查询学号是否存在,若存在则要求重新输入

{

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

{

flag=1;

break;

}

s=s->next;

}

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

{

getchar();

printf("=====>学号%s已存在,是否重新输入?

(y/n)\a:

",num);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

continue;

else

return;

}

else

break;

}

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

strcpy(p->data.num,num);//将字符串mun拷贝到p->data.num中

stringinput(p->data.name,15,"name:

");

p->data.cgrade=numberinput("c语言[0-100]:

");

p->data.mgrade=numberinput("数学[0-100]:

");

p->data.egrade=numberinput("英语[0-100]:

");

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

p->data.ave=(float)(p->data.total/3);

p->next=NULL;

while(r->next!

=NULL)

r=r->next;

r->next=p;

saveflag=1;

}

}

voidDel(Linkl){

//printf("删除学生记录模块\n");

//system("PAUSE");

intsel;

Node*p,*r;

charfindmess[20];

if(!

l->next)

{

system("cls");

printf("\n======>暂无学生记录!

!

\n");

getch();

return;

}

system("cls");

Disp(l);

printf("\n1通过学号删除2通过姓名删除\n");

printf("请选择[1,2]");

scanf("%d",&sel);

if(sel==1)

{

stringinput(findmess,10,"请输入学号:

");

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");

saveflag=1;

}

else

Nofind();

}

elseif(sel==2)

{

stringinput(findmess,15,"请输入学生姓名:

");

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");

saveflag=1;

}

else

Nofind();

}

else

Wrong();

getch();

}

voidQur(Linkl){

intselect;

charsearchinput[20];

Node*p;

system("cls");

if(!

l->next)

{

printf("\n暂无学生记录!

!

\n");

return;

}

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

printf("请选择[1~2]:

");

scanf("%d",&select);

if(select==1)

{

stringinput(searchinput,10,"请输入要查找的学号:

");

p=locate(l,searchinput,"num");

if(p)

{printheader();

printdata(p);

}

else

Nofind();

}

elseif(select==2)

{

stringinput(searchinput,15,"请输入学生姓名:

");

p=locate(l,searchinput,"name");

if(p)

{

printheader();

printdata(p);

}

else

Nofind();

}

else

Wrong();

system("PAUSE");

}

voidModify(Linkl){

Node*p;

charfindmess[20];

if(!

l->next)

{

system("cls");

printf("\n没有该学生记录!

\n");

getch();

return;

}

system("cls");

printf("修改学生记录");

Disp(l);

stringinput(findmess,10,"请输入学号:

");

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

if(p)

{

printf("学号:

%s,\n",p->data.num);

printf("姓名:

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

stringinput(p->data.name,15,"输入新的姓名:

");

printf("c语言:

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

p->data.cgrade=numberinput("c语言[0~100]:

");

printf("数学:

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

p->data.mgrade=numberinput("数学[0~100]:

");

printf("英语:

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

p->data.egrade=numberinput("英语[0~100]:

");

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

p->data.ave=(float)(p->data.total)/3;

printf("\n===>修改成功!

");

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

当前位置:首页 > 自然科学 > 物理

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

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