学生成绩管理系统C语言课设.docx
- 文档编号:27972411
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:25
- 大小:203.35KB
学生成绩管理系统C语言课设.docx
《学生成绩管理系统C语言课设.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言课设.docx(25页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C语言课设
学号
2015-2016学年第二学期
1508030116
《高级语言程序设计》
课程设计报告
题目:
学生成绩管理
专业:
物联网工程
班级:
15级
(1)班
姓名:
廖宝兰
指导教师:
彭飞
成绩:
计算机学院
2016年5月18日
一、设计内容及要求………………………………………3
二、概要设计………………………………………………4
三、设计过程及代码………………………………………5
四、设计结果与分析:
…………………………………30
五、参考文献……………………………………………33
一、设计内容及要求
1.问题描述
对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出
.将学生的成绩信息进行记录,信息内容包含:
(1)学生的学号
(2)学生的成绩。
假设,现收集到了一个班学生的所有成绩信息,求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
2设计要求
编写一个学生成绩管理程序。
在程序中,要求能够能输入并显n
个学生的m门考试科目的成绩、总分和平均分;要求按总分进行排序;任意输入一个学号,能显示该学生的姓名、各门功课的成绩。
3设计目的
通过程序的设计与运行掌握结构体变量的定义和使用,学会使用结构体数组作为函数的参数。
二、概要设计
1定义头文件和预定义
#include
#include
#include
2定义队列
typedefstructstudent{
charname[MAX];
charnum[MAX];
charsex[MAX];
intchinese;
intmathematic;
intenglish;
intcomputer;
structstudent*next;
三、设计过程与程序代码
(本程序是用VC运行的)
设计过程流程图:
#include
#include
#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();
typedefstructstudent{
charname[MAX];
charnum[MAX];
charsex[MAX];
intchinese;
intmathematic;
intenglish;
intcomputer;
structstudent*next;
}stu;
stu*head=NULL;
charmenu_main[]=
"||\n"
"|1输入学生成绩|\n"
"|2显示学生成绩|\n"
"|3查询学生成绩|\n"
"|4更新学生成绩|\n"
"|5删除学生成绩|\n"
"|6计算学生成绩|\n"
"|7保存文件|\n"
"|8退出系统|\n"
"||\n";
void(*menu_main_func[])()=
{
input_record,
show_record,
search_record,
update_record,
delete_record,
calculate,
save_to_file,
exit_system
};
charmenu_search[]=
"||\n"
"|1按照学号查询|\n"
"|2按照姓名查询|\n"
"|3按照性别查询|\n"
"|4返回上级菜单|\n"
"||\n";
void(*menu_search_func[])()=
{
search_by_id,
search_by_name,
search_by_sex,
search_exit
};
charmenu_calc[]=
"||\n"
"|1计算总成绩|\n"
"|2计算平均分|\n"
"|3返回上级菜单|\n"
"||\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>=1&&selected<=MENU_MAIN_COUNT)
{break;
}
printf("\n>输入错误!
(住:
请选择1-%d)\n",MENU_MAIN_COUNT);
}
menu_main_func[selected-1]();
}
voidprint_menu_title(char*title)
{printf("===========================\n");
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;
}
printf("继续输入学生成绩?
(Y继续,N返回菜单)");
getchar();
continue_input=getchar();
if(continue_input=='n'||continue_input=='N')
{
print_menu_main();
}
else
{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)
{printf(">请输入学生的信息(注:
最大长度是10个字符):
\n");
printf("学号:
");scanf("%s",pNewStu->num);
printf("姓名:
");scanf("%s",pNewStu->name);
printf("性别:
");scanf("%s",pNewStu->sex);
printf(">请输入%s的成绩(注:
成绩范围0-100):
\n",pNewStu->name);
printf("语文:
");scanf("%d",&(pNewStu->chinese));
printf("数学:
");scanf("%d",&(pNewStu->mathematic));
printf("英语:
");scanf("%d",&(pNewStu->english));
printf("计算机:
");scanf("%d",&(pNewStu->computer));
}
voidshow_record()/*显示学生成绩*/
{voidprint_table_head();
voidprint_table_row(stu*p);
voidprint_table_buttom();
voidprint_menu_main();
stu*p=head;
print_table_head();
while(p!
=NULL)
{print_table_row(p);
p=p->next;
}
print_table_buttom();
printf("按任意键返回菜单..\n");
getchar();
getchar();
print_menu_main();
}
voidprint_table_head()
{printf("+----------+----------+----------+----+----+----+------+------+\n");
printf("|学号|姓名|性别|语文|数学|英语|计算机|总成绩|\n");
printf("+----------+----------+----------+----+----+----+------+------+\n");
}
voidprint_table_row(stu*p)
{printf("|%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()
{printf("+----------+----------+----------+----+----+----+------+------+\n");
}
voidsearch_record()/*查询学生成绩*/
{voidprint_menu_title(char*title);
intselected=0;
system("cls");
print_menu_title("查询学生成绩");
printf(menu_search);
printf("===========================\n");
while(!
(selected>=1&&selected<=MENU_SEARCH_COUNT))
{printf(">请选择");
scanf("%d",&selected);
if(selected>=1&&selected<=MENU_SEARCH_COUNT)
{break;
}
printf("\n>输入错误!
(请选择1-%d)\n",MENU_SEARCH_COUNT);
}
menu_search_func[selected-1]();
}
voidsearch_by_id()/*按学号查找*/
{voidprint_table_head();
voidprint_table_row(stu*p);
voidprint_table_buttom();
voidsearch_record();
charid[MAX];
charcontinue_input='N';
stu*p=head;
intisfound=0;
printf("\n>请输入学生学号:
");
scanf("%s",id);
printf("\n>查找[%s]...\n",id);
print_table_head();
while(p!
=NULL)
{if(strcmp(p->num,id)==0)
{print_table_row(p);
isfound=1;
break;
}
p=p->next;
}
if(!
isfound)
printf("\n没有找到结果!
\n");
print_table_buttom();
printf("继续查找?
(Y继续,N返回)");
getchar();
continue_input=getchar();
if(continue_input=='Y'||continue_input=='y')
{search_by_id();
}
else
{search_record();
}
}
voidsearch_by_name()/*按姓名查找学生成绩*/
{voidprint_table_head();
voidprint_table_row(stu*p);
voidprint_table_buttom();
voidsearch_record();
charname[MAX];
charcontinue_input='N';
stu*p=head;
intisfound=0;
printf("\n>请输入学生姓名:
");
scanf("%s",name);
printf("\n>查找[%s]...\n",name);
print_table_head();
while(p!
=NULL)
{if(strcmp(p->name,name)==0)
{print_table_row(p);
isfound=1;
}
p=p->next;
}
if(!
isfound)
printf("\n没有找到结果!
\n");
print_table_buttom();
printf("继续查找?
(Y继续,N返回)");
getchar();
continue_input=getchar();
if(continue_input=='Y'||continue_input=='y')
{search_by_name();
}
else
{search_record();
}
}
voidsearch_by_sex()/*按性别查找学生成绩*/
{voidprint_table_head();
voidprint_table_row(stu*p);
voidprint_table_buttom();
voidsearch_record();
charsex[MAX];
charcontinue_input='N';
stu*p=head;
intisfound=0;
printf("\n>请输入学生性别:
");
scanf("%s",sex);
printf("\n>查找[%s]...\n",sex);
print_table_head();
while(p!
=NULL)
{if(strcmp(p->sex,sex)==0)
{print_table_row(p);
isfound=1;
}
p=p->next;
}
if(!
isfound)
printf("\n没有找到结果!
\n");
print_table_buttom();
printf("继续查找?
(Y继续,N返回)");
getchar();
continue_input=getchar();
if(continue_input=='Y'||continue_input=='y')
{search_by_sex();
}
else
{search_record();
}
}
voidsearch_exit()
{voidprint_menu_main();
print_menu_main();
}
voidupdate_record()/*更新学生成绩*/
{voidprint_menu_main();
voidcreate_stu_by_input(stu*pNewStu);
stu*p=head;
charid[MAX];
charcontinue_input='N';
printf("请输入要更新的学生学号:
");
scanf("%s",id);
while(p!
=NULL)
{if(strcmp(p->num,id)==0)
{break;
}
p->next;
}
if(p==NULL)
{printf("没有学号是[%s]的学生.",id);
}
else
{create_stu_by_input(p);
}
printf("继续更新?
(Y继续,N返回)");
getchar();
continue_input=getchar();
if(continue_input=='n'||continue_input=='N')
{print_menu_main();
}
else
{update_record();
}
}
voiddelete_record()/*删除学生成绩*/
{voidprint_menu_main();
stu*p=head;
stu*pPre=NULL;
charid[MAX];
charcontinue_input='N';
printf("请输入要更新的学生学号:
");
scanf("%s",id);
while(p!
=NULL)
{if(strcmp(p->num,id)==0)
{break;
}
p=p->next;
}
if(p==NULL)
{printf("没有学号是[%s]的学生.",id);
}
else
{printf("确定要删除学号为[%s]姓名为[%s]的学生吗?
(Y确定,N取消)",p->num,p->name);
getchar();
continue_input=getchar();
if(continue_input=='Y'||continue_input=='y')
{pPre=head;
if(pPre==p)
{head=p->next;
free(p);
}
else
{while(pPre!
=NULL)
{if(pPre->next==p)
{pPre->next=p->next;
free(p);
break;
}
pPre=pPre->next;
}
}
printf(">删除成功!
\n");
}
}
printf("继续删除吗?
(Y继续,N返回)");
getchar();
continue_input=getchar();
if(continue_input=='n'||continue_input=='N')
{print_menu_main();
}
else
{delete_record();
}
}
voidcalculate()/*计算学生成绩*/
{voidprint_menu_title(char*title);
intselected=0;
system("cls");
print_menu_title("计算学生成绩");
printf(menu_calc);
printf("===========================\n");
while(!
(selected>=1&&selected<=MENU_CALC_COUNT))
{printf(">请选择");
scanf("%d",&selected);
if(selected>=1&&selected<=MENU_CALC_COUNT)
{break;
}
printf("\n>输入错误!
(请选择1-%d)\n",MENU_CALC_COUNT);
}
menu_calc_func[selected-1]();
}
voidcalc_total()/*计算总成绩*/
{voidprint_table_head_total();
voidprint_table_row_total(stu*p);
voidprint_table_buttom_total();
stu*p=head;
print_table_head_total();
while(p!
=NULL)
{print_table_row_total(p);
p=p->next;
}
print_table_buttom_total();
printf("按任意键返回菜单..\n");
getchar();
getchar();
calculate();
}
voidprint_table_head_total()
{printf("+----------+----------+----------+----+----+----+------+--------+\n");
printf("|学号|姓名|性别|语文|数学|英语|计算机|总成绩|\n");
printf("+----------+----------+----------+----+----+----+------+--------+\n");
}
voidprint_table_row_total(stu*p)
{intt=p->chinese+p->mathematic+p->english+p->computer;
printf("|%10s|%10s|%10s|%4d|%4d|%4d|%6d|%8d|\n",
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言