版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计基础课程设计报告课程名称:程序设计基础课程设计 课程设计题目:学生信息管理姓 名:张锦茹系:计算机科学技术系专 业:软件技术年 级:11级1班学 号:指导教师:赵玉霞职 称:讲师 2011年1月3日 1、 设计算法设计分析。包含程序有哪几个主要功能模块、主要功能模块的流程图及涉及的知识点等。对于此学生信息系统管理,我们的程序中会用到文件的应用,虽然基础但是需要我们能够正确的掌握其用法,还有包括的知识点有结构体的正确应用,对于排序,要掌握一种排序方法。信息的初始化需要导入一个文件,文件当中有学生的信息,后续的所有操作都以这个文件为基础。程序中包括学生信息的读取,成绩的排序(或者是学号的排
2、序),信息的添加、修改、查找,一门成绩的总分以及平均分,将学生信息保存到文件中。1)学生信息的初始化(可以从文件获取),并输出结果判断i是否小于n开始打开文件,输入学生数n用scanf()函数输入信息提示信息要输入的信息结束关闭文件i=n 2)学生信息的添加、修改、查找在主界面选择查找学生信息从文件中读入数据循环查找指定学生的姓名for(i=0;in;i+)输入查找的学生姓名是否查找到要查找的记录输出查找到的记录结束没有找到查找找到在主界面选择添加学生信息从文件中读入数据循环查找指定学生的姓名for(i=0;in;i+)输入查找的学生姓名是否查找到要查找的记录添加学生信息,关闭文件结束找到没有
3、找到修改:把文件打开,找到要修改的信息,找到后挨个信息修改,修改完毕后,把所有信息都写入到文件中。3) 对学生信息按学号、成绩排序用冒泡法对学号及成绩排序4) 计算一门课的平均分和总分 打开文件,读取每个人的成绩信息,把所有人的各科成绩相加,求出各个成绩的总分,在用总分求平均值2、 程序编码实现。源代码与执行结果2部分#include#includestruct studentint num;char name10;int Math; int English;int PE; int score;typedef struct student STU;FILE *fp;void menu()/菜单
4、的打印*printf(*n); printf(1.学生信息的输出 $ 2.学生信息的查找n);printf(3.将学生信息的排序输出 $ 4.学生信息的添加n);printf(5.某学生的平均分和总分 $ 6.学生信息的修改n);printf(7.退出 n);printf(*n);void print(STU stu)/1.信息的输出int i;int n;if(fp=fopen(xin.txt, r)=NULL)printf(cant open the file!n);rewind(fp);fread(&n,sizeof(int),1,fp);printf(总人数:%dn,n);printf
5、(_n);printf(| 学号 | 名字 | 数学 | 英语 | 体育 | 总分 |n);printf(-n);for(i=0; in; i+)if(fread(&stui, sizeof(STU), 1, fp) != 1 )/*读入一个*/printf(file read error!);exit(1);printf(|%6d |%6s |%6d |%6d |%6d |%6d |n,stui.num, , stui.Math, stui.English, stui.PE,stui.score); printf(-n);fclose(fp);printf(*请输入任意键继
6、续*);getch();/使用户能够有时间看自己要看的内容system(cls);/清屏void find(STU stu)/2.信息的查找int i,j,x,n;int num;int flag=1;char name10;if(fp=fopen(xin.txt, r)=NULL)printf(cant open the file!n);rewind(fp);fread(&n,sizeof(int),1,fp);printf(总人数为:%dn,n);for(i=0; in; i+)if(fread(&stui, sizeof(STU), 1, fp) != 1 )/读入一个printf(fi
7、le read error!);exit(1);printf(要以名字查询请输入1,n要以学号查询请输入2。n请输入您要输入的数:);scanf(%d,&x);if(x=1)printf(请输入要查询的名字:);scanf(%s,name);if(x=2)printf(请输入要查询的学号(原有文件中的学号12101到12120之间):);scanf(%d,&num);for(j=0;jn;j+)if(x=1&strcmp(,name)=0|x=2&stuj.num=num)/要查的信息与文件中的信息相比较flag=0;printf(您要找的信息为。n);printf(_n);
8、 printf(| 学号 | 名字 | 数学 | 英语 | 体育 | 总分 |n); printf(-n);printf(|%6d |%6s |%6d |%6d |%6d |%6d |n,stuj.num, , stuj.Math, stuj.English, stuj.PE,stuj.score); printf(-n); if(flag=1)printf(您要查询的信息无。n);fclose(fp);printf(*请输入任意键继续*);getch();system(cls);void sort(STU stu)/3.学生信息的排序#int i,j,n,x;STU t;S
9、TU k;if(fp=fopen(xin.txt, r)=NULL)printf(cant open the file!n);rewind(fp);fread(&n,sizeof(int),1,fp); printf(总人数为:%dn,n);for(i=0; in; i+)if(fread(&stui, sizeof(STU), 1, fp) != 1 )/读入一个printf(file read error!);exit(1);printf(如果要按学号排序,请输入1,n 如果要按总分排序,请输入2。n 请输入你要输入的值:);scanf(%d,&x);if(x=1)printf(_n);
10、printf(| 学号 | 名字 | 数学 | 英语 | 体育 | 总分 |n); printf(-n);for(i=1;i0;j-)if(stuj.numstuj-1.num) t=stuj; stuj=stuj-1; stuj-1=t;/t为结构体,为的是能够把学号以及其他信息都能排序,后面的k也是这个道理,两个都用的冒泡法 printf(|%6d |%6s |%6d |%6d |%6d |%6d |n,stui-1.num, , stui-1.Math, stui-1.English, stui-1.PE,stui-1.score); printf(-n);prin
11、tf(|%6d |%6s |%6d |%6d |%6d |%6d |n,stui-1.num, , stui-1.Math, stui-1.English, stui-1.PE,stui-1.score);printf(-n);if(x=2)printf(_n); printf(| 学号 | 名字 | 数学 | 英语 | 体育 | 总分 |n); printf(-n);for(i=0;ii;j-)if(stuj.scorestuj-1.score) k=stuj; stuj=stuj-1; stuj-1=k; printf(|%6d |%6s |%6d |%6d |%6d
12、 |%6d |n,stui.num, , stui.Math, stui.English, stui.PE,stui.score); printf(-n);fclose(fp);printf(*请输入任意键继续*);getch();system(cls);void add(STU stu)/4.信息的添加int j,n,i;int f=0;if(fp=fopen(xin.txt, a+)=NULL)printf(cant open the file!n);rewind(fp);fread(&n,sizeof(int),1,fp); printf(总人数为:%dn,n);for
13、(i=0; in; i+)if(fread(&stui, sizeof(STU), 1, fp) != 1 )/读入一个printf(file read error!);exit(1);printf(请输入插入学生的学号为(原有文件中的学号12101到12120之间):n);scanf(%d,&stun+1.num);for(j=0;jn;j+)if(stun+1.num=stuj.num)printf(对不起,该学号已存在,请检查后重新录入!n);f=1;break;if(f!=1)printf(请输入学生的姓名:n);scanf(%s,stun+1.name);printf(请输入学生的英
14、语成绩:n);scanf(%d,&stun+1.English);printf(请输入学生的数学成绩:n);scanf(%d,&stun+1.Math);printf(请输入学生的体育成绩:n);scanf(%d,&stun+1.PE); stun+1.score=stun+1.English+stun+1.Math+stun+1.PE;fwrite(&stun+1, sizeof(STU), 1, fp);/追加一个信息 fclose(fp);printf(*请输入任意键继续*);getch();system(cls);void aat(STU stu) /5.一门课的总分和平均分 int
15、i=0,n=1; int Mscore=0, Escore=0, Pscore=0;float Maver,Eaver,Paver;if(fp=fopen(xin.txt, r)=NULL)printf(cant open the file!n);rewind(fp);fread(&n,sizeof(int),1,fp);for(i=0; in; i+)if(fread(&stui, sizeof(STU), 1, fp) != 1 )printf(file read error!);exit(1);for(i=0;in;i+)Mscore = Mscore+ stui.Math;Escore
16、 = Escore+ stui.English; Pscore = Pscore + stui.PE;/用循环把每个科目的总分做出来 Maver = Mscore/(float)n;Eaver = Escore/(float)n;Paver = Pscore/(float)n; printf(_n);printf(| 科目 | 总分 | 平均分 |n);printf(-n);printf(| 数学 |%6d | %5.2f |n,Mscore,Maver);printf(-n);printf(| 英语 |%6d | %5.2f |n,Escore,Eaver); printf(-n);prin
17、tf(| 体育 |%6d | %5.2f |n,Pscore,Paver); printf(-n);fclose(fp);printf(*请输入任意键继续*); getch(); system(cls);void gai(STU stu)/6.修改学生信息int i,j,n,x;int mark,number;int flag=0;if(fp=fopen(xin.txt, r)=NULL)printf(cant open the file!n);rewind(fp);fread(&n,sizeof(int),1,fp);printf(总人数为%dn,n);for(i=0; in; i+)if(
18、fread(&stui, sizeof(STU), 1, fp) != 1 )/*读入一个*/printf(file read error!);exit(1); printf(请输入要改的学生的学号(原有文件中的学号12101到12120之间:n);scanf(%d,&number);for(j=0;jn;j+) if(number=stuj.num)flag=1;kai: printf(1 修改姓名n 2 修改英语成绩n 3 修改数学成绩n 4 修改体育成绩n 5 退出n);printf(请输入你的选择:); scanf(%d,&mark);switch(mark) case 1: prin
19、tf(请输入新的姓名:n); scanf(%s,); goto kai; case 2: printf(请输入新的英语成绩:n);scanf(%d,&stuj.English); goto kai; case 3: printf(请输入新的数学成绩:n); scanf(%d,&stuj.Math);goto kai; case 4: printf(请输入新的体育成绩:n); scanf(%d,&stuj.PE); goto kai;case 5:flag=3;break; default: printf(请在15选择!n);goto kai; if(flag=0) print
20、f(该学号不存在,请重新输入!n); if(flag=1) printf(确定要修改吗?yes请输入1,no请输入2:); scanf(%d,&x);if(x=1) rewind(fp); n=10; fwrite(&n,sizeof(int),1,fp); fwrite( stu, sizeof(STU), n, fp); fclose(fp); printf(*请输入任意键继续*);getch();system(cls);main()/主函数STU stu50;int x;start:menu();/菜单函数的引用*printf(请您输入您要看的信息序号:);scanf(%d,&x);switch(x) case 1: print(stu);/1.信息的输出 goto start; case 2:find(stu);/2.信息的查找goto start; case 3:sort(stu);/3.学生信息的排序# goto start;case 4:add(stu);/4.信息的添加goto start;case 5:aat(stu);/5一门成绩的总分以及平均分goto start;case 6:gai(stu);/6.修改学生信息goto start; case 7:/7.退出break;default:pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房产局办理业务责任制度
- 押运员工作责任制度范本
- 最高检察院责任制度
- 2026届湖北省八校高三上学期一模联考政治试题
- 2026年塔城职业技术学院单招职业倾向性考试题库完整答案详解
- 2026年天府新区航空旅游职业学院单招职业适应性考试题库带答案详解(典型题)
- 2026年应急管理局事业单位招聘试题及答案解析
- 就客户订单延期交付的沟通函9篇
- 零配件更换及时响应承诺书3篇范文
- 护理查房中的护理措施实施
- 人工智能训练师考试资料与备考建议
- 课件宝宝起名
- 现浇坞墙施工质量通病、原因分析及应对措施
- 2025-2030住房租赁市场监测指标体系与预警机制构建
- 达芬奇调色培训课件
- 2025-2030TPU材料在运动鞋领域应用拓展与性能优化方向
- 2025年9月20日云南省直机关遴选公务员笔试真题及答案解析
- 文物鉴定课件
- 电影欣赏社团课件
- 自动驾驶汽车上路安全评估报告
- 桌面应急预案演练脚本(2篇)
评论
0/150
提交评论