成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx

上传人:b****6 文档编号:20701166 上传时间:2023-01-25 格式:DOCX 页数:26 大小:140.89KB
下载 相关 举报
成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx_第1页
第1页 / 共26页
成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx_第2页
第2页 / 共26页
成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx_第3页
第3页 / 共26页
成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx_第4页
第4页 / 共26页
成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx

《成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

成绩管理系统软件设计课程报告附完整C语言程序代码Word文档格式.docx

内容:

成绩信息

学号姓名数学英语语文理综

1111周恩来140142130236

3333加加林145130110220

2222刘学11599120190

5555乔丹100111110160

4444Five1089079163

请用C/C++编写一个系统,实现学生信息管理,软件的入口界面应包括如下几个方面:

要求:

(1)信息维护:

学生信息数据要以文件的形式保存,能实现学生信息数据的维护。

此模块包括子模块有:

增加学生信息、删除学生信息、修改学生信息

(2)信息查询:

查询时可实现按姓名查询、按学号查询

(3)成绩统计能统计本科生人数(一本,二本,三本)

4程序主要功能

1)、学生信息2)、本科统计3)、成绩排序4)、添加学生

5)、删除学生6)、按名修改7)、按号修改8)、查询成绩

9)、保存信息0)退出

5函数实现功能说明

主菜单界面如下

6心得与体会

通过本次对C语言的深入学习,我对C语言有了更多的了解,撑握了更多编程的知识。

我这次成功地运用各类函数、循环变量、结构体、指针、链表等完成程序的编写,使自己在编程方面有了很大提高,对未来新的编程软件的学习也更有信心啦。

但在学习中,我发现编程其实并不是件容易的事,更不是你想程序完成什么功能就能完成什么功能的。

首先,我觉的编程绝不是拿到一个问题就开始编程,而是在我们对程序的整体结构有一定的构思后,方可敲击程序。

其次,编程需要的是程序员的认真和仔细的态度,务实地对待每一条程序语句,做到字斟句酌,锱铢必较,方能快速高效的编出好的程序来。

由于本人目前只学过C语言和数据结构,并没有学过数据库等课程,能力有限,部分要求(如界面的美观化等)未能做的很好,望老师指正,学生定当会努力改正。

7程序功能模块

注意

亲:

应用此程序时,请在D盘中建立一个名为student.txt的文本文件(用于存放学生信息,其信息分别为学号、姓名、及四门课程的成绩)。

如下图所示:

图一student.txt文档存放位置如下图

图二student.txt文挡信息如下图

函数功能模块

voidDesplayMarkSegment3(void);

//三本人数

voidDesplayMarkSegment2(void);

//二本人数

voidDesplayMarkSegment1(void);

//一本人数

voidReadInfoFormFile(void);

//读取信息

voidDesplayMenu(void);

//菜单显示

voidCreateHeadLink(void);

//创建链表

STUDENT*MallocNode(void);

//申请新节点

voidGetInformation(STUDENT*t);

//获得学生信息

voidOutputInformation(void);

//输出信息

voidDesplayInfoBystudentName(void);

//按姓名查找

voidDesplayInfoBystudentnumber(void);

//按学号查找

voidDesplayOneNode(STUDENT*t);

//显示一个学生的信息

voidInsertOneNode(STUDENT*t);

//添加学生

voidDeleteNodeBystudentNumber(void);

//删除学生

voidChangeMarkByName(void);

//按名改成绩

voidChangeMarkByNumber(void);

//按号改成绩

voidSaveLinkToFile(void);

//保存

voidCompositorByTotalMark(void);

//按总分排序

voidCompositorBynumber(void);

//按学号排序

voidCompositorByname(void);

//按姓名排序

8程序完整代码

/*学生<

成绩管理系统*/

#include<

stdio.h>

conio.h>

malloc.h>

string.h>

stdlib.h>

typedefstructSTUDENT//定义结构体

{

charstudentNumber[20];

charstudentName[20];

floatmark1;

floatmark2;

floatmark3;

floatmark4;

structSTUDENT*next;

}STUDENT;

STUDENT*headLink;

//链表表头指针

voidReadInfoFormFile(void)//读取信息

FILE*fp;

STUDENT*p;

fp=fopen("

D:

\\student.txt"

"

r"

);

if(!

fp)

{

printf("

系统提示:

该系统现在没有学生!

!

(原因:

请检查D:

\\student.txt学生文件是否存在)。

\n"

return;

}

p=MallocNode();

while(fscanf(fp,"

%s%s%f%f%f%f"

p->

studentNumber,p->

studentName,&

(p->

mark1),&

mark2),&

mark3),&

mark4))>

