


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告学生学籍管理系统专业:信息管理与信息系统班级:学号: 姓名:学生学籍管理系统一、实验要求:一个班级有若干名学生 不超过10名),共有三门课程,分别是语文、数 学、英语,要求编写一个成绩的管理系统,每个学生要求有学号、姓名、性 别、三门课的成绩以及平均成绩,要实现从键盘上输入学号 必须为数字)、姓名、性别、三门课程的成绩,并求每一位学生的平均成绩 即每一行的平均值)、每一位学生的最高分 每一行的最大值),求每一门课程的平均分 即每 一列的平均值)、每一门课的最高分 即每一列的最大值),并输出全部结果。 根据学生的平均成绩进行排序,对语文、数学、英语成绩进行排序,并输出排 序结果,排序必须
2、使用冒泡排序法。并且具有如下的菜单:学生学籍管理系统* MENU *1、Enter new data2、Browse all3、Search by num4、Order by average5、Exit*用户可以根据菜单来选择操作,菜单的含义如下:1、Enter new data 输入新数据2、Browse al浏览所有数据3、Search by num 根据学号查询学生信息4、Order by average 根据平均成绩排序5、Exit退出系统实验步骤:二、实验目的1、了解和熟悉 Visual C+ 软件编程开发环境2、熟练掌握结构化程序设计的步骤和模块化设计方法3、熟练掌握 C 语言数据
3、类型,熟记字符型数据和整形数据的定义和使用4、熟练掌握用while语句、dowhile语句和for语句实现循环结构程序设 计的方法5、掌握一维数组、二维数组的定义、赋值和输入输出的方法6、掌握与数组有关的算法 特别是排序算法,熟练掌握冒泡排序法)7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握 函数的调用方法8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用三、实验步骤1、分析设计题目: 根据题目要求,可以使用结构体数组来存储学生的信息,包括学号、姓名、性别、各科成绩、平均成绩五个成员,分别使用字符数组、整型数组、浮点型变量来表示。在主函数之外,分别编写菜单函数m
4、enu(、输入函数enter(、浏览函数 browse(、查找函数 search(排序函数 order(等 函数,通过主函数调用menu来实现。2、实验流程图:结束3、实验模块:输入模块、浏览模块、查找模块、排序模块、退出系统4、程序的调试与测试:所谓程序调试是指对程序的查错与排错。在编写完一个源程序之后,不 要立即进行编译,而应对程序进行全面的人工检查一遍,检查无误后,可 以开始进行程序调试。由编译系统进行检查、发现错误,根据编译系统提 示的错误类型和警告及出现的位置,我们可以定位到错误地点进行修改, 然后再编译,如此反复进行,直至不再出现错误位置,最后才进行程序的 连接于运行。调试完以后,
5、下一步就是对程序进行测试,运行程序,向程 序中输入数据,根据输出结果是否正确 <是否符合自己的想法)来判断程序 是否正确,如果不正确或不符合自己的目的,就需要对程序进行修改。然 后再调试,再测试,直至结果无误或符合要求后,测试才算结束,此时, 程序才算是满足题目要求的正确程序。5、运行结果:<1)运行结果界面如下:ExL Ent er new data 2. Browse all3一 Stidfrli by niunA. Order by average5, Exit.ti .*. lj % J. ii iJj hJ«= Jp. .屯l/j hL-.'. Jjt
6、iAivj* »lz lu* !sld *t, *w* °* 1/" hLi y!/ ii %l> 9> iAi .*.=屯“丽平!苓苹千予可i不弄i乔帀予曹夯千平誓呼乔乔砰乔卒存脊可i千平苓不町奇卒平弄脊乎平不岳平千 那弄苹干皙吓千平Choice yam、mmber(1 5) : T»B/S鼻琲投狗拼音性k- >_ f fttfiffl1 Atr-v l-kuufedL'F. Bl'J fQrt'liWlGpQiiiNwintfL rtrtjs<2)选择1号菜单,输入10名同学信息,运行结果如下:rwlo
7、w many students(0-100)?: 10Knter data nowscore1:002:783:922th student record.+(»耶.備号捜狗拼音和NO 01 02 03 04 05 06 07 08 0910ChineseE08S767477676978 fifi89Math787886B484旳甜6987781592的鈕时907197&4純66S1El83.33 朋.0075.3375.3363.67眦0090.6770.3386,弟77.67MdJiL course929286fJ4906797789089ave_chitiese ave
8、Math ave.EtielishB2.60 Si.2079.40MaA_Chines LUii_Math Mai_Enjlish89B797wui ±There are 10 record.段脚拼音半:P 曙 農 <B wr-也却軒"二 'J11.一 昌 23口<4)选择3号菜单,按学号查找学生信息,例如查找学号为03的同德信息,输入格式如下:甘 田甲盛fia沖n.arcywiiyJwmg&B*xi. 出六们.F3 叫科 抄占<5)查询学号为03的同学的信息运行结果如下:NO :hfUBGChineseMathE nlisliaverag
9、eMax course03 :李凤768675,3366返凹主菜草情按数字Dnua:0<3Lnter tiaunc that you wane to search!<6)选择4号菜单,进入学生成绩排序功能菜单,运行结果如下:B或H mm: P G& / 曲Msh 知阔 IHTA"fl* -S 粵月 2S凯<7)选择1号功能菜单,按每位学生的平均成绩从小到大排序,运行结 果如下:- 岸d-畑EdLJft. a J,KrWAriSra* - v,gjn逹 ZxdL nr”.:目 rf* fl. JS5J!<8)选择2号功能菜单,按语文成绩从小到大排序,运行
10、结果如下:i 4 6 7 8 o 7 8 8 .9 9 h 7 7 7 7 8 B 8 B B 6 恥fljue晨园阳磊夏政殊柳畫寒 绩;n刘李孙李华主藏刘南韩 :+ * : T + :”;: 段N00403Q5胸010602肿0710返旦上一级请按数宇0MR t IMU:'JEj| 盘建 l+u-ab-ri Wnm ««w®u財 3 i ftIXffl采结畤ttl册J1at6978787882e48486eG87大到r肿吨番师夏寒孜阳展凤尧测缱n丰蛊华韩工和刘丰南刘潇NOQ302M10060-5M030709返回上一级请按数宇口超狈拼音半:- 射寸黛g
11、BW -畑fdL 介宀皿门協U自H逹 *f Zl *tr.目 JJfla ZSS3<10)选择4号功能菜单,按英语成绩从小到大排序,运行结果如下:X.En64e466祠门9090929297济NO0308LO04060905020107近回上一级请按数宇QR卜4射4 A體 nav/fl - He.:dk4L血SI J.Kpww* 目UH嗨型驹拼音半:MLT5 + (MCma*和*柑呻档*宾*杓*杓*柑呻輯*事ftiENU*”*帖*虹*”*粉密*4呻 l. Elittr nen fixta.2r Browse al I3. Searcti by nunJ.Order by average5
12、.Exit* *耳 * iM * 44 * 呉 * 4u|£ * 4* * 宜 * *宜 * 4cHc * dKHc * :k* * m: * icHc * 4o|£Choice your Humher(1-S): -h4 八F 4 Am i心-诃丽叩pt.旦I'tcraidt WAr.世.讣 u,.型殉拼音半:J- MW t Ml?<12)选择5号菜单,退出系统,按任意键结束程序,运行结果如下:S I*w>z<ngipj!>ivLI.L*bugingna.:-'*事*审*車*申耳减理柑e*軍*寡*宜*典*皇*审鬧狀*冲*耳:*章*軍
13、*冀*_*单L. Enter new rldt.A玄Browse al I3.Search by numL Order by tiYertiKe5. Exit*事*14(卑申耳韋*理卑耳!*璋*鼻*:宣*寮*:4*!4(甲40卑冲卡耳!来冲*冒*賈*冀*冀*柑£蕈Choice your number(1-5):51Press any key to conti叮ue.四、实验体会通过完成这个综合的设计实例,从中我熟悉了Visual C+开发环境,熟练掌握了在Visual C+软件环境下编写和调试程序。通过对程序的调试,我从学 到了许多知识,根据编译时系统提供的错误提示,我能很快地找到错
14、误并排除 这些错误,是程序能正确运行。通过这个环节的不断练习,我积累了丰富的经 验,为以后编程和调试程序奠定了基础。通过运行程序,对程序不断改动,仔 细观察和分析所出现的情况,锻炼了我对立思考的能力,而且增强了我对C语 言应用这门课程的兴趣。五、源程序 #include<stdio.h>/*头文件 */#include<string.h> #include<stdlib.h>#define N 100 #define M 3typedef struct student /*定义学生结构体 */ char num11。char name20。char sex3
15、。 int scoreM 。float Max_course。 STU。STU stuN,stu_ChineseN,stu_MathN,stu_EnglishN 。 int MaxM 。float ave_Chinese。float ave_Math。float ave_E n。/* 实际存储的学生个数 */void no_input(int i,int n>/*i 表示第 i 个的学生信息, n 表示比较到第 n 个学 生*/ int j,k,w1 。do w1=0。 printf("NO.:"> 。 scanf("
16、;%s",&stui.num> 。for(j=0。stui.numj!='O'。j+>/* 学号输入函数,作了严格规定 */ if(stui.numj<'0'|stui.numj>'9'>/* 判断学号是否为数字 */ puts("Input error! Only be made up of (O-9>.Please reinput!n">。w1=1。 break。 if(w1!=1>for(k=0。 k<n。 k+>/*比较到第n个学生*/ if
17、(k!=i&&strcmp(stuk.num,stui.num>=O> puts("This record is exist.Pleasereinput!n"> 。w1=1。 break。 while(w1=1> 。void input(int i>/* 输入一个记录函数 */ int j,sum 。 no_input(i,i> 。/* 调用学号输入函数 */ printf("name:"> 。 scanf("%s",&>。 printf(&qu
18、ot;sex:"> 。 scanf("%s",&stui.sex> 。for(j=0 o j<M。j+> printf("score %d:",j+1> 。 scanf("%d",&stui.scorej> 。for(sum=0,j=0。 j<M 。 j+> sum+ =stui.sco rej 。stui.ave=sum*1.0/M 。 /* 每一行的平均值,即每位同学的三门课总的平 均分 */void menu(> 。 /* 函数声明 */void e
19、nter(>/* 输入模块 */int i,j,f。system("CLS">。 /*清屏*/printf("How many students(0-%d>?:",N>。 /*要输入的记录个数 */ scanf("%d",&n> 。printf("nEnter data nownn">。 for(i=0。 i<n。 i+> printf("nInput %dth student record.n",i+1> 。 input(i>
20、。 /*调用输入函数 */for(i=0 。 i<n。 i+>/* 求每一行的最大值,即求每一位学生的三门课中的 最高分*/ stui.Max_course=stui.score0 。for(j=1 。 j<M 。 j+> if(stui.Max_course<stui.scorej>stui.Max_course=stui.scorej 。for(i=0 。 i<n 。 i+>/* 把 输 入 的 信 息 分 别 复 制 到 stu_ChineseN,stu_MathN,stu_EnglishN 中*/ stu_Chinesei=stui。 s
21、tu_Mathi=stui 。 stu_Englishi=stui 。printf(" 返回主菜单请按数字 0n">。do scanf("%d",&f> 。 if(f=0> menu(>。 break。else printf("输入有误,请重新输入:">。while(f!=0> 。void printf_one(int i>/* 显示一个记录函数 */int j。printf("%3s :%3s",stui.num,> 。for(j=0 。
22、j<M 。 j+> printf("%10d",stui.scorej> 。printf("%10.2f",stui.ave> 。 printf("%9dn",stui.Max_course> 。void browse(> /* 浏览模块 */int i,j,f,k=0 。 system("CLS">。 /* 清屏*/ for(i=0。 i<n。 i+>/* 求第一列的平均值,即求语文平均成绩 */ k=k+stui.score0 。 ave_Chinese=(
23、k*1.0>/n。k=0。for(i=0。 i<n。 i+>/* 求第二列的平均值,即求数学平均成绩 */ k=k+stui.score1 。ave_Math=(k*1.0>/n。k=0。for(i=0。i<n。i+>/*求第三列的平均值,即求英语平均成绩 */ k=k+stui.score2。 ave_English=(k*1.0>/n。Max0=stu0.score0 。 /*第一列的最大值,即语文成绩最高分 */ for(i=1。 i<n。 i+> if(Max0<stui.score0>Max0=stui.score0
24、。Max1=stu0.score1 。 /*第二列的最大值,即数学成绩最高分 */ for(i=1。 i<n。 i+> if(Max1<stui.score1> Max1=stui.score1 。Max2=stu0.score2 。 /*第三列的最大值,即英语成绩最高分 */ for(i=1。 i<n。 i+> if(Max2<stui.score2> Max2=stui.score2 。puts("n">。printf("n NO : name Chinese Math English average Ma
25、x_coursen">。for(i=0。 i<n。 i+> if(i!=0>&&(i%10=0>>/* 目的是分屏显示 */ printf("nnPass any key to continue.">。 getchar(>。 puts("nn">。 printf_one(i> 。 /*调用显示一个记录函数 */ puts("n">。printf(" ave_Chinese ave_Math ave_Englishn">
26、。 printf("%10.2f%10.2f%10.2fn",ave_Chinese,ave_Math,ave_English>。 /* 显 示语文、数学、英语平均成绩 */puts("n">。printf(" Max_Chinese Max_Math Max_Englishn"> 。 printf("%10d%10d%10dn",Max0,Max1,Max2> 。/* 显示语文、 英语成绩 */puts("n">。printf("ntThere are
27、%d record.n",n>。puts("n">。printf(" 返回主菜单请按数字 0n">。do scanf("%d",&f> 。 if(f=0> menu(>。 break。else printf("输入有误,请重新输入:">。while(f!=0> 。 void search(>/*查找模块 */int i,k,f。struct student s。k=-1。system("CLS">。 /*清屏*/ pr
28、intf("nnEnter name that you wang to search! num:">。 scanf("%s",&s.num>。 /*输入要查找的学生的学号 */ printf("n NO :name Chinese Math English Max_coursen">。for (i=0。 i<n。 i+>/* 查找信息 */ if(strcmp(s.num,stui.num>=0> k=i。/*找到要查找的学生记录 */printf_one(k>。 /* 调用显示
29、一个记录函数 */ break。 if(k=-1> printf("nnNO exist!"> 。 printf(" 返回主菜单请按数字 0n">。数学、averagedo scanf("%d",&f> 。 if(f=0>menu(>。break。else printf("输入有误,请重新输入:"> while(f!=0> 。/*函数声明 */void order_ave(>。void order_Chinese(>。void order_Math
30、(>。void order_English(>。 void order(>/* 排序模块 */int i,j,f,m,w1 。struct student s。system("CLS">。dosystem("CLS">。puts("ttt 学生成 绩排序nn">。puts("t*ORDER*n">。puts("ttt1.对每一位学生的平均成绩排序n" puts("ttt2.对语文课成绩排序n"。puts("ttt3.对数学课
31、成绩排序n"。puts("ttt4.对英语课成绩排序n"。 puts("ttt5.返回主菜单 n"。puts("t*n"printf("Choice your number(1-5>: bb"> 。 scanf("%d",&m> 。if(m<0|m>5> w1=1 。printf("your choice is not between 1 and 5,Please input again:">。getchar(>
32、;。else w1=0。while(w1=1> 。 switch(m> /*选择功能 */case 1:order_ave(>。 break。case 2:order_Chinese(> break。case 3:order_Math(> break。case 4:order_English(>。 break。case 5:menu(>。printf("The ordered data is:n">。browse(>。void order_ave(>/*对平均成绩从小到大进行冒泡排序法 */int i,j,f 。s
33、truct student s。system("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n 。 j+>if(stui.ave>stuj.ave>s=stui。stui=stuj 。stuj=s。puts("n">。printf(" 每位学生的平均成绩从小到大的排序结果 n">。printf(" NO : name average n">。for(i=0。 i<n。 i+>printf("%3s :%3s
34、%11fn",stui.num,,stui.ave> 。 puts("n">。printf(" 返回上一级请按数字 0n">。doscanf("%d",&f> 。if(f=0>order(>。 break。else printf("输入有误,请重新输入:">。while(f!=0> 。void order_Ch in ese(>/*对语文成绩从小到大进行冒泡排序法*/int i,j,f 。struct student s。sy
35、stem("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n。 j+>if(stu_Chinesei.score0>stu_Chinesej.score0>s=stu_Chinesei。 stu_Chinesei=stu_Chinesej。 stu_Chinesej=s。puts("n">。printf(" 语文成绩从小到大的排序结果 n">。printf(" NO : nameChinese n">。for(i=0。 i<n
36、。 i+>printf("%3s :%5s %6dn",stu_Chinesei.num,stu_C,stu_Chin esei.score0>。puts("n">。printf(" 返回上一级请按数字 0n">。doscanf("%d",&f> 。if(f=0>order(>。break。else printf("输入有误,请重新输入:">。while(f!=0> 。void order_Math(>/
37、*对数学成绩从小到大进行冒泡排序法*/int i,j,f。struct student s。system("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n。 j+>if(stu_Mathi.score1>stu_Mathj.score1>s=stu_Mathi。 stu_Mathi=stu_Mathj 。 stu_Mathj=s。puts("n">。printf(" 数学成绩从小到大的排序结果 n">。printf(" NO : name Mat
38、h n"> 。for(i=0 。 i<n。 i+>printf("%3s :%5s %6dn",stu_Mathi.num,stu_M,stu_Mathi.sc ore1> 。puts("n">。printf(" 返回上一级请按数字 0n">。doscanf("%d",&f> 。if(f=0>order(>。break。else printf("输入有误,请重新输入:">。while(f!=0> 。void order_English(>/* 对英语成绩从小到大进行冒泡排序法 */int i,j,f。struct student s。system("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n。 j+>if(stu_Englishi.score2>s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电动机制造中的生产计划与库存管理考核试卷
- 肥料制造的智能监控与远程操作考核试卷
- 海洋气象科学研究计划考核试卷
- 管道工程生态环境影响评价考核试卷
- 稀土金属提炼过程中的行业趋势与市场前景分析考核试卷
- 篷布生产环保措施考核试卷
- 票务市场趋势考核试卷
- 抖音社交关系终止及违规用户处理协议
- 二手房抵押交易债务结算专项协议
- 互联网教育平台投资合作协议
- 江苏省南京市、盐城市2025届高三年级5月第二次模拟考试化学试题及答案(南京盐城二模)
- 上海市金山区2025届高三下学期二模数学试卷(含答案)
- 【MOOC】宇宙简史-南京大学 中国大学慕课MOOC答案
- 常用尿动力学检查及结果判读详解演示文稿
- 公安机关业务技术用房建设标准正文
- GB/T 29076-2021航天产品质量问题归零实施要求
- GB/T 18656-2002工业系统、装置与设备以及工业产品系统内端子的标识
- GB 29449-2012轮胎单位产品能源消耗限额
- 人教版地理七年级下册《巴西》课件
- 医院住院病人健康教育表
- 实习证明模板下载版新版
评论
0/150
提交评论