c语言学生成绩管理系统的设计,C语言学生成绩管理系统设计

资源描述:

沈阳航空航天大学 课 程 设 计 报 告 大作业名称C 语言课程设计 大作业题目学生成绩管理系统设计 院(系)计算机学院 专 业计算机科学与技术 班 级 学 号 姓 名 指导教师 完成日期2016年12月24日 目目 录录 第第 1 章章 概要设计概要设计.1 1.1 题目的内容与要求1 1.2 总体结构1 第第 2 章章 详细设计详细设计.2 2.1 主模块2 2.2 输入模块3 2.3 显示模块3 2.4 修改模块4 2.5 删除模块4 2.6 查询模块5 2.7 统计模块6 第第 3 章章 调试分析调试分析.7 第第 4 章章 使用说明使用说明.8 参考文献参考文献.12 附附 录(程序清单)录(程序清单).10 第 1 章 概要设计 1.1 题目的内容与要求题目的内容与要求 内容 学生成绩信息包括姓名、学号、语文、数学、英语。 实现的主要功能有 1)信息维护。包括学生成绩的输入、按学号删除、按学号修改等。 2 信息查询。输入学号或姓名,显示出该生三个科目的成绩,计算出三科总分 并显示,按总分将所有学生成绩排序,显示出该生的名次。 3)成绩统计。先输入任意一个科目,接着选择 a 或 b 来分别显示平均分或统 计 分数段学生,若选择 a,则直接显示出该科目的平均分;若选择 b,则提示 用户输入一个分数段,显示所有该科目属于该分数段内的学生信息,并给 出 学生总数。 要求 1)系统以菜单方式工作。在不同的界面为用户给出具体提示。 2)系统利用 C 语言实现,源程序要有适当的注释。 3)采用 VC 环境进行运行调试。 1.2 总体结构总体结构 本程序主要分为七个模块(功能模块图见图功能模块图见图 1.1)结构体模块,输入模块, 显示模块,修改模块,删除模块,查询模块,统计模块。 结构体模块建立一个结构体模块,为链表存信息用。输入模块键盘输入 每个学生的信息,并保存在文件中。显示模块显示全部学生的具体信息。修改 模块修改某个学生的成绩信息。删除模块删除某个学生的全部信息。查询模 块查询某个学生的具体信息。统计模块通过功能选择,统计并显示某一科目 的平均分或某分数段学生的具体信息。 图图 1.1 功能模块图功能模块图 第 2 章 详细设计 2.1 主模块主模块 控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块, 实现各项功能,流程如图 2.1 所示。 Y N N Y 学生成绩管理系统 显 示 模 块 修 改 模 块 删 除 模 块 输 入 模 块 查 询 模 块 统 计 模 块 主 模 块 开始 显示主菜单 选 0 退 出 执行具体功能 显示结果 结束 选 1-6 图图 2.1 主模块流程图主模块流程图 注释 1. 显示主菜单; 2. 选择不同序号执行不同功能; 2.2 输入模块输入模块 输入所有学生信息并保存,流程如图 2.2 所示。 图图 2.2 输入模块流程图输入模块流程图 注释 1. 循环输入每个学生的信息; 2.保存所有信息 2.3 显示模块显示模块 显示所有学生的具体信息,流程图如 2.3 所示。 printf“输入学号“; printf“输入姓名“; printf“第d 门成绩的分数“,j1; 结束 计算总分、平均分 printf“\n\n 信息保存成功恭喜\n\n“; Print 显示信息 图图 2.3 显示模块流程图显示模块流程图 注释 1. 选择号好功能; 2. 显示全部学生的具体信息。 2.4 修改模块修改模块 修改某个学生各个科目的成绩,流程图如 2.4 所示。 Y N 图图 2.4 修改模块流程图修改模块流程图 注释 1. 输入要修改学生的学号; 2. 输入要修改的科目信息; 3. 修改成功,是否要继续修改。是,继续;否,回到主菜单。 2.5 删除模块删除模块 结束 xiugai printf“\n 请输入要修改的同学的学号“; printf“\n 请输入要修改学生修改后的的信息\n“; 是否继续修改 结束 printf“\n 修改成功恭喜\n“; 按学号删除某学生的全部信息,流程图如图 2.5 所示。 Y N N 图图 2.5 删除模块流程图删除模块流程图 注释 1. 输入要删除的学生的学号; 2. 显示该生信息,是否删除。是,删除;否,是否继续操作。 3. 是否继续删除。是,重复上述操作;否,退出回到主菜单。 2.6 查询模块查询模块 输入要查询学生的学号,显示该生具体信息,流程图如图 2.6 所示。 Y shanchu printf“\n 请输入要删除的同学的学号“; printf“\n 该同学信息如下\n“; 是否删除 printf“\n 删除成功恭喜\n“; 是否继续删除 结束 Y chaxun printf“\n 请输入学生学号“; 显示该生具体信息 是否继续查询 结束 N 图图 2.6 查询模块流程图查询模块流程图 注释 1. 输入要查询的学生的学号; 2. 显示该生的具体信息; 3. 是否继续查询。是,继续查询下一位;否,回到主菜单。 2.7 统计模块统计模块 通过选择不同功能,显示某个科目的平均分或某分数段学生的具 体信息,流程图如图 2.7 所示。 case ‘a’case ‘b’ Y N 图图 2.7 统计模块流程图统计模块流程图 注释 1. 通过菜单选择科目; 2. 通过菜单选择 a 或 b 功能,分别显示该科目平均分或某分数段学生信息; tongji( ) printf“\n 输入一个科目“; 选择功能 a 或 b 计算该科目平 均分 printf“\n\n 该科目的平 均成绩为.2f\n“,ave; printf“\n 请输入分数段 __ 空格__ \n“; 显示属于该分数段 的学生;学生总数 是否继续查询其他科目 结束 3. 是否继续查询是,继续;否,回到主菜单。 第 3 章 调试分析 在这次课程设计中,程序编写的过程中遇到了很多问题,主要是函数实现方 面问题较多。 问题 1查询函数 chaxun 中,会造成数据混乱,原因是 for 循环中某行代 码运用错误,如下 fori0;i0 break; case 2 gongnengx; break; case 3 gongnengx; break; case 0 exit -1; break; default printf“输入错误\n“; } } printf“\n\n 继续查询其他科目信息吗“; printf“\n 继续查询请按 y;不进行查询请按 n\n“; getchar; cgetchar; } } /*选择 a 或 b 来分别显示该科平均分或统计分数段学生****************/ void gongnengint x { printf“\n\n 请选择功能\n“; printf“\na显示该科目平均分\nb统计分数段

展开阅读全文

#include <stdio.h> #include <stdlib.h> #include <string.h> #include<ctype.h> #define M 3 struct student {long num; char name[20]; char sex; int score[5]; int ave; }stu[M]; void init() { printf("\t\t********************************\n\n"); printf("\t\tStudent score management systerm \n"); printf("\n"); printf("\t\t Make by Maggiehe \n"); printf("\n"); printf("\t\t Student number is 3206***** \n\n"); printf("\t\t********************************\n\n"); } void input() { int i,j; printf("\nInput the student number name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) {scanf("%ld,%s,%c",&stu[i].num,stu[i].name,&stu[i].sex); for(j=0;j<5;j++) scanf("%d",&stu[i].score[j]); scanf("%d",&stu[i].ave); save(); } } void list() { int i,j; clrscr(); printf("\t**********************student****************************\n"); printf("num name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) { printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } if((i+1)%10==0) { printf("\npress any key continue.......\n"); getch(); } printf("\t*************************end*********************************\n"); } void average() { int i,j; float sum[M]; for(i=0;i<M;i++) for(j=0;j<5;j++) sum[i]+=stu[i].score[j]; stu[i].ave=sum[i]/5.0; } void search_num() { long num; int i,j; printf("\nplease enter number which you want to search:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) if(stu[i].num!=num) printf("The number is not exist\n"); else { printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } } void search_nam() { int i,j; char name[20]; printf("\nplease enter name which you want to search:"); scanf("%s",&name); printf("\n"); for(i=0;i<M;i++) if(strcmp(stu[i].name,name)==0) { printf("number name sex math English PE maolun majing average:\n"); printf("%ld%s%c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } else printf("\nThe name is not exist!!!\n"); } void search_ave() { int i,j,a=0; float k; printf("please enter average score which you want to search:"); scanf("%f",&k); printf("\n"); for(i=0;i<M;i++) if(stu[i].ave!=k) printf("The average score is not exist!!!\n"); else for(i=0;i<M;i++) { if(stu[i].ave<=k) printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); a++; } } void sort() { int i,j; struct student temp; for(i=0;i<M;i++) for(j=i+i;j<M;j++) if(stu[i].ave<stu[j].ave) {temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } void save() { int i; FILE *fp; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } for(i=0;i<M;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void delect() { int i,t; long num; printf("please enter number which you want to delect:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) { if(stu[i].num!=num) printf("The number is not exist!!!\n"); if(stu[i].num==num) t=i; } for(i=t;i<M;i++) stu[i]=stu[i+1]; save(); } void insert() {FILE *fp; int i,n,t; struct student s; printf("please input record\n"); printf("number name sex math English PE maolun majing average\n"); scanf("%ld,%s,%c,%d%d%d%d%d%d",&s.num,s.name,&s.sex,&s.score[0],&s.score[1],&s.score[2],&s.score[3],&s.score[4],&s.ave); s.ave=(s.score[0]+s.score[1]+s.score[2]+s.score[3]+s.score[4])/3.0; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } i=M; for(t=0;stu[i].ave>s.ave&&t<M;t++) if(fwrite(&s,sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void MainMenu() {clrscr(); printf("\t********************************************************************\n \n); Printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1. search record\n"); printf("\t 2. sort record\n"); printf("\t 3. insert record\n"); printf("\t 4. delect record\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t********************************************************************\n"); } void menu_select() {clrscr(); printf("\t******************************************************************\n\n"); printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1.1 search by number\n"); printf("\t 1.2 search by name\n"); printf("\t 1.3 search by average score\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t******************************************************************\n"); } void search() { char ch; clrscr(); menu_select(); ch=getch(); switch(ch) { case '1':search_num();break; case '2':search_nam();break; case '3':search_ave();break; } } main() { char ch; clrscr(); init(); input(); list(); average(); save(); MainMenu(); ch=getch(); switch(ch) { case '1':search();break; case '2':sort();break; case '3':insert();break; case '4':delect();break; } search_num(); search_nam(); search_ave(); sort(); delect(); insert; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值