课程设计报告.docx
- 文档编号:29374499
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:64
- 大小:342.47KB
课程设计报告.docx
《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(64页珍藏版)》请在冰豆网上搜索。
课程设计报告
1系统分析
1.1课程设计内容
学生成绩管理系统用Vc6.0环境开发
1.2系统功能需求分析
本系统应具有以下功能:
1、数据输入
数据可以通过2种方式输入:
(1)数据文件导入学生相关信息和各科成绩:
如果存在数据文件,则从“学籍管理系统”所输出的学生相关信息和各科成绩导入学生相关信息和各科成绩;
(2)通过键盘输入学生相关信息和各科成绩:
如果不存在数据文件,可通过键盘输入,输入完毕后,存盘产生数据文件;输入时,如输入的编号已存在,应出现出错信息……
2、数据添加、修改、删除功能
(1)添加:
按照输入例子添加学生相关信息和各科成绩(添加学生信息,当输入学号为0时,将结束操作;若学号重复,请重新输入学号)
(2)修改:
可修改指定的学生相关信息和各科成绩(可以选择:
按姓名修改或者按学号修改)
(3)删除:
可删除指定的学生相关信息和各科成绩(可以选择:
按姓名删除或者按学号删除)
3.数据的计算
(1)计算出每个学生的总分及平均成绩,根据平均成绩计算5分制成绩,计算结果可输出到文件
(2)计算出每门课程(语文,数学,英语)的总分及平均成绩
4.数据查询(若所查学生不存在,则按回车键返回上级菜单)
(1)可按学生的姓名或者按学号查询;
(2)可查询有不及格成绩的学生名单,名单中包含学号、姓名、课程名等相关信息及成绩,查询结果可输出到文件
5.浏览:
(1)可浏览输入后的数据
(2)可浏览查询后的数据
(3)可浏览按学号或者按姓名排序后的数据
6.文件操作:
可打开、保存、关闭数据文件
7.保存信息
1.3数据结构设计
本系统需要处理的数据主要有:
编号、姓名、……,相关数据的类型及说明如下:
数据
数据类型
说明
学号
整型
取值范围
姓名
字符数组
长度10
语文成绩
双精度浮点型
取值范围
数学成绩
双精度浮点型
取值范围
英语成绩
双精度浮点型
取值范围
总分
双精度浮点型
取值范围
平均分
双精度浮点型
取值范围
五分制成绩
双精度浮点型
取值范围
2系统设计
2.1总体设计
按系统分析的功能要求将系统划分为以下几个主要功能模块:
1、数据输入
数据可以通过2种方式输入:
(1)数据文件导入学生相关信息和各科成绩:
如果存在数据文件,则从“学籍管理系统”所输出的学生相关信息和各科成绩导入学生相关信息和各科成绩;
(2)通过键盘输入学生相关信息和各科成绩:
如果不存在数据文件,可通过键盘输入,输入完毕后,存盘产生数据文件;输入时,如输入的编号已存在,应出现出错信息……
2、数据添加、修改、删除功能
(1)添加:
按照输入例子添加学生相关信息和各科成绩(添加学生信息,当输入学号为0时,将结束操作;若学号重复,请重新输入学号)
(2)修改:
可修改指定的学生相关信息和各科成绩(可以选择:
按姓名修改或者按学号修改)
(3)删除:
可删除指定的学生相关信息和各科成绩(可以选择:
按姓名删除或者按学号删除)
3.数据的计算
(1)计算出每个学生的总分及平均成绩,根据平均成绩计算5分制成绩,计算结果可输出到文件
(2)计算出每门课程(语文,数学,英语)的总分及平均成绩
4.数据查询(若所查学生不存在,则按回车键返回上级菜单)
(1)可按学生的姓名或者按学号查询;
(2)可查询有不及格成绩的学生名单,名单中包含学号、姓名、课程名等相关信息及成绩,查询结果可输出到文件
5.浏览:
(1)可浏览输入后的数据
(2)可浏览查询后的数据
(3)可浏览按学号或者按姓名排序后的数据
6.文件操作:
可打开、保存、关闭数据文件
7.保存信息
2.2详细设计
2.2.1界面设计
1、菜单设计
主菜单:
通过printf函数显示每个菜单的信息,再通过switch函数选择0-12的菜单。
输入选项代码即可进入相应的菜单
子菜单(二级菜单)
通过printf函数显示每个二级菜单的信息,再通过switch函数选择的菜单实现相对应的功能模块
2、输入界面的设计
通过printf函数显示添加学生信息的输入例子,按照顺序添加学生信息,当输入学号为0的学生信息就停止输入。
每添加一次学生的信息,通过printf("是否继续输入?
(yes/no)")询问是否继续添加。
当输入的学号或者姓名和之前输入的信息有重复时,显示“学号(姓名)重复,请重新输入学号(姓名)”,并通过按enter键退出输入模块
3、信息显示界面的设计
输出学生的学号,姓名,各科成绩。
主要通过printf函数输出intinput()函数中添加的学生的信息。
2.2.2各功能模块的设计
根据划分的功能模块,定义以下函数实现各功能:
(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)
1、主函数main()
主函数主要作用是控制调用其它函数协调工作。
其流程图如下:
、
2.保存信息Save函数。
本函数用于学生信息的存储,完成保存输入学生的学号,姓名,各科成绩后的全部信息。
通过fopen,fprintf,fclose函数实现信息的逐一保存。
3.输入学生信息――intinput()函数
本函数用于添加学生的学号,姓名,各科成绩等信息。
给出添加学生信息的输入例子,按照顺序添加学生信息,当输入学号为0的学生信息就停止输入。
每添加一次学生的信息,通过printf("是否继续输入?
(yes/no)")询问是否继续添加。
当输入的学号或者姓名和之前输入的信息有重复时,显示“学号(姓名)重复,请重新输入学号(姓名)”,并通过按enter键退出输入模块
4.输出学生信息函数--voidoutput()
本函数用于输出学生的学号,姓名,各科成绩。
主要通过printf函数输出intinput()函数中添加的学生的信息。
5.求出语文,数学,英语总分,平均成绩函数--voidgaverage()
本函数用于求出语文,数学,英语总分,平均成绩。
通过for(i=0;i<=sum;i++)
ctotal=ctotal+stu[i].schinese;循环计算出学生总的语文成绩。
再通过cave=ctotal/sum;求出学生语文的平均成绩。
通过for(i=0;i<=sum;i++)
mtotal=mtotal+stu[i].smath;循环计算出学生总的数学成绩。
再通过mave=mtotal/sum;求出学生数学的平均成绩。
通过for(i=0;i<=sum;i++)
etotal=etotal+stu[i].senglish;循环计算出学生总的英语成绩。
再通过eave=etotal/sum;求出学生英语的平均成绩。
6按学号排序函数--intsort_by_num()
本函数在二级菜单中发挥作用,按学号排序。
先通过调用voidrange();函数,把学号为0的学生的信息去掉。
然后通过冒泡排序法排序。
学号,语文,数学,英语成绩分别用t,m,n,l进行交换排列顺序,姓名则通过strcpy交换排列顺序。
7按姓名排序函数--intsort_by_name()
本函数在二级菜单中发挥作用,按姓名排序函数.。
先通过调用voidrange();函数,把学号为0的学生的信息去掉。
然后通过冒泡排序法排序。
学号,语文,数学,英语成绩分别用t,m,n,l进行交换排列顺序,姓名则通过strcpy交换排列顺序。
8排序函数--intsort_message()
本函数通过调用intsort_by_num(),intsort_by_name()函数发挥作用。
通过在二级菜单中选择1或2实现.按学号或者按姓名排序。
9.求出每个学生的总分,平均分和5分制成绩函数--voidmeigezopi()
本函数实现求出每个学生的总分,平均分和5分制成绩的功能。
通过for(i=0;i<=sum;i++)stu[i].sum=stu[i].schinese+stu[i].smath+stu[i].senglish;求出每个学生的总分。
再用stu[i].aver=1.0*stu[i].sum/3.0;求出每个学生的
平均分。
然后通过switch(index)和case求出每个学生的5分制成绩。
最后通过fopen,fprintf,fclose函数实现信息的逐一保存
10.求出有挂科记录的学生的名单--voidsearch_unpass()
本函数实现求出有挂科记录的学生的名单。
通过if(stu[i].schinese 语文: %lf\n",stu[i].schinese);if(stu[i].smath 数学: %lf\n",stu[i].smath)if(stu[i].senglish printf("所挂科目: 英语: %lf\n",stu[i].senglish);;输出学生的挂科记录。 最后通过fopen,fprintf,fclose函数实现信息的逐一保存 11.查询信息――intsearch_by_num() 本函数在二级菜单中发挥作用,以学号为标准进行信息查询。 通过for(i=0;i =0)循环,查询所要查询的学生的信息。 若有所要查询的学生的信息,则输出,若不存在,则printf("该学生不存在! ");最后通过fopen,fprintf,fclose函数实现信息的逐一保存 12.按照姓名查询信息――intsearch_by_name() 本函数在二级菜单中发挥作用,以姓名为标准进行信息查询。 通过for(i=0;i =0)循环,查询所要查询的学生的信息。 若有所要查询的学生的信息,则输出,若不存在,则printf("该学生不存在! ");最后通过fopen,fprintf,fclose函数实现信息的逐一保存 13 学生信息查询--intinquire_message() 本函数通过调用intsearch_by_num(),intsearch_by_name()函数发挥作用。 通过在二级菜单中选择1或2实现.按学号或者按姓名查询。 最后通过fopen,fprintf,fclose函数实现信息的逐一保存 14.把学号为0的学生记录删去--voidrange() 通过循环for(i=0;i =0)stu2[i]=stu[i];把学号不为0的学生的信息放入新的结构体stu2[i],从而实现删去学号为0的学生记录 15按学号删除--intdelete_by_num() 本函数在二级菜单中发挥作用,按学号删除。 通过循环for(i=0;i<=sum;i++)if(stu[i].num==delete_num)stu[i].num=0;把要删除学号的学生的学号置0,从而删去该学生的信息 16按姓名删除--intdelete_by_name() 本函数在二级菜单中发挥作用,按姓名删除。 通过循环for(i=0;i<=sum;i++)if(strcmp(stu[i].name,delete_name)==0)stu[i].num=0;把要删除学号的学生的学号置0,从而删去该学生的信息 17 学生信息删除--intdelete_message() 本函数通过调用intdelete_by_num(),intdelete_by_name()函数在二级菜单发挥作用。 通过在二级菜单中选择1或2实现.按学号或按姓名删除学生的信息 18 学生信息的修改--intchange() 通过调用intchange_by_num(),intchange_by_name()函数在二级菜单发挥作用。 通过在二级菜单中选择1-4分别实现修改.学号,姓名,语文成绩,数学成绩,英语成绩 19.浏览信息--voidliulan() 本函数通过调用 inquire_message();output();load_file2();sort_message();meigezopi();load_file3();函数发挥作用。 通过在二级菜单中选择1-7分别实现浏览查询后的学生信息,输出后的学生信息,计算总分,平均成绩后的学生信息,按学号排序后的学生信息,计算出每个学生的总分,平均分后的学生信息,有挂科记录的学生信息,输出后学生的信息 20读取信息--intload_file() 本函数通过fopen,fprintf,fclose函数实现学生信息的逐一读取。 21.读取求出每个学生的平均分后的信息--intload_file2() 本函数通过fopen,fprintf,fclose函数实现学生的学号,姓名,各科成绩后的全部信息逐一读取。 22读出有挂科记录的学生信息--intload_file3() 本函数通过fopen,fprintf,fclose函数实现读取学生挂科信息。 3系统编码设计 3.1预处理命令及结构体类型的声明 #include #include #include #defineN1000 #include intsum=0; structstudent { intnum; charname[20]; doubleschinese; doublesmath; doublesenglish; doublecave; doublesum; doubleaver; doublegrade; }stu[N],stu2[N]; 3.2main函数 通过printf输出欢迎界面的信息,通过选择菜单的序号0-12进入各个功能模块 intmain()/*主函数*/ { intchoice; intinput(); voidoutput(); voidgaverage(); intsort_message(); voidsave(); intload_file(); voidmeigezopi(); voidsearch_unpass(); voidliulan(); intinquire_message(); intdelete_message(); intchange(); intload_file2(); intload_file3(); printf("\n*******************^.^^.^*******************\n\n"); printf("*****************欢迎使用学生成绩管理系统***************\n\n"); printf("◢██████◣ ◢████◣\t姓名: \n"); printf("◢◤ ◥◣ ◢◤ ◥◣\t\t王秀平\n"); printf("◤ ◥◣ ◢◤ █\n"); printf("▎ ◢◣ ◥◣◢◤ ◢█ █\t学号: \n"); printf("◣ ◢◤ ◥◣ ◢◣◥◣◢◤\t\t3209005760\n"); printf("◥██◤ ◢◤ ◥◣\n"); printf(" █ ● ● █\t\t专业: \n"); printf(" █ 〃 ▄ 〃 █\t\t\t信息管理与信息系统\n"); printf(" ◥◣ ╚╩╝ ◢◤\n"); printf(" ◥█▅▃▃ ▃▃▅█◤\t\t班级: \n"); printf(" ◢◤ ◥◣\t\t\t09级3班\n"); printf(" █ █\n"); printf(" ◢◤▕ ▎◥◣\n"); printf(" ▕▃◣◢▅▅▅◣◢▃▕\n"); printf("*****************欢迎使用学生成绩管理系统***************\n"); printf("\n*******************^.^^.^*******************\n"); { printf("########\n"); printf("############################\n"); printf("############################################\n"); printf("################################################\n"); printf("################################################\n"); printf("##########################################\n"); printf("####################################\n"); printf("############################\n"); printf("####################\n"); printf("############\n"); printf("######\n"); printf("##\n"); } do { clear(); printf("\n*******************^.^^.^*******************\n\n"); printf("*****************欢迎使用学生成绩管理系统***************\n\n"); printf("1: 输入学生的信息和成绩\n"); printf("2: 显示学生信息和所有成绩记录\n"); printf("3: 计算并输出总分,平均成绩,\n"); printf("4: 按学号,姓名排序\n"); printf("5: 结果存入文件\n"); printf("6: 打开文件,读取文件信息\n"); printf("7: 每个学生的总分,平均分\n"); printf("8: 有挂科记录的学生\n"); printf("9: 浏览信息\n"); printf("10: 按姓名,学号查询信息\n"); printf("11: 按姓名,学号删除\n"); printf("12: 按学号,姓名修改学生信息\n"); printf("0: 退出系统\n"); printf("*****************欢迎使用学生成绩管理系统***************\n"); printf("\n*******************^.^^.^*******************\n"); printf("输入选项代码: \n"); scanf("%d",&choice); switch(choice) { case1: input(); break; case2: output(); break; case3: gaverage(); break; case4: sort_message(); break; case5: save(); break; case6: load_file(); break; case7: meigezopi(); break; case8: search_unpass(); break; case9: liulan();break; case10: inquire_message();break; case11: delete_message();break; case12: change();break; case0: {clear(); printf("\n*******************^.^谢谢使用学生成绩管理系统! ^.^*******************\n"); { printf("########\n"); printf("############################\n"); printf("############################################\n"); printf("################################################\n"); printf("################################################\n"); printf("##########################################\n"); printf("####################################\n"); printf("############################\n"); printf("####################\n"); printf("############\n"); printf("######\n"); printf("##\n"); } printf("\n*******************^.^谢谢使用学生成绩管理系统! ^.^*******************\n"); getchar(); return0; break; } } } while(choice! =0); return0; } 3.3保存信息Save函数.本函数用于学生信息的存储,完成保存输入学生的学号,姓名,各科成绩后的全部信息 voidsave()/*保存信息*/ { inti; FILE*fp; charfilename[20];clear(); printf("\t\t\t保存信息: \n"); printf("\t\t\t请输入文件名: \n"); scanf("\t\t\t%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\t\t\t无法打开文件\n"); } fprintf(fp,"%d\n",N);/*循环写入数据*/ while(i { fprintf(fp,"学号姓名语文成绩数学成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告