数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx

上传人:b****6 文档编号:18847619 上传时间:2023-01-01 格式:DOCX 页数:36 大小:23.88KB
下载 相关 举报
数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx_第1页
第1页 / 共36页
数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx_第2页
第2页 / 共36页
数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx_第3页
第3页 / 共36页
数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx_第4页
第4页 / 共36页
数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx

《数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx(36页珍藏版)》请在冰豆网上搜索。

数据结构课程设计《学生成绩管理系统》《参考版》Word下载.docx

6

2总体设计。

7

2.1程序设计组成框图。

8

2.2模块功能说明。

9

2.3程序流程图。

10

2.4主要函数之间相互调用。

11

3在设计过程中的感受。

12

致谢。

13

参考文献。

14

附录:

源程序清单。

15

1.绪论

1.1选题背景

为了提高高校学生信息的管理效率,方便对学生信息进行管理、学校里面的学生和管理员方便去管理和查询学生信息,如再要进行查询,就得在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,怎么可以即时而方便的管理,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。

建立一个学生信息管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。

2.1需求分析

学生管理系统功能的信息量大,数据安全性和保密性要求最高。

本功能实现对专业信息、学生信息、教师信息情况信息的管理和统计、课程信息和成绩信息查看及维护。

系统管理员可以浏览、查询、学生的基本信息,能添加、删除和修改学生信息,这部分功能应该由系统管理员执行,但是,删除某条专业基本信息记录时,应实现对该专业的相关信息也级联删除。

并且还应具有查询,并打印输出的功能

设计不同用户的操作权限和登陆方法、对所有用户开放的用户提供学生成绩信息查询、由于本系统功能实现方面并不太复杂,所以上面只是相关的学生信息管理查询的总体分析,具体实现就主要体现在学生管理,教师的管理和课程的管理这一块,也就是重点实现查询与添加学生信息,以及对成绩信息管理。

2.总体设计

(1)程序设计组成框图

学生成绩管理系统

1.按班级输出学生成绩单

2.按姓名查询

3.增加学生

4.删除学生

5.按班级修改学生成绩

6.按班学期改学生成绩

7.保存所有学生信息

8.显示不及格学生成绩

9.按平均成绩排序并输出成绩

10.退出

(2)模块功能说明

1输出功能:

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

2查询功能:

输入姓名可以查询学生的详细信息。

3增加功能:

增加新学生的信息。

4删除功能:

删除学生信息。

5修改功能:

修改学生的错误信息。

6保存功能:

保存已输入信息。

7读取功能:

读取已输入信息。

8显示功能:

按要求显示学生记录。

9排序功能:

按要求完成对学生信息的排序。

10退出系统。

(3)程序流程图

开始

输入指令(1~10)

学生成绩单

按姓名查询

增加学生

删除学生

按班级修改

按学期修改

保存信息

不及格成绩

平均分排序

退出

1

2

3

4

5

6

7

8

100

结束

(4)主要函数之间相互调用如下:

主函数main()的调用

switch(choice)

{case1:

OutputInformation();

break;

case2:

DesplayInfoBystudentName();

case3:

p=MallocNode();

GetInformation(p);

InsertOneNode(p);

break;

case4:

DeleteNodeBystudentNumber();

case5:

ChangeMarkByName();

case6:

ChangeMarkByNumber();

case7:

SaveLinkToFile();

case8:

DesplayMarkSegment();

case9:

CompositorByTotalMark();

case10:

}

总结

首先经过一周的编程实习,并在后一段的报告总结,我对数据结构这门科有新的认识,本人实在是获益不浅!

要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。

这次设计,让我重新掌握了数据结构,而且还得到了用数据结构解决实际问题的宝贵经验。

其次,通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。

同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!

更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!

致谢

因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,数据结构程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。

参考文献

[1]李丽娟.C语言程序设计教程(第二版).北京:

人民邮电出版社2009

[2]刁成嘉.C语言程序设计论文[D].北京:

清华大学出版社2004

[3]杨文军,杨柳.C语言程序设计教程[M].北京:

清华大学出版社2010

[4]周启海.C语言程序设计报告[R].北京:

中国水利工程出版社2005

[5]谭浩强.C程序设计(第三版)[M].北京:

清华大学出版社2005

附录

源程序清单

#include<

stdio.h>

conio.h>

malloc.h>

string.h>

typedefstructSTUDENT

{

charstudentNumber[10];

/*学生学号*/

charstudentName[20];

/*学生姓名*/

charclassName[20];

/*班级名称*/

charyearName[20];

/*学期名称*/

floatmark1;

/*第1门成绩*/

floatmark2;

/*第2门成绩*/

floatmark3;

/*第3门成绩*/

structSTUDENT*next;

}STUDENT;

