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

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

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

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

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

完整word版C语言课程设计学生成绩管理系统

信息技术工程学院

C语言课程设计报告

题目:

学生成绩管理系统(studentachievementmanagementsystem)

 

一设计目的

通过本课程设计巩固《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===>修改成功!

");

saveflag=1;

}

else

Nofind();

getch();

}

voidSort(Linkl){

Linkll;

Node*p,*rr,*s;

inti=0;

system("cls");

if(l->next==NULL)

{

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

\n");

return;

}

ll=(Node*)malloc(sizeof(Node));//用于创建新的节点

ll->next=NULL;

printf("当前状态:

\n");

Disp(l);

system("PAUSE");

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.total>=p->data.total)

{

rr=rr->next;

}

if(rr->next==NULL)

rr->next=s;

else

{

s->next=rr->next;

rr->next=s;

}

p=p->next;

}

l->next=ll->next;

p=l->next;

while(p!

=NULL)

{

i++;

p=p->next;

}

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

Disp(l);

saveflag=1;

printf("\n******排序完成*******\n");

system("PAUSE");

}

voidSave(Linkl){

//printf("保存模块\n");

//system("PAUSE");

FILE*fp;

Node*p;

intcount=0;

fp=fopen("student.txt","wb");

p=l->next;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)

{

p=p->next;

count++;

}

else

break;

}

if(count>0)

{

printf("\n\n\n\n\n保存完毕,当前共有%d名学生记录\n",count);

saveflag=0;

}

else

printf("空文件,保存失败!

!

\n");

fclose(fp);//关闭文件

getch();

}

intlogin()

{

FILE*fp1,*fp2;

intstate;

charstr1[20],str2[20],str_z[20],str_m[7];

if((fp1=fopen("admin.txt","rb"))==NULL)

{

printf("本系统无管理员,请创建!

\n\n请输入管理员账号:

");

scanf("%s",str_z);

printf("请设置一个六位数密码:

");

fp2=fopen("admin.txt","wb");

fprintf(fp2,"%s%c",str_z,'\n');

fprintf(fp2,"%s%c",str_m,'');

fclose(fp2);

}

fp1=fopen("admin.txt","rb");

fscanf(fp1,"%s",str1);

fscanf(fp1,"%s",str2);

f

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

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

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

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