




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、沈 阳 航 空 工 业 学 院 课程设计 学 号 2 班 级 姓 名 白 冰 指导教师 吴 杰 宏2007年 09 月 16 日沈阳航空工业学院课程设计任务书院系:电子信息工程 专业:电子信息工程 班级:学号:2 题目:学生成绩管理系统(2) 一、课程设计时间200809第1学期第2周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:1录入学生数据信息(不用考虑学期);2根据学号删除某生信息;3能够计算平均分并显示所有学生名次。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“学生信息录入”、“删除(
2、按照学号)”、“计算平均分并显示名次”、“退出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段5四、个人总结20五、参考文献20六、源程序21一、需求分析通过对题目的分析,这个课程设计主要分为三个部分。1 录入学生信息。(定义学生结构体,定义结构体变量之后输入学生的相关信息并且保存到文件中)2删除学生信息(读取学生信息并且判断学生学号与
3、要删除的学生学号是否相同,然后删除学生信息)3能够计算平均分并显示名次 (计算学生平均分并排序显示名次)。二、流程图1 主函数开始录入学生信息计算学生平均分并显示名次 退出删除学生信息2 录入学生信息开始定义文件类型指针 ,建立文件.定义整型变量i=0,num.输入录入的学生个数numi是否小于num输入一名同学的学生信息关闭文件退出否是2 删除学生信息 开始定义文件类型指针,建立文件输入删除学生的学号学号是否相符 删除成功否判断文件是否结束是否退出是未找到信息 3. 计算平均分显示名次 开始读入所有文件stui冒泡法排序打开文件是否失败 是 否打开文件失败写入ni0 写入你 i是否小于0 否
4、 是写入 成绩 输出各科成绩及平均分关闭文件退出三、核心技术的实现说明及相应程序段include /*字节流*/#include /*字符串*/#include /*输入输出*/#define N 20/*定义学生结构体*/struct student char num20; /*编号*/ char name10; /*姓名*/ float english; /*英语成绩*/ float computer; /* 计算机成绩*/ float math; /*数学成绩*/float zong; 总分;int n;1、录入考生信息,包括考生姓名 、学号、计算机、数学、英语成绩,以便执行后续过程vo
5、id add() /*添加学生信息*/ /*定义文件指针*/ FILE *fp; int i,j;/* 定义学生结构体变量 */ struct student stu;/* 建立文件 */ if(fp=fopen(e:student.txt,w+)!=NULL) printf(请输入要添加的学生数量,按回车键确认:); scanf(%d,&n); for(i=1;i=n;i+) printf(n请输入第%d个学生的学号、姓名,用空格分开,并按回车键确认:n,i); scanf(%s%s,stu.num,); printf(n请输入第%d个学生的英语、计算机,数学三科成绩,用空格
6、分开,并按回车键确认:n,i); scanf(%f%f%f%f,&stu.english,&puter,&stu.math); stu.zong=stu.math+puter+stu.english;/*向文件中输入信息 */ fprintf(fp,%st%st%ft%ft%ft%ft%fn,stu.num,,stu.math,puter,stu.english, stu.zong); /*关闭文件 */ fclose(fp);2、删除学生信息,根据学号对学生信息进行删除,输入学生学号,在文件中读取所有学生信息并且将学生信息写入到结构体中,输入学生。判断学号是否相同,当相同时记
7、录位置并且将以后的学生信息前移。void del() FILE *fp; int i=0,k,num; float temp; char number20,pp20; /*定义学生结构体数组*/ struct student stu50; printf(n请输入删除学生的学号 :); scanf(%s,number); printf(n); fp=fopen(e:student.txt,r+); /*判断文件是否结束 */ while(!feof(fp) fscanf(fp,%st%st%ft%ft%ft%ft%fn,stui.num,,&stui.math,&stui.co
8、mputer,&stui.english, &stui.zong); /*学号是否相同断 */ if(strcmp(stui.num,number)=0) k=i; i+; num=i; num=num-1; for(i=k;inum;i+) /* 学号前移 */ strcpy(pp,stui.num); strcpy(stui.num,stui+1.num); strcpy(stui+1.name,pp); strcpy(pp,); strcpy(,stui+1.name); strcpy(stui+1.name,pp); temp=stui.englis
9、h; stui.english=stui+1.english; stui+1.english=temp; temp=stui.math; stui.math=stui+1.math; stui+1.math=temp; temp=puter; stui.yuwen=stui+1.computer; stui+1.computer=temp; temp=stui.zong; stui.zong=stui+1.zong; stui+1.zong=temp; fclose(fp); /*重新建立文件 */ fp=fopen(e:student.txt,w+); for(i=0;inu
10、m;i+) fprintf(fp,%st%st%ft%ft%ft%ft%fn,stui.num,,stui.math,puter,stui.english,stui.zong); printf(%st%st%ft%ft%ft%ft%fn,stui.num,,stui.math,puter,stui.english, stui.zong); fclose(fp);3计算平均分并显示名次void sort() FILE *fp; struct student stuN,temp; int i,j,n; reads(stu,&n);
11、 for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(stuj.english+puter+stuj.mathstuj+1.english+stuj+1.computer+stuj+1.math) strcpy(temp.num,stuj.num); strcpy(,); temp.english=stuj.english; puter=puter; temp.math=stuj.math; strcpy(stuj.num,stuj+1.num); strcpy(,stuj+1.na
12、me); stuj.english=stuj+1.english; puter=stuj+1.computer; stuj.math=stuj+1.math; strcpy(stuj+1.num,temp.num); strcpy(stuj+1.name,); stuj+1.english=temp.english; stuj+1.computer=puter; stuj+1.math=temp.math; if(fp=fopen(c:student.txt,wb)=NULL) printf(打开文件失败!); return; putw(n,fp); j=1;
13、 for(i=0;in;i+) fwrite(&stui,sizeof(struct student),1,fp); if(stui.english+puter+stui.math=stui+1.english+stui+1.computer+stui+1.math) printf(n%3d%5s%5s%8.2f%8.2f%8.2f%9.2fn,j,stui.num,,stui.english,puter,stui.math,(stui.english+puter+stui.math)/3); else printf(n%3d%
14、5s%5s%8.2f%8.2f%8.2f%9.2fn,j+,stui.num,,stui.english,puter,stui.math,(stui.english+puter+stui.math)/3); fclose(fp); getch(); 主函数 其功能是调用各个功能函数void main() int n; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n) case 1: add();break; case 2: del();break;
15、case 3: sort();break; case 4: exit(0); default: printf(输入错误,请输入列表中存在的序号!n ); 四、个人总结 通过一个这几天的努力,使我学到了基本的C语言知识。加深了对数据组织的认识。熟练掌握了结构体的综合运用。我对C语言程序设计的思路和方法有了更深入的了解和清醒的认识,加深了我对C语言中算法,数据类型,运算符与表达式,程序结构设计,循环控制,函数,指针,结构体,文件等方面的应用能力,使我基本掌握了设计程序的思路,能够独立编写并调试一些简单的程序。通过这次课程设计不仅使我学习到了有关C语言知识,还使我懂得了有关数据结构,这次课为我今后在
16、计算机方面的学习奠定了坚实的基础。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include#include#include#include#define N 20struct studentchar num20; char name10; float english; float computer; float math;void menu();void reads();void add();void del();void sort();void exit();void main() int
17、n; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n) case 1: add();break; case 2: del();break; case 3: sort();break; case 4: exit(0); default: printf(输入错误,请输入列表中存在的序号!n ); void menu()printf( * banjichangjiguanlixitong* ); printf(n 1 添加学生数据); printf(n 2 删除学生数据); printf(n 3 三科平均
18、分排序); printf(n 4 退出);void reads(struct student stuN,int *n) FILE *fp; int i=0; if(fp=fopen(c:student.txt,rb)=NULL) printf(wenjiandakaishibai!n); return; else *n=getw(fp); for(i=0;i*n;i+) fread(&stui,sizeof(struct student),1,fp); fclose(fp);void add()FILE *fp; int n,i,j; struct student stu; if(fp=fop
19、en(c:student.txt,rb+)!=NULL) j=getw(fp); rewind(fp); printf(请输入要添加的学生数量,按回车键确认n:); scanf(%d,&n); putw(j+n,fp); fseek(fp,0L,2); for(i=1;i=n;i+) printf(n请输入第%d个学生的学号、姓名,用空格分开,并按回车键确认:n,i); scanf(%s%s,stu.num,); printf(n请输入第%d个学生的英语、计算机和数学三门成绩,用空格分开,并按回车键确认:n,i); scanf(%f%f%f,&stu.english,&pute
20、r,&stu.math); fwrite(&stu,sizeof(struct student),1,fp); else if(fp=fopen(c:student.txt,wb)!=NULL) printf(请输入要添加的学生数量,按回车键确认:); scanf(%d,&n); putw(n,fp); for(i=1;i=n;i+) printf(n请输入第%d个学生的学号、姓名,用空格分开,并按回车键确认:n,i); scanf(%s%s,stu.num,); printf(n请输入第%d个学生的英语、计算机和数学三门成绩,用空格分开,并按回车键确认:n,i); scanf
21、(%f%f%f,&stu.english,&puter,&stu.math); fwrite(&stu,sizeof(struct student),1,fp); fclose(fp);void del() struct student stuN; char number20; FILE *fp; int n,i,j; reads(stu,&n); printf(n请输入要删除信息的学生学号,按回车键确认:); getchar(); scanf(%s,number); for(i=0;i=n) printf(没有找到该学生信息!n); return; elsefor(j=i+1;jn;j+)
22、strcpy(stuj-1.num,stuj.num); strcpy(,); stuj-1.english=stuj.english; puter=puter; stuj-1.math=stuj.math; if(fp=fopen(c:student.txt,wb)=NULL) printf(文件打开失败!); return; else putw(n-1,fp); for(i=0;in-1;i+) fwrite(&stui,sizeof(struct student),1,fp); fclose(fp); print
23、f(删除成功!n);void sort() FILE *fp; struct student stuN,temp; int i,j,n; reads(stu,&n); for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(stuj.english+puter+stuj.mathstuj+1.english+stuj+1.computer+stuj+1.math) strcpy(temp.num,stuj.num); strcpy(,); temp.english=stuj.english; puter=puter; temp.math=stuj.math; strcpy(stuj.num,stuj+1.num); str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025汽车销售合同范本(详细版)范文
- 港口岸线生态修复与绿化建设方案
- 2025家用电器买卖合同
- 2025解除、终止劳动合同协议书范文
- 毕业论文(设计)致谢10篇
- 2025年安全生产大检查总结(3篇)
- 毕业论文致谢合集6篇
- 2025年营养学膳食营养计划制定操作规范模拟考试卷答案及解析
- 供水管网压力调控优化方案
- 2025年神经外科脑血管意外急救处理模拟试卷答案及解析
- QGDW10936-2018物料主数据分类与编码规范
- 煤气中毒急救方法与处理流程
- 第11课《岳阳楼记》课件-统编版语文九年级上册
- 大学生劳动教育论文2000字论文
- 广东省广州市2023-2024学年二年级下学期数学期末试卷(含答案)
- 机器学习赋能空间环境:特征识别与深度分析的创新探索
- 2025-2030年中国压裂砂行业市场现状供需分析及投资评估规划分析研究报告
- 新浙教版九年级上科学教学计划与实施细则
- 基础公共卫生知识试题及答案
- 房车购买合同协议书
- 2025年高考语文备考之语用新题型得名方式、构词方式辨析专题指导与巩固训练
评论
0/150
提交评论