您好,欢迎来到九壹网。
搜索
您的当前位置:首页学生成绩管理系统课程设计报告

学生成绩管理系统课程设计报告

来源:九壹网
学生成绩管理系统---课程设计报告

学生成绩管理系统课程设计报告

编写人:王博(课程设计负责人) 院系:化工学院环境工程系 班级:13环境工程

同组成员:王博 1320201006

王冲 1320201007

刘博韬 1320201008

胡青青 1320201009 赵露 1320201010 李格 1320201014 赵国英 1320201016

完成日期:2014年12月5日 辅导教师:刘艳民 批阅日期:2014年12月15日 分数:

第 1 页 共 24 页

学生成绩管理系统---课程设计报告

目录

一.设计名称 .............................................. 3 二.设计目的 .............................................. 3 三.功能描述 .............................................. 3 四.程序流程图 ............................................ 4 五.总体设计 .............................................. 5 六.函数功能描述 .......................................... 6 七.程序实现 ............................................. 15 八.运行结果 ............................................. 18 九.设计小结 ............................................ 22 十.设计感想 ............................................ 23 十一.任务安排 .......................................... 24 十二.参考文献 .......................................... 24

第 2 页 共 24 页

学生成绩管理系统---课程设计报告

一. 设计名称

学生成绩管理系统

二. 设计目的

此学生成绩管理系统的设计对学生而言,能充分发挥学生的主观能动性,检测学生对计算机语言,特别是C语言的掌握情况,锻炼学生的动手能力和创新能力,给学生提供了一个展示自我,检验自我的机会。设计此系统能充分实现学生成绩管理的系统化、规范化、自动化,提高学生成绩管理的效率。设计此程序目的是实现学生基本信息、成绩的录入、删除、查询等方面的功能,为管理学生成绩提供便利。

三. 功能描述

此成绩管理系统主要利用单链表、结构体等,其主要任务是用C语言对学生成绩进行日常管理,实现对学生成绩的删除、查找、排序等功能,由如下九个功能模块实现:

1.初始化模块:主要完成将学生信息记录输入单链表的工作。 2.插入模块:主要完成将学生信息插入已有学生信息中的工作。 3.打印模块:主要完成将所有的学生信息输出并显示的工作。 4.删除模块:主要完成将一些学生信息从已有的信息中删除的工作。 5.查找模块:(1)完成按照学生姓名进行查找的工作。

(2)完成按照学生学号信息进行查找的工作。

6.排序模块:(1)完成按照学生c语言成绩排序的工作。

(2)完成按照学生英语成绩排序的工作。 (3)完成按照学生数学成绩排序的工作。 (4)完成按照学生总成绩排序的工作。

7.修改模块:主要完成对学生信息进行修改的工作。 8.统计模块:主要完成统计所有学生信息的工作。 9.保存模块:主要完成保存学生信息的工作。

第 3 页 共 24 页

学生成绩管理系统---课程设计报告

四.程序流程图 直接初始化 初始化模 从文件导入 块 直接插入表尾 插入模块 按学号插入 按学号删除 删除模块 按姓名删除 按C语言排序 排序模块 学生按英语排序 管理 系统按数学排序 按总成绩排序 查找模块 按学号查找 按姓名查找 按学号修改 修改模块 按姓名修改 统计模块 保存模块 打印模块 第 4 页 共 24 页

学生成绩管理系统---课程设计报告

五.总体设计

1.功能模块设计 (1)主函数执行流程

int main() /*主函数*/ {

Stu ls=NULL; int t;

begin:menu();

printf(\"请输入您的选择:\"); scanf(\"%d\system(\"cls\"); switch(t) {

case 1:ls=Chushihua();break; case 2:Charu(ls);break; case 3:Shanchu(ls);break; case 4:Paixu(ls);break; case 5:Chazhao(ls);break; case 6:Tongji(ls);break; case 7: Xiugai(ls);break; case 8: Dayin(ls);break; case 9:Save(ls);break; case 0: exit(0);break;

}

goto begin;

}

