学生成绩管理系统C语言课设Word文档格式.docx
- 文档编号:22084425
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:25
- 大小:203.35KB
学生成绩管理系统C语言课设Word文档格式.docx
《学生成绩管理系统C语言课设Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言课设Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
在程序中,要求能够能输入并显n
个学生的m门考试科目的成绩、总分和平均分;
要求按总分进行排序;
任意输入一个学号,能显示该学生的姓名、各门功课的成绩。
3设计目的
通过程序的设计与运行掌握结构体变量的定义和使用,学会使用结构体数组作为函数的参数。
二、概要设计
1定义头文件和预定义
#include<
stdio.h>
stdlib.h>
string.h>
2定义队列
typedefstructstudent{
charname[MAX];
charnum[MAX];
charsex[MAX];
intchinese;
intmathematic;
intenglish;
intcomputer;
structstudent*next;
三、设计过程与程序代码
(本程序是用VC运行的)
设计过程流程图:
#include<
#defineTITLE"
学生成绩管理系统"
#defineMAX10
#defineMENU_MAIN_COUNT8
#defineMENU_SEARCH_COUNT4
#defineMENU_CALC_COUNT3
voidinput_record();
voidshow_record();
voidsearch_record();
voidupdate_record();
voiddelete_record();
voidcalculate();
voidsave_to_file();
voidexit_system();
voidsearch_by_id();
voidsearch_by_name();
voidsearch_by_sex();
voidsearch_exit();
voidcalc_total();
voidcalc_average();
voidcalc_exit();
}stu;
stu*head=NULL;
charmenu_main[]=
"
||\n"
|1输入学生成绩|\n"
|2显示学生成绩|\n"
|3查询学生成绩|\n"
|4更新学生成绩|\n"
|5删除学生成绩|\n"
|6计算学生成绩|\n"
|7保存文件|\n"
|8退出系统|\n"
;
void(*menu_main_func[])()=
{
input_record,
show_record,
search_record,
update_record,
delete_record,
calculate,
save_to_file,
exit_system
};
charmenu_search[]=
|1按照学号查询|\n"
|2按照姓名查询|\n"
|3按照性别查询|\n"
|4返回上级菜单|\n"
void(*menu_search_func[])()=
search_by_id,
search_by_name,
search_by_sex,
search_exit
charmenu_calc[]=
|1计算总成绩|\n"
|2计算平均分|\n"
|3返回上级菜单|\n"
void(*menu_calc_func[])()=
calc_total,
calc_average,
calc_exit
voidmain()/*主函数*/
{voidprint_menu_main();
print_menu_main();
}
voidprint_menu_main()/*显示主菜单*/
{voidprint_menu_title(char*title);
intselected=0;
system("
cls"
);
print_menu_title(TITLE);
printf(menu_main);
printf("
===========================\n"
while(!
(selected>
=1&
&
selected<
=MENU_MAIN_COUNT))
{printf("
>
请选择:
scanf("
%d"
&
selected);
if(selected>
=MENU_MAIN_COUNT)
{break;
}
\n>
输入错误!
(住:
请选择1-%d)\n"
MENU_MAIN_COUNT);
menu_main_func[selected-1]();
voidprint_menu_title(char*title)
{printf("
printf("
|%s|\n"
title);
printf("
---------------------------\n"
voidinput_record()/*输入学生成绩*/
{voidcreate_stu_by_input(stu*pNewStu);
stu*get_last_student(stu*p);
voidprint_menu_main();
charcontinue_input='
N'
stu*pLastStu=NULL;
stu*pNewStu=(stu*)malloc(sizeof(stu));
pNewStu->
next=NULL;
create_stu_by_input(pNewStu);
if(head==NULL)
{head=pNewStu;
else
{pLastStu=get_last_student(head);
pLastStu->
next=pNewStu;
继续输入学生成绩?
(Y继续,N返回菜单)"
getchar();
continue_input=getchar();
if(continue_input=='
n'
||continue_input=='
)
print_menu_main();
{input_record();
stu*get_last_student(stu*p)
{if(p->
next==NULL)
{returnp;
else
{returnget_last_student(p->
next);
voidcreate_stu_by_input(stu*pNewStu)
请输入学生的信息(注:
最大长度是10个字符):
\n"
学号:
scanf("
%s"
pNewStu->
num);
姓名:
name);
性别:
sex);
请输入%s的成绩(注:
成绩范围0-100):
语文:
(pNewStu->
chinese));
数学:
mathematic));
英语:
english));
计算机:
computer));
voidshow_record()/*显示学生成绩*/
{voidprint_table_head();
voidprint_table_row(stu*p);
voidprint_table_buttom();
stu*p=head;
print_table_head();
while(p!
=NULL)
{print_table_row(p);
p=p->
next;
print_table_buttom();
按任意键返回菜单..\n"
voidprint_table_head()
+----------+----------+----------+----+----+----+------+------+\n"
|学号|姓名|性别|语文|数学|英语|计算机|总成绩|\n"
voidprint_table_row(stu*p)
|%10s|%10s|%10s|%4d|%4d|%4d|%6d|\n"
p->
num,p->
name,p->
sex,p->
chinese,p->
mathematic,p->
english,p->
computer);
voidprint_table_buttom()
voidsearch_record()/*查询学生成绩*/
intselected=0;
print_menu_title("
查询学生成绩"
printf(menu_search);
while(!
(selected>
=1&
selected<
=MENU_SEARCH_COUNT))
请选择"
if(selected>
=MENU_SEARCH_COUNT)
{break;
输入错误!
(请选择1-%d)\n"
MENU_SEARCH_COUNT);
menu_search_func[selected-1]();
voidsearch_by_id()/*按学号查找*/
voidsearch_record();
charid[MAX];
charcontinue_input='
intisfound=0;
请输入学生学号:
id);
查找[%s]...\n"
{if(strcmp(p->
num,id)==0)
isfound=1;
break;
if(!
isfound)
\n没有找到结果!
继续查找?
(Y继续,N返回)"
Y'
y'
{search_by_id();
{search_record();
voidsearch_by_name()/*按姓名查找学生成绩*/
charname[MAX];
请输入学生姓名:
name);
name,name)==0)
{search_by_name();
voidsearch_by_sex()/*按性别查找学生成绩*/
charsex[MAX];
请输入学生性别:
sex);
sex,sex)==0)
{search_by_sex();
voidsearch_exit()
voidupdate_record()/*更新学生成绩*/
voidcreate_stu_by_input(stu*pNewStu);
请输入要更新的学生学号:
p->
if(p==NULL)
没有学号是[%s]的学生."
{create_stu_by_input(p);
继续更新?
{print_menu_main();
{update_record();
voiddelete_record()/*删除学生成绩*/
stu*pPre=NULL;
确定要删除学号为[%s]姓名为[%s]的学生吗?
(Y确定,N取消)"
{pPre=head;
if(pPre==p)
{head=p->
free(p);
{while(pPre!
{if(pPre->
next==p)
{pPre->
next=p->
pPre=pPre->
删除成功!
继续删除吗?
{delete_record();
voidcalculate()/*计算学生成绩*/
计算学生成绩"
printf(menu_calc);
=MENU_CALC_COUNT))
=MENU_CALC_COUNT)
MENU_CALC_COUNT);
menu_calc_func[selected-1]();
voidcalc_total()/*计算总成绩*/
{voidprint_table_head_total();
voidprint_table_row_total(stu*p);
voidprint_table_buttom_total();
print_table_head_total();
{print_table_row_total(p);
print_table_buttom_total();
calculate();
voidprint_table_head_total()
+----------+----------+----------+----+----+----+------+--------+\n"
|学号|姓名|性别|语文|数学|英语|计算机|总成绩|\n"
voidprint_table_row_total(stu*p)
{intt=p->
chinese+p->
mathematic+p->
english+p->
computer;
|%10s|%10s|%10s|%4d|%4d|%4d|%6d|%8d|\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言