




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生成绩管理系统实验报告一、实验内容实验名称:学生成绩管理系统实验目的:1)利用所学的三种程序基本结构以及数组、用户自定义函数进行一个简单管理系统的设计,进一步理解和掌握c语言的语法以及三种基本程序结构的综合应用。2)通过程序中涉及的排序、查找、求和等操作加深对算法、程序设计思路、常用程序设计技巧的理解与掌握,逐步培养学生的程序开发能力。实验的基本要求:学号(字符串)、姓名(字符串)、数学成绩(整型)、程序设计成绩(整型)。设计程序完成以下五项功能:新建数据档案、添加数据、删除数据、对输入的数据进行排序和查询。二、算法说明将数学成绩、程序设计成绩、姓名、学号分别设一个数组,其中姓名和学号是二维数组,其他是一维数组,并设为全局变量方便使用。分别将各个功能以及菜单等功能设置为函数,介时调用。主函数中运行菜单函数。菜单函数中提供选择用switch语句调用函数。1、新建数据build()。用文档导入的方式导入数据。2、添加数据add()。界面出现相应信息并提示输入。输入完成后用if语句选择是否再添加数据。如果选择是则继续调用add函数,否则调用print函数继续选择其他功能。用全局变量m来计算增加的次数。3、删除数据rid()。用swith语句选择是按姓名删除还是按学号删除或者返回主菜单。按姓名则输入想要删除的对象,用for语句找到对象后,再用stremp赋值的方法将下一个信息往上一个位置移动,达到覆盖要删除的信息的效果。最后用for循环输出。按学号删除也是同理。用全局变量m来计算删除的次数4、排序arrange()。用swith语句选择是按数学成绩arr_math(),程序设计成绩arr_design()还是总分arr_total()。按数学成绩排序时用冒泡排序的方法排列数学成绩,同时其他的姓名、学号的信息的下标也随着数学成绩的下标变动,最后用for语句一起输出。按程序设计以及总分的具体算法也是同理。每个程序后调用arrange()返回上级子菜单以便继续操作。5、查询search()。也用switch语句选择是按学号s_code()、姓名s_name()、数学成绩s_math()、程序设计成绩s_design()、总分s_total()查找。按学号则是输入学号,用if语句查找,输出该位置所对应的成绩以及姓名。按姓名、成绩查找也是同理。按成绩查找时用到flag=0标记,找到至少一个flag=1输出,否则flag=0时输出不存在。并重新调用search()函数返回上级子菜单。6、退出。三、程序清单#include#define N 5#define M 100 int i,j,m=N-1,k,choice; /*全局变量*/ int mathM; int designM; char name50M; char code50M; int totalM; void print() /*菜单函数*/ void build(); void add(); void arrange(); void search(); void rid(); printf( 欢迎使用学生成绩管理系统!n); printf(1.新建数据n2.添加数据n3.删除数据n4.排序n5.查询n6.退出n请选择:); scanf(%d,&choice); switch(choice) case 1: build();break; case 2: add();break; case 3: rid();break; case 4: arrange();break; case 5: search();break; case 6:break; void build() /*新建数据*/ FILE*cp; FILE*np; FILE*mp; FILE*dp; np=fopen(d:code.txt,r); /*导入文件*/ for(i=0;iN;i+) fscanf(np,%s,codei); cp=fopen(d:name.txt,r); for(i=0;iN;i+) fscanf(cp,%s,namei); mp=fopen(d:math.txt,r); for(i=0;iN;i+) fscanf(mp,%d,&mathi); dp=fopen(d:design.txt,r); for(i=0;iN;i+) fscanf(dp,%d,&designi); for(i=0;iN;i+) totali=mathi+designi; char select; printf(学号 姓名 数学 程序设计 总分n); for(i=0;iN;i+) printf(%s %4s %4d %4d %4dn,codei,namei,mathi,designi,totali); printf(成功!n); print(); void add() /*添加数据函数*/ char select; m+; printf(请输入信息); printf(请输入学号:); scanf(%s,codem); printf(请输入姓名:); scanf(%s,namem); printf(请输入数学成绩:); scanf(%d,&mathm); printf(请输入程序设计成绩:); scanf(%d,&designm); totalm=mathm+designm; for(i=0;i=m;i+) printf(%s %s %d %d %dn,codei,namei,mathi,designi,totali); printf(是否继续Y/N?); getchar(); scanf(%c,&select); if(select=y|select=Y) add(); else print(); void name_rid() /*按名字删除函数*/ void rid(); m-; char name210,select; printf(输入您要删除姓名:); scanf(%s,name2); for(i=0;i=m+1;i+) if(strcmp(name2,namei)=0) for(j=i;j=m;j+) strcpy(codej,codej+1); strcpy(namej,namej+1); mathj=mathj+1; designj=designj+1; for(i=0;i=m;i+) printf(%s %s %4d %4d %4d n,codei,namei,mathi,designi,totali); printf(是否继续Y/N?); getchar(); scanf(%c,&select); if(select=y|select=Y) name_rid(); else rid(); void code_rid() /*按学号删除函数*/ void rid(); m-; char NO10; int select; printf(输入您要删除的学号:); scanf(%s,&NO); for(i=0;i=m+1;i+) if(strcmp(NO,codei)=0) for(j=i;j=m;j+) strcpy(codej,codej+1); strcpy(namej,namej+1); mathj=mathj+1; designj=designj+1; for(i=0;i=m;i+) printf(%s %s %4d %4d %4d n,codei,namei,mathi,designi,totali); printf(是否继续Y/N?); getchar(); scanf(%c,&select); if(select=y|select=Y) code_rid(); else rid(); void rid() /*删除数据总函数*/ int select; printf(1.按姓名n2.按学号n3.返回主菜单n请选择:); scanf(%d,&select); switch(select) case 1: name_rid();break; case 2:code_rid();break; case 3:print(); break; default:break; void arr_math() /*按数学成绩排序函数*/ void arrange(); int temp1; char str1100,str2100; for(j=0;j=m-1;j+) for(i=0;i=m-1-j;i+) if(mathimathi+1) temp1=mathi; mathi=mathi+1; mathi+1=temp1; strcpy(str1,namei); strcpy(namei,namei+1); strcpy(namei+1,str1); strcpy(str2,codei); strcpy(codei,codei+1); strcpy(codei+1,str2); printf(按数学成绩排序n); for(i=0;i=m;i+) printf(%s %s %4dn,codei,namei,mathi); arrange(); void arr_design() /*按程序设计成绩排序*/ void arrange(); int temp1; char str1100,str2100; for(j=0;j=m-1;j+) for(i=0;i=m-1-j;i+) if(designidesigni+1) temp1=designi; designi=designi+1; designi+1=temp1; strcpy(str1,namei); strcpy(namei,namei+1); strcpy(namei+1,str1); strcpy(str2,codei); strcpy(codei,codei+1); strcpy(codei+1,str2); printf(按程序设计成绩排序n); for(i=0;i=m;i+) printf(%s %s %4dn,codei,namei,designi); arrange(); void arr_total() /*按总分排序*/ void arrange(); int temp1; char str1100,str2100; for(j=0;j=m;j+) for(i=0;i=m-1-j;i+) if(totalitotali+1) temp1=totali; totali=totali+1; totali+1=temp1; strcpy(str2,codei); strcpy(codei,codei+1); strcpy(codei+1,str2); strcpy(str1,namei); strcpy(namei,namei+1); strcpy(namei+1,str1); printf(总分排序/n); for(i=0;i=m;i+) printf(%s %s %4dn,codei,namei,totali); arrange(); void arrange() /*排序的总函数*/ int select; printf(1.数学成绩排序n2.程序设计成绩排序n3.总分排序n4.返回主菜单n); scanf(%d,&select); switch(select) case 1:arr_math();break; case 2:arr_design();break; case 3:arr_total();break; case 4:print();break; void s_code() /*按学号查找函数*/ void search(); char NO10;int flag=0; printf(请输入学号:); scanf(%s,NO); for(i=0;i=m;i+) if(strcmp(NO,codei)=0)flag=1; printf(%s %s %4d %4d %4dn,codei,namei,mathi,designi,totali); if(flag=0) printf(不存在n欢迎继续使用!n);search(); else printf(欢迎继续使用!n);search(); void s_name() /*按姓名查找函数*/ void search(); char name210;int flag=0; printf(请输入姓名:); scanf(%s,name2); for(i=0;i=m;i+) if(strcmp(name2,namei)=0) flag=1;printf(%s %s %4d %4d %4dn,codei,namei,mathi,designi,totali); if(flag=1) printf(欢迎继续使用!n);search(); else printf(不存在n欢迎继续使用!n);search(); void s_math() /*按数学成绩查找*/ void search(); int mark,flag=0; printf(请输入数学成绩:); scanf(%d,&mark); for(i=0;i=m;i+) if(mark=mathi) flag=1; printf(%s %s %4d %4d %4dn,codei,namei,mathi,designi,totali); search(); if(flag=0) printf(不存在n欢迎继续使用!n); search(); void s_design() /*按程序设计成绩查找*/ void search(); int mark,flag=0; printf(请输入程序设计成绩:); scanf(%d,&mark); for(i=0;i=m;i+) if(mark=designi) flag=1; printf(%s %s %4d %4d %4dn,codei,namei,mathi,designi,totali); search(); if(flag=0) printf(不存在n欢迎继续使用!n); search(); void s_total() /*按总分查找*/ void search(); int mark,flag=0; printf(请输入总分:); scanf(%d,&mark); for(i=0;i=m;i+) if(mark=totali) flag=1; printf(%s %s %4d %4d %4dn,codei,namei,mathi,designi,totali); search(); if(flag=0) printf(不存在n欢迎继续使用!n); search(); void search() /*查找总函数*/ int select; printf(1.学号查询n2.姓名查询n3.数学成绩查询n4.程序设计成绩查询n5.总分查询n6.返回主菜单n); scanf(%d,&select); switch(select) case 1:s_code();break; case 2:s_name();break; case 3:s_math();break; case 4:s_design();break; case 5:s_total();break; case 6:print();break; void main() /*主函数*/ print();四、运行结果运行界面,显示“欢迎您使用学生成绩管理系统”,并提供菜单,供选择。1、新建数据:输出按序号排列的学生姓名、成绩。2、添加数据:输入相关信息后,界面输出添加后的学号、姓名、成绩(数学,程序设计和总分)列表。并提示成功,要求选择是否继续,若继续则继续先前输出的提示信息,否则返回显示主菜单。3、删除数据:输入相关信息后,界面输出删除后的学号、姓名、成绩(数学,程序设计和总分)列表。并提示成功,提供选择是否继续。若继续则继续先前输出的提示信息,否则返回上级子菜单。4、排序。界面要求选择按数学成绩还是程序设计成绩排序,或者返回主菜单。选择数学成绩后,输入数学成绩,最后显示按数学成绩的、从高到低排列的各个学生的学号、姓名和数学成绩。程序设计也是类似。排序完成后,提示成功并返回上级子菜单,继续
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电力安全常识知识测试题及答案
- 2025年幕墙员工考试题库及答案
- 高铁纵向便道施工合同(3篇)
- 高炮广告牌施工协议合同(3篇)
- 高空作业工程合同模板(3篇)
- 高空门头施工要求合同(3篇)
- 安徽省辅警笔试题型及答案
- 安徽成人高考试题及答案
- 安防知识考试试题及答案
- 出差期间医疗及保险保障协议
- 第三单元小数除法(单元复习讲义)教师版-2024-2025学年五年级上册(人教版)
- 2025年上海市高考语文专项复习:识记背诵默写
- 人教版(2024新版)七年级上册英语Starter Unit1单元测试卷(含答案)
- 化粪池清底服务合同
- TGXAS-松阔混交林培育技术规程编制说明
- 幼儿园的食品安全工作计划
- (新教科版)科学五年级上册全册教学反思
- 职业技术学院《老年常见疾病预防与照护》课程标准
- 2025年高考语文备考之语言文字运用汇编(2)含答案
- 什么比猎豹的速度更快课件
- GB/T 30306-2024家用和类似用途饮用水处理滤芯
评论
0/150
提交评论