(2)输入记录模块

Stu Create() /*初始化函数*/ {

int i; int n;

Stu ls=(Stu)malloc(sizeof(student)); /*开辟一个student长度的单元*/ Stu q=ls;ls->next=NULL; printf(\"请输入学生个数:\"); scanf(\"%d\ for(i=0;iStu p=(Stu)malloc(sizeof(student)); /*malloc是一个申请空间的一个函数*/ printf(\"输入第%d个学生的信息:\\n\

第 5 页 共 24 页

学生成绩管理系统---课程设计报告

}

printf(\" 请输入学号:\"); scanf(\"%s\ printf(\" 请输入姓名:\"); scanf(\"%s\ printf(\" 请输入数学成绩:\"); scanf(\"%d\ printf(\" 请输入英语成绩:\"); scanf(\"%d\ printf(\" 请输入c语言成绩:\"); scanf(\"%d\ p->data.sum=p->data.math+p->data.english+p->data.clang; q->next=p; p->next=NULL; q=q->next; }

return ls;

2.数据结构设计

(1)学生成绩信息结构体

typedef struct Data {

char num[10]; char name[10]; int math; int english; int clang; int sum; }Data;

typedef struct student {

Data data;

struct student *next; }student,*Stu;

(2)单链表node结构体 typedef struct student {

Data data;

struct student *next; }student,*Stu;

六.函数功能描述

1.ls=Chushihua()

第 6 页 共 24 页

学生成绩管理系统---课程设计报告

函数原型: Stu Chushihua() {

Stu p; int choice;

printf(\"请选择初始化方式:\\n\\n\"); printf(\"1:直接初始化\\n\\n\"); printf(\"2:从文件导入\\n\\n\"); printf(\"0:返回主菜单\"); scanf(\"%d\switch(choice) {

case 1:p=Create(); break;

case 2:p=Readfile(); break;

case 0:break; }

return p;

}

参数含义:choice 选择变量

p 头指针

2.Charu(ls) 函数原型:

void Charu(Stu ls) {

Data data; int i=0; int choice;

Stu p=ls->next;

printf(\"1.直接插入表尾\\n\"); printf(\"2.按学号插入\\n\"); printf(\"0.返回上一级\\n\");

printf(\"请输入插入方式:\\n\"); scanf(\"%d\ printf(\"\\n\\n\");

switch(choice) {

case 1:printf(\"请输入插入信息:\\n\");

printf(\"请输入学生学号:\\n\"); scanf(\"%s\ printf(\"请输入姓名:\\n\"); scanf(\"%s\ printf(\"请输入c成绩:\\n\");

第 7 页 共 24 页

学生成绩管理系统---课程设计报告

scanf(\"%d\ printf(\"请输入英语成绩:\\n\"); scanf(\"%d\ printf(\"请输入数学成绩:\\n\"); scanf(\"%d\

data.sum=data.clang+data.english+data.math; while(p->next!=NULL) { p=p->next; i++; }

if(Insert(ls,i,data))

Print(ls);

Else

printf(\"输入的值有误!\"); break;

case 2:printf(\"请输入插入信息:\\n\"); printf(\"请输入学生学号:\\n\"); scanf(\"%s\ printf(\"请输入姓名:\\n\"); scanf(\"%s\ printf(\"请输入c成绩:\\n\"); scanf(\"%d\ printf(\"请输入英语成绩:\\n\"); scanf(\"%d\ printf(\"请输入数学成绩:\\n\"); scanf(\"%d\

data.sum=data.clang+data.english+data.math;

while((p!=NULL)&&(strcmp(p->data.num,data.num)<0)) {

p=p->next;

i++; }

if(Insert(ls,i,data)) {

Print(ls);

} Else

printf(\"输入的值有误!\"); break;

case 0:break; }

if(choice) {

第 8 页 共 24 页

学生成绩管理系统---课程设计报告

printf(\"按任意键回到主菜单\"); getchar(); getchar(); } }

参数含义:i 插入位置 choice选择变量

3.Shanchu(ls) 函数原型:

void Shanchu(Stu ls) {

int i;

int choice;

char name[10],num[10];

printf(\"请选择查找的方式\\n:\"); printf(\"1:按学号查找\\n\\n\"); printf(\"2:按姓名查找\\n\\n\"); printf(\"0:返回上一级\"); scanf(\"%d\switch(choice) {

case 1:printf(\"请输入学号:\\n\");

scanf(\"%s\i=LookNum(ls,num); if(!Delete(ls,i+1))

printf(\"输入的数据有误!\"); else {

printf(\"删除后:\\n\\n\"); Print(ls); getchar(); getchar(); }

break;

case 2:printf(\"请输入姓名:\\n\");

scanf(\"%s\i=LookName(ls,name); if(!Delete(ls,i+1))

printf(\"输入的数据有误!\"); else {

printf(\"删除后:\\n\\n\"); Print(ls); getchar();

第 9 页 共 24 页

学生成绩管理系统---课程设计报告

getchar(); } break; case 0:break; }

}

参数含义:i 删除位置

choice 选择变量

name[10] 学生的名字 number[10] 学生的学号

4.Paixu(ls) 函数原型:

void Paixu(Stu ls) {

int choice;

printf(\"1:按c成绩排序\\n\"); printf(\"2:按英语成绩排序\\n\"); printf(\"3:按数学成绩排序\\n\"); printf(\"4:按总成绩排序\\n\"); printf(\"0:返回上一级\"); printf(\"请输入排序方式:\"); scanf(\"%d\switch(choice) {

case 1:SortClang(ls);break; case 2:SortEnglish(ls);break; case 3:SortMath(ls);break; case 4:SortSum(ls);break; case 0:break; }

if(choice) {

system(\"cls\");

printf(\"排序之后:\\n\\n\"); Print(ls);

printf(\"按任意键回到主菜单\"); getchar(); getchar(); } }

参数含义:ls 头指针

choice 选择变量

5 .Chazhao(ls) 函数原型:

第 10 页 共 24 页

学生成绩管理系统---课程设计报告

void Chazhao(Stu ls) {

int choice;

char name[10],num[10]; Stu p=ls; int i=0;

printf(\"请选择查找的方式\\n:\"); printf(\"1:按学号查找\\n\\n\"); printf(\"2:按姓名查找\\n\\n\"); printf(\"0:返回上一级\"); scanf(\"%d\switch(choice) {

case 1:printf(\"请输入学号:\\n\");

scanf(\"%s\i=LookNum(ls,num); if(i==-1) {

printf(\"输入的数据有误!\"); break; }

else {

while(i>0) {

p=p->next; i--; }

PrintOne(p); }

break;

case 2:printf(\"请输入姓名:\\n\");

scanf(\"%s\

i=LookName(ls,name); if(i==-1) {

printf(\"输入的数据有误!\"); break; }

else {

while(i>0) {

p=p->next;

第 11 页 共 24 页

学生成绩管理系统---课程设计报告

i--; }

PrintOne(p); }

break; case 0:break;

}

if(choice) {

printf(\"按任意键回到主菜单\"); getchar(); getchar(); }

}

参数含义:Ls头指针

P 辅助移动指针 choice 选择变量

name[10] 学生的名字 number[10] 学生的学号 i 参数变量

6.Tongji(ls) 函数原型:

void Tongji(Stu ls) {

Stat(ls);

printf(\"按任意键回到主菜单\"); getchar(); getchar(); }

参数含义:ls 头指针。 7. Xiugai(ls) 函数原型:

void Xiugai(Stu ls) {

int choice;

char name[10],num[10]; int i; Stu p=ls; Data data;

printf(\"请查找修改的学生\\n:\"); printf(\"1:按学号查找\\n\\n\"); printf(\"2:按姓名查找\\n\\n\"); printf(\"0:返回上一级\"); scanf(\"%d\

第 12 页 共 24 页

学生成绩管理系统---课程设计报告

switch(choice) {

case 1:printf(\"请输入学号:\\n\");

scanf(\"%s\i=LookNum(ls,num); while(i>=0) {

p=p->next; i--; }

if(p!=NULL) {

printf(\"请输入修改的信息:\\n\"); printf(\"请输入学生学号:\\n\"); scanf(\"%s\ printf(\"请输入姓名:\\n\"); scanf(\"%s\ printf(\"请输入c成绩:\\n\"); scanf(\"%d\ printf(\"请输入英语成绩:\\n\"); scanf(\"%d\ printf(\"请输入数学成绩:\\n\"); scanf(\"%d\

data.sum=data.clang+data.english+data.math; p->data=data; }

else

printf(\"输入的数据有误!\"); break;

case 2:printf(\"请输入姓名:\\n\"); scanf(\"%s\

i=LookName(ls,name); while(i>=0) {

p=p->next; i--; }

if(p!=NULL) {

printf(\"请输入修改的信息:\\n\"); printf(\"请输入学生学号:\\n\"); scanf(\"%s\ printf(\"请输入姓名:\\n\"); scanf(\"%s\

第 13 页 共 24 页

学生成绩管理系统---课程设计报告

printf(\"请输入c成绩:\\n\"); scanf(\"%d\ printf(\"请输入英语成绩:\\n\"); scanf(\"%d\ printf(\"请输入数学成绩:\\n\"); scanf(\"%d\

data.sum=data.clang+data.english+data.math; p->data=data; }

else

printf(\"输入的数据有误!\"); break; case 0:break;

}

if(choice) {

printf(\"修改后:\\n\\n\"); Print(ls);

printf(\"按任意键回到主菜单\"); getchar(); getchar(); } }

参数含义:choice 选择变量

name[10] 学生的名字 number[10] 学生的学号 i 查找位置变量

8.Dayin(ls) 函数原型:

void Dayin(Stu ls) {

Print(ls);

printf(\"按任意键回到主菜单\"); getchar(); getchar(); }

参数含义: Ls 头指针 9.Save(ls) 函数原型:

Stu Save(Stu ls) {

FILE *fp; Stu p;

if((fp=fopen(\"E:/student\

第 14 页 共 24 页/*保存函数*/

学生成绩管理系统---课程设计报告

{

printf(\"文件打开失败!\"); return 0;

} p=ls;

while(p!=NULL) {

fwrite(p,sizeof(typedef struct student),1,fp); p=p->next; }

fclose(fp);

printf(\"保存成功!\"); return 0;

}

参数含义:Ls 头指针 10.exit(0)

七.程序实现

1.源代码分析 ⑴程序预处理

包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。 #include 输入输出

#include 定义malloc(),system()等函数 #include 字符串处理

#include 控制台输入输出如getchar() typedef struct Data {

char num[10]; char name[10]; int math; int english; int clang; int sum; }Data;

typedef struct student {

Data data;

struct student *next; }student,*Stu;

void Print(Stu ls) /*输出函数*/ {

Stu p=ls->next; printf(\"学号\"); printf(\"\姓名\");

第 15 页 共 24 页

学生成绩管理系统---课程设计报告

printf(\"\数学\"); printf(\"\英语\"); printf(\"\c语言\"); printf(\"\总分\"); printf(\"\\n\");

while((strlen(p->data.num)<10)&&(p!=NULL)) { printf(\"%s\ printf(\"\%s\ printf(\"\%4d\ printf(\"\%4d\ printf(\"\%4d\ printf(\"\%4d\ printf(\"\\n\"); p=p->next; } }

void PrintOne(Stu ls) {

Stu p=ls->next; printf(\"学号\"); printf(\"\姓名\"); printf(\"\数学\"); printf(\"\英语\"); printf(\"\c语言\"); printf(\"\总分\"); printf(\"\\n\");

printf(\"%s\ printf(\"\%s\ printf(\"\%4d\ printf(\"\%4d\ printf(\"\%4d\ printf(\"\%4d\ printf(\"\\n\"); }

Stu Create() {

int i,n;

Stu ls=(Stu)malloc(sizeof(student)); Stu q=ls;

printf(\"请输入初始空间:\"); scanf(\"%d\ ls->next=NULL; for(i=0;i第 16 页 共 24 页/*初始化函数*/

学生成绩管理系统---课程设计报告

{

Stu p=(Stu)malloc(sizeof(student)); printf(\"输入第%d个学生的信息:\\n\ printf(\" 请输入学号:\"); scanf(\"%s\ printf(\" 请输入姓名:\"); scanf(\"%s\ printf(\" 请输入数学成绩:\"); scanf(\"%d\ printf(\" 请输入英语成绩:\"); scanf(\"%d\ printf(\" 请输入c语言成绩:\"); scanf(\"%d\ p->data.sum=p->data.math+p->data.english+p->data.clang; q->next=p; p->next=NULL; q=q->next; }

printf(\"初始化成功!\\n\"); return ls; }

⑵主函数main()

int main() {

Stu ls=NULL; int t;

begin:menu();

printf(\"请输入您的选择:\"); scanf(\"%d\system(\"cls\"); switch(t) {

case 1:ls=Chushihua();break; case 2:Charu(ls);break; case 3:Shanchu(ls);break; case 4:Paixu(ls);break; case 5:Chazhao(ls);break; case 6:Tongji(ls);break; case 7: Xiugai(ls);break; case 8: Dayin(ls);break; case 9:Save(ls);break; case 0: exit(0);break; }

goto begin;

第 17 页 共 24 页

学生成绩管理系统---课程设计报告

}

⑶主菜单界面

Void menu() {

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

printf(\" 请选择:\\n\\n\");

printf(\" \1: 初始化信息:\\n\\n\"); printf(\" \2: 插入\\n\\n\"); printf(\" \3: 删除\\n\\n\"); printf(\" \4: 排序\\n\\n\"); printf(\" \5: 查找\\n\\n\"); printf(\" \6: 统计\\n\\n\"); printf(\" \7: 修改\\n\\n\"); printf(\" \8: 打印\\n\\n\"); printf(\" \9: 保存\\n\\n\"); printf(\" \0: 退出\\n\\n\");

}/******************************************************************/

八.运行结果

1.主界面

成绩管理系统主菜单

2.输入学生记录

第 18 页 共 24 页

学生成绩管理系统---课程设计报告

3.显示记录

4.删除记录

第 19 页 共 24 页

学生成绩管理系统---课程设计报告

5.插入记录

6.查找记录

第 20 页 共 24 页

学生成绩管理系统---课程设计报告

7.修改记录

8.统计

第 21 页 共 24 页

学生成绩管理系统---课程设计报告

9.排序

九.设计小结

1.优点:功能全面。初始化方式有两种,可以从文件读入,也可以直接从键盘输入新的数据。查找,排序,删除等有多种选择。并且可以统计不及格人数以及最高分。此外操作直观简单,每次操作直接回到主界面。 2.缺点:没有输入错误反馈。

第 22 页 共 24 页

学生成绩管理系统---课程设计报告

十.发展前景

随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。面对庞大的信息量,学校需要有学生管理系统来提高学生管理工作的效率。而通过我们设计的这样的系统可以做到信息的规范管理、科学统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。当然由于所学知识的有限,程序不算完美,我相信经过不断的改进,我组所设计的系统终将很大程上解决学校的负担。相信在不久的将来,我组所设计的学生管理系统必能应用于实践,为学校减轻负担。同时,在不断的修改与努力下,将满足市场需求,不仅是学生管理方面,也能为别的管理提供参考!

十一.设计感想

经过本学期的课程学习以及上网查找资料和结合自身情况,我们组最终选择的课题学生成绩管理系统部分功能基本完成。其功能基本符合用户的要求,能够对学生和课程的基本信息进行查询、修改、添加、删除等。

而通过此课程设计,使我们学到了以前没有学过的很多知识,巩固了c语言课程许多基本知识,并综合运用了信息管理系统知识。通过需求分析我们明白了无论做什么事都要有严谨的态度,而小组成员在一起将所学知识共同交流,学到了更多的东西,使我们明白了团结的力量是巨大的。

此外在计算机飞速发展的今天,懂得一门计算机语言技术是非常必要的。同时,我们也清醒的认识到,只要自己肯努力,愿意去付出劳动,就能够得到属于我们自己所期望的东西。

此外作为组长的我,更是对本次工作有更加的认识和体会,从一开始工作任务的安排,与结合每个组员的自身的情况,给他们分配任务,并让他们能及时的解决任务,到任务的执行,从中我们经历了许许多多从课堂中从没有学到的东西,如耐心,如合作,而在这其中我们遇到的最大的问题是C语言学习的真心不是很好,大家都遇到了许多障碍,心中有许多问题,而到现在,都没有很好地解决,身为组长,感到非常抱歉,感谢大家对我这个不是很厉害的人的工作的支持与理解,感谢大家能及时完成我分配下的任务,谢谢大家的配合。而综合大家的情况,总结起来,主要有以下几点体会:

1.必须牢固掌握基础知识。只有拥有扎实的基础,我们才能灵活运用我们所需要的知识和技术。C语言中函数的调用和套用、指针的使用、链表的应用,这些都是我们必须熟练掌握的基础知识。

2.必须培养严谨的科学态度。在做需求分析的时候我们深深的体会到严谨的科学态度的重要性,只有认真分析、综合考虑才能使系统尽可能完善,满足用户的需求。我想这不仅是对于程序设计,做任何事都应如此。

3.必须团结合作。在课程设计中我们遇到了很多问题,有技术问题和非技术问题,但我们没有放弃,我们一起查资料、讨论、探究解决问题的方法,在本次课程设计中我们每个人都尽自己最大的努力去做,积极思考、充分发挥个人聪明才智,明白了个人的力量是有限的,必须团结合作,团队的力量绝不是个体力量的简单相加。

通过此次的课题设计,我学会了合作的力量,从一开始对结果的极其重视,到后来我们已经不是很过多的去在乎结果,而是注重这个设计的过程,很感谢有这样的机会,能让大家聚在一起,有欢乐,有烦恼,但最多的是满满的感动和充

第 23 页 共 24 页

学生成绩管理系统---课程设计报告

实。谢谢老师,谢谢老师的教导,与帮助。也更加谢谢我们组所有的成员,谢谢当家的配合与支持,谢谢大家几个晚自习的努力,我从大家的身上学到了很多的东西,收获颇多。大家都很棒,很开心我们在一起合作的日子!我会永远铭记在心!一起努力,一起加油,让我们以青春的名义歌舞青春吧! 注释:黑色笔标注的是我们组所有成员的沟通感想,而红色笔标注的是我作为组长的个人感悟!

十二.任务安排

1.组长王博同学负责做好统筹工作以及对总体设计的理解和讲解。 2.王冲同学负责理解初始化模块的功能,并能很好的给老师讲解。 3.刘博韬同学理解修改模块的功能,并能很好的给老师讲解。

4.胡青青同学负责理解打印和插入模块的功能,并能很好的给老师讲解。 5.赵露同学负责理解排序模块的功能,并能很好的给老师讲解。

6.李格同学负责理解删除和查找模块的功能,并能很好的给老师讲解。 7.赵国英同学负责理解保存和统计模块的功能,并能很好的给老师讲解。

十三.参考文献

[1]谭浩强著.C程序设计(第四版)[M].北京:清华大学出版社,2010.182-222. [2]沈被娜,刘祖照,姚晓冬编著.计算机软件技术基础(第三版)[M].北京:清华大学出版社,2000.19-46.

[3]谭浩强著.C程序设计教程[M].北京:清华大学出版社,2007.122-145. [4]谭浩强编著.C++程序设计[M].北京:清华大学出版社,2004.133-145.

[5]Herbert Schildt著.C语言大全(第二版)[M]..北京:电子工业出版社,1994.201-234.

第 24 页 共 24 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务