0)

InsertOneNode(p);

//将读取的信息用链表存储

p=MallocNode();

fclose(fp);

}

voidDesplayMenu(void)//显示菜单

charch;

intchoose;

/*用于接受用户的选择*/

printf("

主菜单:

\t\t\t\t0.EXIT\n"

\t1.学生信息\t\t2.本科统计\t\t3.成绩排序\n\t4.添加学生\t\t5.删除学生"

\t\t6.按名修改\n\t7.按号修改\t\t8.查询成绩\t\t9.保存信息\n"

请选择:

"

scanf("

%d"

&

choose);

/*取得用户的选择*/

switch(choose)

case1:

OutputInformation();

break;

case2:

//本科线学生

printf("

1.一本人数2.二本人数3.三本人数0.退出\n"

请您选择:

ch=getchar();

do

{

switch(ch)

{

case'

1'

:

DesplayMarkSegment1();

//一本

printf("

break;

2'

DesplayMarkSegment2();

//二本

3'

DesplayMarkSegment3();

//三本

default:

}

ch=getchar();

}while(ch!

='

0'

case3:

//成绩排序

1.按总分2.按学号3.按姓名0.退出\n"

CompositorByTotalMark();

CompositorBynumber();

CompositorByname();

}

case4:

//填加学生

p=MallocNode();

GetInformation(p);

InsertOneNode(p);

case5:

DeleteNodeBystudentNumber();

case6:

ChangeMarkByName();

case7:

//按号改成绩

ChangeMarkByNumber();

case8:

//查询成绩

1.按学号2.按姓名0.退出\n"

DesplayInfoBystudentName();

DesplayInfoBystudentnumber();

case9:

SaveLinkToFile();

case0:

//保存数据到文件中

free(headLink);

//释放头结点

exit(0);

default:

--------------------------------------------------------------------------------"

DesplayMenu();

//递归调用

voidCreateHeadLink(void)//创建链表

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

headLink=p;

p->

next=NULL;

STUDENT*MallocNode(void)//函数功能:

申请一个新结点,并将其初始化

inti;

if(p==NULL)

returnNULL;

for(i=0;

i<

20;

i++)

p->

studentNumber[i]='

\0'

;

studentName[i]='

}

mark1=0.0;

mark2=0.0;

mark3=0.0;

mark4=0.0;

returnp;

voidGetInformation(STUDENT*t)//从键盘得到学生成绩

请输入学生学号:

%s"

t->

studentNumber);

请输入学生姓名:

studentName);

请输入数学成绩:

%f"

(t->

mark1));

请输入英语成绩:

mark2));

请输入语文成绩:

mark3));

请输入理综成绩:

mark4));

voidInsertOneNode(STUDENT*t)//函数功能:

在链表的结尾处增加一个结点

p=headLink;

while(p->

next)

p=p->

next;

next=t;

voidDesplayInfoBystudentName(void)//按姓名查找

charflag=0;

p=headLink->

studentName);

while(p)

if(strcmp(p->

studentName,studentName)==0)

{

学号\t姓名\t数学\t英语\t语文\t理综\t总成绩\n"

DesplayOneNode(p);

flag=1;

}

flag)

Sorry,姓名为%s的学生不存在!

voidDesplayInfoBystudentnumber(void)//按学号查找

studentNumber);

studentNumber,studentNumber)==0)

学号\t姓名\t数学\t英语\t语文\t理综\t总成绩\n\n"

Sorry,学号为%s的学生不存在!

voidDesplayOneNode(STUDENT*t)//显示函数

%s\t"

%.0f\t"

mark1);

mark2);

mark3);

mark4);

mark1+t->

mark2+t->

mark3+t->

voidDeleteNodeBystudentNumber(void)//按学号删除学生

charstudentNumber[10];

STUDENT*p,*q;

请输入要删除学生学号:

q=headLink->

while(q)

if(strcmp(q->

next=q->

free(q);

flag=1;

break;

p=p->

q=q->

该学号:

%s的学生不存在!

删除成功!

voidOutputInformation(void)//所有学生信息输出

系统无学生,请先输入学生信息!

\n\n"

DesplayOneNode(p);

voidChangeMarkByName(void)//按姓名修改成绩

floatmark1,mark2,mark3,mark4;

请输入新的数学成绩:

scanf("

请输入新的英语成绩:

请输入新的语文成绩:

请输入新的理综成绩:

p->

mark1=mark1;

mark2=mark2;

mark3=mark3;

mark4=mark4;

修改成功!

}

voidChangeMarkByNumber(void)//按学号修改成绩

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

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1