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

上传人:b****3 文档编号:602719 上传时间:2022-10-11 格式:DOCX 页数:45 大小:92.37KB
下载 相关 举报
C语言课程设计成绩管理系统.docx_第1页
第1页 / 共45页
C语言课程设计成绩管理系统.docx_第2页
第2页 / 共45页
C语言课程设计成绩管理系统.docx_第3页
第3页 / 共45页
C语言课程设计成绩管理系统.docx_第4页
第4页 / 共45页
C语言课程设计成绩管理系统.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

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

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

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

C语言课程设计成绩管理系统

课程设计的内容

1)信息维护:

要求:

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

此模块包括子模块有:

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

2)信息查询:

要求:

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

3)成绩统计:

要求:

A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分

数段的学生情况。

4)排序:

能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)二)其它要求:

(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读

(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)

(3)学生可自动增加新功能模块(视情况可另外加分)

(4)写出课程设计报告,具体要求见相关说明文档

二、课程设计的要求与数据

1、进一步掌握和利用C语言进行程设计的能力;

2、进一步理解和运用结构化程序设计的思想和方法;

3、初步掌握开发一个小型实用系统的基本方法;

4、学会调试一个较长程序的基本方法;

5、学会利用流程图或N-S图表示算法;

6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作

1、编写完成相应题目的程序;

2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:

1)需求分析:

包括设计题目、设计要求以及系统功能需求分析;

2)总体设计:

包括系统总体设计框架和系统功能模块图;

3)详细设计:

包括主要功能模块的算法设计思路以及对应的工作流程图;

4)调试分析过程描述:

包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);

5)总结:

课程设计完成了哪些功能,有没有什么扩展功能?

还有哪些地方需要改进?

课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;

6)附录:

主要源程序代码,含必要的注释。

3、答辩:

在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。

1设计目的与要求P4

2总体设计P4

3详细设计P5

3.1功能模块设计P5

3.1.1XX功能模块(可选)P5

3.1.2丫丫功能模块(可选)P6

3.1.3ZZ功能模块(可选)P7

3.2数据结构设计P8

4调试分析P9

P9

4.1结构体

4.2链表P11

5遇到的问题及解决方法分析P12

6总结P13

7源文件P13

7.1链表P13

7.2结构体P28

 

1、目的与要求

一目的:

编制一程序实现对学生成绩的管理,让自己既动手又动脑,独立实践,将课本上的理论知识和实际应用问题进行有机结合,锻炼自己分析、解决实际问题的能力,提高自身项目开发及程序调试能力。

二要求:

1、整个系统均用C语言实现;

2、利用指针、结构体、链表来实现学生成绩的数据结构设计;

3、系统具有输入、显示、查询(查询时可实现按姓名查询、按学号查询)、删除、排序、插入,保存、读取基本功能;

4、系统的各个功能模块都用函数的形式来实现;

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

此模块包括子模块有:

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

60--70),统计出在此分数段

6、可以输入任意的一个课程名(如数学)和一个分数段(如

的学生情况;

7、能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果;

8、可自动增加新功能模块;

9、可以将学生信息从文件中读取出来。

2总体设计

1、主函数main()

利用if-else,While循环语句和switch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

2、菜单选择函数voidmenu();

这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的13大功能,根据每个功能前面的序号进行选择。

等执行完每一个函数功能后,按任‘0'键回到主界面也要通过这个函数提示来实现!

3、自定义函数voidprintstart()、voidWrong()、voidNofind()、voidprintc()、void

用voidWrong()来提示输入错误,用

voidNofind()提示没有找到学生资料,用

voidprintc()

printe(Node*p)

 

来输出中文,用voidprinte(Node*p)来输出中文。

3详细设计

3.1功能模块设计

3.1.1排序数学成绩功能模块

函数voidMaths(LinkI)

该函数用于对数学成绩进行降序,II=(Link)malloc(sizeof(Node))用于做新的链表连接,如果

原链表为空的话,返回;不为空的话,p=l->next;建立接点用于保存信息,对指定链表地

址进行排序。

流程图如图所示:

Linkll

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

XN^>next==NULL

是*否

没有资料可以排序return

p=l->next

while(p)

s=(Node*)malloc(sizeof(Node))rr=ll

while(rr->next!

=NULL&&

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

是rr->next==NULL否

rr->next=s

s->next=rr->next;rr->next=s

p=p->next

l->next=ll->next

(排序完成)

3.1.2显示学生资料功能模块

函数voidDisp(LinkI)

该函数负责显示学生资料,这是一个不返回值函数。

算法:

先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。

然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。

重复执行此步聚直到p指针指向NULL为止。

流程图如图所示:

提示没有

P

指向下一结点p=p->next

资料可以

输出

p指向的结点,即学生信息

显示return

p指向下一结点p=p->next

3.1.3删除资料功能模块

函数voidDel(LinkI)

该函数用于有选择地删除学生资料,如果原来的链表为空的话,会返回;不为空的话,选择

用按哪种类型删除,如果按学号删除,就输入学号,后判断是否取得地址,取得就执行删除;

按名字删除就输入名字,运行同学号一样。

流程图如图所示:

3.2数据结构设计(可选)

一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。

一个结构体变量的指针就是该变量所占据的内存段起始地址。

可以设一个指针变量,用来指向一结构体变量,此时指针变量的值是结构体的起始地址。

指针量变也可以用来指向一结构体数组中的元素。

structstudent

{

charnum[10];/*学号*/

charname[20];

charsex[4];

intcgrade;

intmgrade;

integrade;

inttotle;

intave;

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

};

typedefstructnode

{

structstudentdata;

structnode*next;

}Node,*Link;

6总结

经过一个多星期的C语言课程设计,感觉自己收获不少!

首先是:

要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本,使C语言的知识强化了不少。

其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:

返回值函数和不返回值函数两者在主函数中的调用是不同的

更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。

这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!

从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。

相信这次的课程设计使我的C语言知识扎实了很多。

由于这是第一次进行设计,写文档,难免会写得不好!

7源程序

7.1链表

#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("\t11保存学生资料\t\t\t\t\t12帮助信息\t\t\n");

printf("\t0退出系统\t\t\t\t\t\t\t\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!

=NU

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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