STUDENT*headLink;

/*链表表头指针*/

/*以下是函数声明*/

voidReadInfoFormFile(void);

voidDesplayMenu(void);

voidCreateHeadLink(void);

STUDENT*MallocNode(void);

voidGetInformation(STUDENT*t);

voidOutputInformation(void);

voidDesplayInfoBystudentName(void);

voidDesplayOneNode(STUDENT*t);

voidInsertOneNode(STUDENT*t);

voidDeleteNodeBystudentNumber(void);

voidChangeMarkByName(void);

voidChangeMarkByNumber(void);

voidSaveLinkToFile(void);

voidDesplayMarkSegment(void);

voidCompositorByTotalMark(void);

intchoose;

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

/*主函数*/

voidmain()

CreateHeadLink();

ReadInfoFormFile();

DesplayMenu();

/************************************

函数功能:

从文件中读学生信息到链表中

************************************/

voidReadInfoFormFile(void)

FILE*fp;

STUDENT*p;

fp=fopen("

student.txt"

"

r"

);

if(!

fp)

printf("

文件不存在\n"

return;

while(fscanf(fp,"

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

p->

studentNumber,p->

studentName,p->

className,&

(p->

mark1),&

mark2),&

mark3))>

0)

InsertOneNode(p);

fclose(fp);

显示菜单,根据用户的输入

完成相应的功能

voidDesplayMenu(void)

-------请选择相应功能------------\n\n"

|1按班级输出学生成绩单|\n"

|2按姓名查询|\n"

|3增加学生|\n"

|4删除学生|\n"

|5按班级修改学生成绩|\n"

|6按学期修改学生成绩|\n"

|7保存所有学生信息|\n"

|8显示不及格学生成绩|\n"

|9按平均成绩排序并输出绩|\n"

|10退出|\n\n"

scanf("

%d"

&

choose);

/*取得用户的选择*/

switch(choose)

case1:

/*显示所有学生的信息*/

case2:

/*先申请一个新结点*/

/*要求用户输入信息到新结点中*/

/*将新结点加到链表中*/

/*根据用户输入的学号删除该学生*/

/*根据用户输入的姓名修改学生成绩*/

/*根据用户输入的学号修改学生成绩*/

/*保存数据*/

/*显示不及格的学生成绩*/

/*按平均成绩排序*/

/*保存数据后再退出*/

free(headLink);

default:

/*递归调用*/

建立链表表头

voidCreateHeadLink(void)

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

headLink=p;

p->

next=NULL;

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

STUDENT*MallocNode(void)

inti;

if(p==NULL)

returnNULL;

for(i=0;

i<

10;

i++)

studentNumber[i]='

\0'

;

20;

studentName[i]='

className[i]='

mark1=0.0;

mark2=0.0;

mark3=0.0;

returnp;

取得用户输入的学生信息

voidGetInformation(STUDENT*t)

请输入学生学号:

\n"

%s"

t->

studentNumber);

请输入学生姓名:

studentName);

请输入该生所在班级:

className);

请输入第1门成绩:

%f"

(t->

mark1));

请输入第2门成绩:

mark2));

请输入第3门成绩:

mark3));

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

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成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n"

DesplayOneNode(p);

flag=1;

flag)

对不起,不存在姓名为%s的学生\n"

输出一个结点的信息

voidDesplayOneNode(STUDENT*t)

%s\t"

%.2f\t"

mark1);

mark2);

mark3);

mark1+t->

mark2+t->

%.2f\t\n"

(t->

mark3)/3);

根据用户输入的学号删除该学生

voidDeleteNodeBystudentNumber(void)

STUDENT*p,*q;

请输入要删除的学生学号:

"

studentNumber);

q=headLink->

while(q)

if(strcmp(q->

studentNumber,studentNumber)==0)

p->

next=q->

free(q);

flag=1;

p=p->

q=q->

if(!

不存在该学号的学生\n"

成功删除\n"

显示所有学生的信息

voidOutputInformation(void)

现在没有学生信息,请先输入学生信息\n\n"

根据输入的班级修改成绩

voidChangeMarkByName(void)

inta;

floatmark1,mark2,mark3;

请输入学生班级:

a);

请输入新的第1门成绩:

请输入新的第2门成绩:

请输入新的第3门成绩:

mark1=mark1;

mark2=mark2;

mark3=mark3;

修改成功\n"

对不起,不存在班级为%s的学生\n"

根据输入的学期修改成绩

voidChangeMarkByNumber(void)

intb;

charstudentNumber[20];

floatmark1,mar

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

当前位置:首页 > 经管营销 > 经济市场

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

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