高级语言课程设计学生成绩管理系统.docx
- 文档编号:1250425
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:43
- 大小:2.69MB
高级语言课程设计学生成绩管理系统.docx
《高级语言课程设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《高级语言课程设计学生成绩管理系统.docx(43页珍藏版)》请在冰豆网上搜索。
高级语言课程设计学生成绩管理系统
高级语言(C语言)课程设计说明书
起止日期:
2012年07月2日至2012年07月14日
题目
学生成绩管理系统
学生姓名
班级
电子信息工程1101班
学号
xxxxxxxxxxxxxxxx
成绩
通信与信息工程学院
说明书撰写提纲
一、课程设计要求
课程设计系统组成及模块功能:
学生成绩管理是教学管理中的一项重要内容,主要包括成绩的录入、显示、查询和统计四大模块。
各主要模块的功能如下:
a)录入模块
通过键盘录入某同学的学号,姓名,3门课成绩。
b)显示模块
显示所有录入的成绩。
c)查询模块
查询相关同学的成绩。
d)统计模块
计算全部同学的总分和平均分。
设计要求:
(1)界面菜单主菜单,具体要求如下:
***************MENU***************"
1.Enterlist/*输入记录*/
2.Deletearecordfromlist/*从表中删除记录*/
3.printlist/*显示单链表中所有记录*/
4.Searchrecordonname/*按照姓名查找记录*/
5.computethescore/*计算所有学生的总分和均分*/
6.sortbyscore/*排序*/
7.Quit/*退出*/
(2)需要定义多个函数对应菜单
/*以下是函数原型对应以上菜单*/
STUDENT*create();/*输入记录*/
STUDENT*delete(STUDENT*h);/*删除记录*/
voidprint(STUDENT*h);/*显示所有记录*/
voidsearch(STUDENT*h);/*查找*/
voidcomputer(STUDENT*h);/*计算总分和均分*/
STUDENT*sort(STUDENT*h);/*排序*/
intmenu_select();/*菜单函数*/
(3)要求设计流程图
(4)要求功能框图
(5)代码
二、程序的功能设计
三、程序的数据结构
主要功能的实现
函数明细:
整个系统除了主函数外,另外还有14个函数,实现八大功能:
输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。
各个函数的详细设计说明分别如下:
主函数main()
利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
菜单选择函数intmenu_select()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,再自行返回该函数。
初始化函数STUDENT*init()
这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head的值为NULL和一个清屏语句。
比如:
没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!
输入记录函数STUDENT*create()
这是一个无参函数,用来执行第学生成绩记录的输入,当学生为@时停止输入,函数结束后,带回一个指链表头的指针向head。
将下一个学生的信息插在表头。
显示记录函数voidprint(STUDENT*h)
这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。
算法:
先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。
然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。
重复执行此步聚直到p指针指向NULL为止。
查找记录函数voidsearch(STUDENT*h)
这是一个不返回值的有参函数,形参为“链表头的指针”,实现按学号对某个学生进行查找,并显示所查找到的记录。
算法:
采用线性查找法往下一个结点查找。
输入所要查找的学生的学号s,设一个指针变量p,先指向第一个结点,当strcmp(p->name,s)&&p!
=NULL时,使p后移一个结点,如果p!
=NULL,输出p所指的结点。
删除记录函数STUDENT*delete(STUDENT*h)
这是一个有返回值的有参函数。
形参为“链表头的指针”,在核对密码后。
实现对所要删除学生按学号进行查找。
找到后显示该学生的信息。
按任意键进行删除。
算法:
主函数链表的头指针,用一个输出语句printf("Inputyourpassword:
");
提示用户输入密码。
在输入过程中如果需要用到退格。
putchar(8);putchar('');putchar(8);来达到视觉和功能上的要求。
如果密码错误,则两秒后自动返回主菜单。
正确后输入要删除的学生学号,进行删除。
N-S流程图如下:
修改函数STUDENT*Modify(STUDENT*h)
这是一个有参函数,一个是“链表头的指针”修改之后,并返回链表的头指针。
算法:
首先向系统申请一块空间,用于存放输入的信息。
程序会根据用户输入的学号。
采用线性查找法往下一个结点查找。
设一个指针变量p,先指向第一个结点,当strcmp(p->name,s)&&p!
=NULL时,使p后移一个结点,如果p!
=NULL,输出p所指的结点。
如果有该学生就修改。
并出现提示信息"***Modifysuccess!
***"。
如果没有该学生则出现“***FindoutNo.%sstudent***”提示。
并2秒后返回主菜单。
N-S流程图如下:
q=head
原来的链表是空表
是否
2秒后当记录的学号不是要找的,或指针不为空时
返回
主菜单info指向q位置q向后移一个结点
!
strcmp(p->no,info->no)
是否
printf("Don't
forgetsave\n")
info->next=p->next;
q->next=info;
按部分排序函数STUDENT*sort(STUDENT*head)
这是一个有参函数,形参为“链表头的指针”,按学生成绩的平均分高低进行排序,还可以显示名次。
N-S流程图:
temp=head->next,head->next=NULL
当temp!
=NULL时
t=temp;temp=temp->next;p1=head;p2=head;
当t->average
=NULL时
p2=p1;p1=p1->next;
p1=p2
是否
t->next=p1;t->next=p1;
head=t;p2->next=t;
p1=head;
当p1!
=NULL时
i++;p1—>order=i;p1=p1—>next;
输出“排序成功”
四、程序的函数设计
函数的功能描述
1)程序的模块组成:
主函数:
intmain()
新建函数:
STUDENT*init()
输入函数:
STUDENT*create()
显示函数:
voidprint(STUDENT*h)
删除函数:
STUDENT*delete(STUDENT*h)
按名字寻找函数:
voidsearch(STUDENT*h)
按总分排序函数:
STUDENT*sort(STUDENT*h)
计算总分和均分函数:
voidcomputer(STUDENT*h)
修改函数:
STUDENT*Modify(STUDENT*head,STUDENT*new)
按学号排序函数:
STUDENT*index(STUDENT*h)
菜单函数:
intmenu_select()
2)各个函数的主要功能:
输入函数:
随时输入数据。
菜单函数:
显示系统主菜单。
显示函数:
显示所有学生的信息。
寻找函数:
方便学生查找自己的成绩。
删除函数:
删除某学生的信息。
排序函数:
按总成绩排序。
按学号排序函数:
按学号排序。
插入函数:
可以插入新的信息。
函数的调用关系
源文件
函数名或其他成分
功能
student.h
main
总控函数
menu_select
菜单选择
handle_menu
菜单处理
newRecords
新建学生信息记录
quit
结束运行
add_disp.c
showTable
打印表头
getIndex
按升序排序的位置
addRecord
在表尾追加信息
display
显示信息
que_remv_modi.c
removeRecord
删除制定的记录
findRecord
查找制定的记录
queryInfo
查找制定学生的信息
copyRecord
复制记录
modifyRecord
修改制定学生信息
save_load
save_load
save
文件储存
load
文件读取
sort.c
sortInfo
排序
student.h
常数
提供常数
结构声明
学生成绩结构
库函数及函数原型声明
引用库函数及函数
五、源程序代码
#include
#include
#include
#defineLENsizeof(structscorenode)
#defineDEBUG
#include
structscorenode
{intnumber;/*学号*/
charname[10];/*姓名*/
floatyuwen;/*语文成绩*/
floatyingyu;/*英语成绩*/
floatshuxue;/*数学成绩*/
floatzongfen;/*个人总分*/
structscorenode*next;
};
typedefstructscorenodescore;
intn,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
/*==============================================================================================*/
score*creat2311(void)
/*函数creat2311,功能:
创建链表,此函数带回一个指向链表头的指针*/
{
score*head;
score*p1,*p2,*p3,*max;
inti,j;
floatfen;
chart[10];
n=0;
p1=p2=p3=(score*)malloc(LEN);head=p3;/*开辟一个新单元*/
printf("请输入学生资料,输0退出!
\n");
repeat1:
printf("请输入学生学号(学号应大于0):
");/*输入学号,学号应大于0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:
");
scanf("%d",&p1->number);}
/*输入学号为字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言 课程设计 学生 成绩管理系统