C语言程序设计实习报告学生信息管理系统.doc
《C语言程序设计实习报告学生信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言程序设计实习报告学生信息管理系统.doc(25页珍藏版)》请在咨信网上搜索。
C语言程序设计实习报告学生信息管理系统 25 2020年4月19日 文档仅供参考 C 语 言 课 程 设 计 题 目: 学生信息管理系统 设计者 : 梁天江 专 业: 机械设计制造及其自动化 班级学号: 072084-31 所属院系: 机电学院 指导教师: 吴湘宁 7月17日 1. 题目和要求: 1.1问题提出与要求: 学生成绩管理系统 [要求] 设计一个学生成绩管理系统,对在校某班学生几门课程的考试成绩进行统一管理。每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。 (1)一个文件按以班为单位存储学生记录。 (2)将允许的操作分为六种 A:插入一个新的学生记录(录入学生信息) B:修改学生记录 C:删除一个学生记录 D:登记成绩 E:修改成绩 F:浏览全班成绩 (3)计算学生的总成绩 (4)输出全班成绩表 1.2需求分析. 根据题目要求,由于学生信息是存放在文件中,因此应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择. 2.功能实现设计: 2.1总体设计: 分析系统:根据题目的需求分析,可将这个系统设计为六大模块(见下图):插入学生信息,修改,删除,登记,浏览,统计。 学生信息管理系统 显示 修改 删除 浏览 退出 插入 2.2详细设计: 1、主函数 主函数设计得比较简洁,只提供输入、功能处理和输出部分的函数调用。其中各功能模块用菜单方式选择;其流程图如下: 开始 显示一系列功能选项 输入n,判断n是否是1~6? 根据n的值调用各功能模块函数 结束 [程序] void main() { int a; do { printf("\t\t\t\t\n"); printf("\t\t\t\t学生成绩管理系统\n"); printf("\n"); printf("\t\t\t作者:梁天江 班级:072084-31 学号: 1004528\n"); printf("\t\t\t-------------------------------------------\n\n"); printf("\t 1.插入新的学生记录\n"); printf("\t 2.修改学生记录\n"); printf("\t 3.删除学生记录\n"); printf("\t 4.显示学生成绩和总分\n"); printf("\t 5.浏览全班成绩\n"); printf("\t 6.退出\n\n"); printf(" 输入你要操作的序号 : "); scanf("%d",&a); switch(a) { case 1:printf("\n");input();break; case 2:printf("\n");change();break; case 3:printf("\n");del();break; case 4:printf("\n");allgrade();break; case 5:printf("\n");paixu();break; case 6:printf("\n");exit(0);break; default:printf("\nThe choice is between 1 to 6.\n"); } }while(a!=0); 2、各功能模块设计 (1)插入模块 void input() { int j; char ch[20]; printf("\n输入学生信息:\n"); do { printf("\n学号: "); scanf("%s",stu[k].num); printf("\n姓名: "); scanf("%s",stu[k].name); printf("\n年龄: "); scanf("%d",&stu[k].age); for(j=0;j<3;j++) { printf("\n成绩%d: ",j+1); scanf("%d",&stu[k].grade[j]); } k++; printf("\n如要继续,请输入学生信息(y/n): "); scanf("%s",ch); } while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0); outputgrade(); } void outputgrade() { int i; printf(" 学生信息是:\n"); for(i=0;i<k;i++) { printf("\t%s \t%s \t%d \t%d \t%d \t%d",stu[i].num,stu[i].name,stu[i].age,stu[i].grade[0],stu[i].grade[1],stu[i].grade[2]); printf("\n"); } } (2)修改模块 输入要修改的学号 找到? Y N 提示没有找到 显示记录,调用修改函数 继续? Y N 返回主菜单 void change() { int i,j; char a[20],ch[10]; printf("\n输入你要修改的学生学号:"); scanf("%s",a); for(i=0;i<k;i++) { if(strcmp(stu[i].num,a)==0) { printf("\n你确定要修改学号吗?(y/n): "); scanf("%s",ch); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nnum:"); scanf("%s",stu[i].num);} printf("\n你确定要修改学生姓名吗?(y/n): "); scanf("%s",ch); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nname"); scanf("%s",stu[i].name);} printf("\n你确定要修改学生成绩吗?(y/n): "); scanf("%s",ch); printf("\n"); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) for(j=0;j<3;j++) { printf("grade%d:",j+1); scanf("%d",&stu[i].grade[j]); printf("\n"); } } } outputgrade(); } (3)删除模块 输入要删除的学号 找到? Y N 提示没有找到 显示记录,调用删除函数 返回主菜单 继续? Y N void del() { int i,j; char c[20]; printf("\n输入你要删除的学生学号 :\n"); printf("num:"); scanf("%s",&c); for(i=0;i<3;i++) if(strcmp(c,stu[i].num)==0) break; for(j=i;j<=2;j++) stu[j]=stu[j+1]; printf("\t\t\t你已经删除 %s的信息\n",c); k--; outputgrade(); } (4)显示模块 (显示学生成绩总分) void allgrade() { int i; float sum=0; for(i=0;i<k;i++) { printf("\t%d \t%d \t%d\n",stu[i].grade[0],stu[i].grade[1],stu[i].grade[2]); sum=sum+stu[i].grade[0]+stu[i].grade[1]+stu[i].grade[2] ; } printf("总成绩是 %f",sum); } (5)浏览模块(浏览全班学生成绩并按学号排序) void paixu() { struct student temp; int i,j; for(i=0;i<k-1;i++) { for(j=i+1;j<k;j++) { if(stu[i].num<stu[j].num) { temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } } outputgrade(); } 2.上机操作 1、数据源 全班学生信息文件student.txt格式:每行储存一个学生信息,内容包括学生学号、姓名、年龄、数学成绩、英语成绩、物理成绩。例如: 01 zhao 18 90 80 85 2、编译、链接和运行(略) 3、结果 (1)主菜单函数 效果如下图所示: (2)插入模块 在主界面出现后输入1回车,即可插一个学生信息,包括学号、姓名、年龄、数学、英语、物理成绩。如下图所示: (3)修改模块 (4)删除模块 (5)显示模块(显示全班学生成绩和总分) (6)浏览模块 4.下面附上此次C语言课程设计的源程序 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> struct student { char num[10]; char name[12]; int age; int grade[3]; }stu[20]; int k=0; void input(); void outputgrade(); void change(); void del(); void allgrade(); void paixu(); void main() { int a; do { printf("\t\t\t\t\n"); printf("\t\t\t\t学生成绩管理系统\n"); printf("\n"); printf("\t\t\t作者:梁天江 班级:072084-31 学号: 1004528\n"); printf("\t\t\t-------------------------------------------\n\n"); printf("\t 1.插入新的学生记录\n"); printf("\t 2.修改学生记录\n"); printf("\t 3.删除学生记录\n"); printf("\t 4.显示学生成绩和总分\n"); printf("\t 5.浏览全班成绩\n"); printf("\t 6.退出\n\n"); printf(" 输入你要操作的序号 : "); scanf("%d",&a); switch(a) { case 1:printf("\n");input();break; case 2:printf("\n");change();break; case 3:printf("\n");del();break; case 4:printf("\n");allgrade();break; case 5:printf("\n");paixu();break; case 6:printf("\n");exit(0);break; default:printf("\nThe choice is between 1 to 6.\n"); } }while(a!=0); } void input() { int j; char ch[20]; printf("\n输入学生信息:\n"); do { printf("\n学号: "); scanf("%s",stu[k].num); printf("\n姓名: "); scanf("%s",stu[k].name); printf("\n年龄: "); scanf("%d",&stu[k].age); for(j=0;j<3;j++) { printf("\n成绩%d: ",j+1); scanf("%d",&stu[k].grade[j]); } k++; printf("\n如要继续,请输入学生信息(y/n): "); scanf("%s",ch); }while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0); outputgrade(); } void outputgrade() { int i; printf(" 学生信息是:\n"); for(i=0;i<k;i++) { printf("\t%s \t%s \t%d \t%d \t%d \t%d",stu[i].num,stu[i].name,stu[i].age,stu[i].grade[0],stu[i].grade[1],stu[i].grade[2]); printf("\n"); } } void change() { int i,j; char a[20],ch[10]; printf("\n输入你要修改的学生学号:"); scanf("%s",a); for(i=0;i<k;i++) { if(strcmp(stu[i].num,a)==0) { printf("\n你确定要修改学号吗?(y/n): "); scanf("%s",ch); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nnum:"); scanf("%s",stu[i].num);} printf("\n你确定要修改学生姓名吗?(y/n): "); scanf("%s",ch); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("\nname"); scanf("%s",stu[i].name);} printf("\n你确定要修改学生成绩吗?(y/n): "); scanf("%s",ch); printf("\n"); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) for(j=0;j<3;j++) { printf("grade%d:",j+1); scanf("%d",&stu[i].grade[j]); printf("\n"); } } } outputgrade(); } void del() { int i,j; char c[20]; printf("\n输入你要删除的学生学号 :\n"); printf("num:"); scanf("%s",&c); for(i=0;i<3;i++) if(strcmp(c,stu[i].num)==0) break; for(j=i;j<=2;j++) stu[j]=stu[j+1]; printf("\t\t\t你已经删除 %s的信息\n",c); k--; outputgrade(); } void allgrade() { int i; float sum=0; for(i=0;i<k;i++) { printf("\t%d \t%d \t%d\n",stu[i].grade[0],stu[i].grade[1],stu[i].grade[2]); sum=sum+stu[i].grade[0]+stu[i].grade[1]+stu[i].grade[2] ; } printf("总成绩是 %f",sum); } void paixu() { struct student temp; int i,j; for(i=0;i<k-1;i++) { for(j=i+1;j<k;j++) { if(stu[i].num<stu[j].num) { temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } } outputgrade(); } 5.实习心得: 经过7次的C语言课程设计上机实习,我学到了很多东西。开始上机实习时,面对着繁琐的程序结构,我无从下手,一头雾水的我看到了《C语言课程设计与学习指导》中的第五章,“举一反三”部分。看完后,我“依葫芦画瓢”地在VISUAL C++上写了简单的程序模块。在同学的帮助下我做完了程序的主体部分。 C语言课程的学习已经过去了几个星期。刚开始学习这门课程的时候,我发现老师在课堂上讲授的东西很抽象,不能应用于实际的生活中,而且C语言中的结构,算法等很高深,不容易被我们消化吸收。在上机实习的过程中,我发现C语言才是真正能够为现实生活中的问题提供一个简单快捷而且蕴涵着深深智慧的一个工具,作为当今时代的大学生,我们应该好好学习并掌握C语言。实际应用中我发现,很多的操作系统都能够C语言编出来,真正实现了办事效率的优化。在上机实习的过程中,我发现C语言中的算法和结构具有很深的智慧,一个看似复杂的问题,用很巧妙的C程序算法和结构能奇妙地解决。我们应该在以后的学习和生活中将C语言所特有的解决问题的思路和办法融入自己的智慧中。另外,C语言编出来的程序很清晰,整洁,将问题有条不紊地分离开来,在一个大框架的总体思路下,将要求化为几个并列的函数,一个函数又一个函数地将问题一一解决。 C语言这门课程所包含的东西还很多,很深。作为一名初次接触的学生,我在C语言课程的学习和这7次的实际上机操作中,对C语言有了进一步的理解。从老师开始从C语言的历史开始讲解,到现在,能在老师和同学的帮助下完成一个简单的程序设计,我获益匪浅。 遇到问题,分析问题,着手解决问题,并总结问题,C语言程序设计将解决问题并完善问题的总体过程告诉了我们,这对我们都是大有裨益的。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实习 报告 学生 信息管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文