365文库
登录
注册
2

学生成绩查询系统课程设计报告

378阅读 | 18收藏 | 17页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
2
学生成绩查询系统课程设计报告第1页
学生成绩查询系统课程设计报告第2页
学生成绩查询系统课程设计报告第3页
学生成绩查询系统课程设计报告第4页
学生成绩查询系统课程设计报告第5页
学生成绩查询系统课程设计报告第6页
学生成绩查询系统课程设计报告第7页
学生成绩查询系统课程设计报告第8页
学生成绩查询系统课程设计报告第9页
学生成绩查询系统课程设计报告第10页
学生成绩查询系统课程设计报告第11页
学生成绩查询系统课程设计报告第12页
学生成绩查询系统课程设计报告第13页
学生成绩查询系统课程设计报告第14页
学生成绩查询系统课程设计报告第15页
学生成绩查询系统课程设计报告第16页
学生成绩查询系统课程设计报告第17页
福利来袭,限时免费在线编辑
转Pdf
right
1/17
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
归女 上传于:2024-06-14
学生成绩管理系统 学 院 计算机科学与技术 专 业 计算机科学与技术(师范) 学 号 学 生 姓 名 指导教师姓名 2012年9月 18 日 一、设计目的与内容 设计一个学生成绩管理系统,通过系统可以输入学生记录(包括 学号、姓名、C 语言成绩、英语成绩、高数成绩、总分、平均分和名次等),然后查询学生记录,并可以更新(修改、删除、插入、排序)和输出学生记录。 二、算法的基本思想 (此处可加框图描述基本功能模块) 1. 学生记录应该包括学号、姓名、C 语言成绩、英语成绩、高数成绩、总分、平均分和名次等信息,是本程序的核心数据结构,定义如下: struct student { char name[10];//姓名 int number;//学号 float cscore;//c语言成绩 float enscore;//英语成绩 float mascore;//高数成绩 float sum;//总分 float average;//平均分 int mingci;//名次 }; 程序应具有以下基本功能: (1)以菜单形式显示主界面,提示用户进行选择,完成相应任务,如图 1-1 所示  (2)输入记录:将学生记录存入单链表中,记录可从以二进制形式存储的数据文件中读入, 也可以从键盘逐个录入。 (3) 查询记录:在文件中查找满足相关条件的学生记录。用户可以按学生的学号或姓名进行查找。 (4)更新记录:完成对学生记录的修改、删除、插入和排序操作。执行更新后,需要将修 改的记录重新存入数据文件中。 (5)统计记录:完成对不及格人数及各门功课最高分的统计。 输出记录:实现对学生记录的存盘操作并将其以表格的形式在屏幕上显示出。 三、主要功能模块流程图 用指针对总成绩排序,定义函数如下: //函数功能:实现按总成绩排序 void sore(struct student *parr,int len) { int i,j; struct student t; for( i = 0; i < len - 1; i++) { for(j = 0; j < len; j++) if( parr[j+1].sum > parr[j].sum ) { t = parr[j+1]; parr[j+1] = parr[j]; parr[j] = t; } } output(parr,&len); return; } 流程图如下          四:系统测试 程序运行实例如下: 选择1,写入学生信息,运行界面如下:  选择2,查看学生信息,运行界面如下:  选择3,按总成绩排序,运行界面如下:  选择4,按学号查找,运行界面如下: 选择5,修改学生信息,运行界面如下: 6.选择7,保存,运行界面如下:  五、结论 该函数用链表的形式,完成了如下功能: 1.系统使用菜单,所有功能可以反复使用。用户界面使用方便、简洁明了、美观大方、格式统一。 2.使用文件进行存储和管理。程序启动时可从文件中读取学生成绩信息, 或从键盘输入学生成绩信息;运行过程中如添加或删除记录时也可对文件进 行存取;退出前可根据需要提醒是否保存学生成绩信息到文件中。 3.通过命令行相应选项能直接进入某个相应菜单选项的功能模块。 六、源程序及系统文件使用说明 # include # include # include # include # include void menu(struct student *parr,int len); void sore(struct student *parr,int len); void output(struct student *parr,int *len); void input(struct student *parr,int len); void write(struct student *parr,int len); void read(struct student *parr,int len); void find(struct student *parr,int len); void logout(struct student *parr,int len); void exit(struct student *parr,int len); void modify(struct student *parr,int len); void insert(struct student*parr,int *len); struct student { char name[10];//姓名 int number;//学号 float cscore;//c语言成绩 float enscore;//英语成绩 float mascore;//高数成绩 float sum;//总分 float average;//平均分 int mingci;//名次 }; int main(void) { struct student * parr; int len = 0; char ch = '\0'; printf("请输入需要存入的学生人数:"); scanf("%d",&len); parr = (struct student *)malloc((sizeof(struct student) * len)); menu(parr, len); printf("按回车键继续
"); while(1) { system("cls"); printf("



"); printf("\t\t|******************************************|
"); printf("\t\t|--------------- 学生管理系统 -------------|
"); printf("\t\t|------------ 1.写入学生信息 ---------|
"); printf("\t\t|------------ 2.查看全部学生信息 ---------|
"); printf("\t\t|------------ 3.按总成绩排序 ---------|
"); printf("\t\t|------------ 4.按学号查找 ---------|
"); printf("\t\t|------------ 5.修改学生信息 ---------|
"); printf("\t\t|------------ 6.添加学生 ---------|
"); printf("\t\t|------------ 7.保存 ---------|
"); printf("\t\t|------------ 0.退出 ---------|
"); printf("\t\t|******************************************|
"); printf("\t\t
"); scanf(" %c",&ch); switch(ch) { case '1' : input(parr,len); break; case '2' : output(parr,&len); break; case '3' : sore(parr,len); break; case '4' : find(parr,len); break; case '5' : modify(parr,len); break; case '6' : insert(parr,&len); break; case '7' : write(parr,len); break; case '0' : exit(parr,len); break; default : printf("
\t输入错误!按回车键返回主菜单!"); getch(); } } free(parr); return 0 ; } //函数功能:实现按总成绩排序 void sore(struct student *parr,int len) { int i,j; struct student t; for( i = 0; i < len - 1; i++) { for(j = 0; j < len; j++) if( parr[j+1].sum > parr[j].sum ) { t = parr[j+1]; parr[j+1] = parr[j]; parr[j] = t; } } for( i = 0; i < len - 1; i++) parr[i].mingci=i+1; output(parr,&len); return; } //函数功能:打印信息 void output(struct student *parr,int *len) { int i; printf("姓名\t学号\tc语言\t英语\t高数\t总分\t平均分\t名次
"); for(i = 0;i < *len; i++) printf("%-6s\t%4d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d
",parr[i].name,parr[i].number,parr[i].cscore,parr[i].enscore,parr[i].mascore,parr[i].sum,parr[i].average,parr[i].mingci); getchar(); getchar(); return; } //函数功能:输入数据 void input(struct student *parr,int len ) { int i; for( i = 0; i < len; i++) { printf("请输入第%d个学生信息:",i + 1); printf("姓名:"); scanf("%s",parr[i].name);//name是数组名 本身就是地址 printf("学号:"); scanf("%d",&parr[i].number); printf("c语言成绩: "); scanf("%f",&parr[i].cscore); printf("英语成绩"); scanf("%f",&parr[i].enscore); printf("高数成绩:");scanf("%f",&parr[i].mascore); printf("总分"); parr[i].sum=parr[i].cscore+parr[i].enscore+parr[i].mascore; printf("%.2f
",parr[i].sum); printf("平均分"); parr[i].average=parr[i].sum/3; printf("%.2f
",parr[i].average); parr[i].mingci=0; printf("
"); } printf("
"); return; } /*函数功能:将数据写入文件*/ void write(struct student *parr,int len) { int i;//控制循环 FILE *fp = NULL;//定义文件指针 fp = fopen("D:\\student.txt","w");//打开文件并使文件指针指向它,以写的方式 if(fp == NULL)//如果文件没有打开,提示错误并退出 { printf("
\t文件没有打开!程序结束!"); getchar();//等待用户观察 exit(0);//结束整个程序 } else { for(i=0; i"); getch(); fclose(fp); return; } /*函数功能:读取文件数据*/ void read(struct student *parr,int len) { int i; FILE * fp = NULL; fp = fopen("D:\\student.txt","r");//以只读的方式打开文件 if(fp == NULL) { printf("数据读取失败!
"); getchar(); exit(0); } else { for(i=0; i"); printf("%-6s\t%4d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d
",parr[i].name,parr[i].number,parr
tj