版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HUNANUNIVERSITY程序设计训练报告学生姓名学生学号专业班级指导老师2023年 5月 25日目录一系统功能简介......................................3二本人完成的主要工作.................................3三实训分析.................................4四实训设计...............................5五实训源程序代码和调试过程.....................7六实训总结.................................11附录1................................12附录2.................................12-22一系统功能简介.学生信息管理系统1,进入主界面:要求输入密码,输入三次错误系统锁定。2,输入记录:将学生的根本信息包括学号,姓名,性别,地区,分数等数据作为一个记录写入文件。3,显示记录:显示学生的各项信息。4,增加记录:增加多个学生的根本信息,位于之前的学生后面。5,删除记录:删除学生信息。6,修改记录:可以修改学生的任何一项根本信息。7,查找记录:可以根据学生的学号查找并显示出学生的信息。8,统计记录:统计全班通过情况和不及格情况。9,退出系统经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。二本人完成的主要工作学生信息管理系统由我和龚晨同学共同完成。主程序的编写由我们两个共同完成。我负责的是:1、修改记录:可以修改学生的任何一项根本信息。2、查找记录:可以根据学生的学号查找并显示出学生的信息。3、统计记录:统计全班通过情况和不及格情况。4、退出系统三实训分析1、用结构化程序设计思想进行C环境下程序设计。2、设计一个管理系统,上机编程、调试并通过该管理系统中的各功能模块。3、设计完成后,每人必须提交程序清单及关于程序设计、维护和使用方面的图文材料即程序设计说明书各一份。4、基于结构化程序设计思想和所使用的C语言开发环境与开发工具,并运用“软件工程〞和“数据结构〞中的有关概念和方法,针对具体设计题目和要求,分析功能要求,划分功能模块,用链表结构设计功能模块函数,以菜单方式调用相应功能模块来实现信息和数据处理四实训设计1、系统功能模块结构图本图书管理系统理由输入记录,显示记录,增加记录,删除记录,修改记录,统计数据,查找记录,七个大模块组成,其总体结构图如下:学生信息管理系统学生信息管理系统增加记录模块增加记录模块修改记录模块删除记录模块修改记录模块统计记录模块输入记录模块显示记录模块查找记录模块退出系统2.核心数据结构设计:1.头文件说明如:#include<string.h>#include<stdio.h>#include<stdlib.h>#include<conio.h>2,函数的编写定义结构类型;定义全局变量;定义、编写记录〔数据〕输入函数;定义、编写记录〔数据〕显示函数;定义、编写记录〔数据〕增加函数;定义、编写记录〔数据〕删除函数;定义、编写记录〔数据〕修改函数;定义、编写记录〔数据〕统计函数;定义、编写记录〔数据〕查找函数;函数名称函数功能enter()进入函数input();输入函数display()显示函数add()增加函数delet()删除函数amend()修改函数preside();统计函数fint();查找函数output();退出函数3.核心算法描述〔程序流程图〕主函数结构流程程序开始程序开始初始化、定义主菜单、分支菜单指针数组及变量初始化、定义主菜单、分支菜单指针数组及变量读键盘按键的键值读键盘按键的键值判断键值并弹出对应菜单判断键值并弹出对应菜单N用户按了1-8键吗?N用户按了1-8键吗?N根据按键执行菜单项选择项对应的函数Y根据按键执行菜单项选择项对应的函数从被调用函数中返回并转移从被调用函数中返回并转移退出管理系统退出管理系统五实训源程序代码和调试过程〔包括截图〕1.1进入界面图一输入密码进行身份验证,输入三次那么系统锁定。1.2选择菜单图二主菜单接界面,选择数字执行相应功能。1.3输入信息图三依次输入学生的各项根本信息。1.4显示信息图四可以显示录入及增加的各项信息。1.5增加信息图五根据需要添加新的学生信息。1.6删除记录图六删除信息。1.7修改记录图七可修改任何学生的任何一项纪录。1.8统计信息图八对所有的信息进行统计显示不及格人数。1.9查找信息图九根据学号查找出需要的学生信息。六实训结论通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以较快看出来。这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。C语言是一个有序的学习,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,要从整体上把握。不过通过实训我也知道了自己的缺乏,存在的很多问题。希望能在以后的学习中,不断提高自己的能力,让问题越来越少。附录1参考文献[1]刘振安等.C程序设计课程设计.北京:机械工业出版社,2004.9[2]谭浩强等.c语言程序设计.〔第二版〕.清华大学出版社,2002,.8[3]张引等著《C程序设计设计根底课程设计》浙江大学出版社2007[5]曹哲等《C程序设计课程设计》机械工业出版社2023.7附录2源程序代码#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#defineN20structstudent/*定义学生结构体*/{longnum;charname[20];charsex[2];charaddress[20];intscore[3];intsum;intave;};structstudentstu[N];intt=1,pl=0;voidenter();voidinput();voiddisplay();voidadd();voiddelet();voidamend();voidpreside();voidfint();voidoutput();voidmain(){intpassword; inti; printf("\n\n\n\n\t\t\t欢送进入学生信息管理系统\n");/*初始界面输入验证密码*/ for(i=1;i<=3;i++) { printf("\n\n\t\t\t请输入密码:"); scanf("%d",&password); if(password==000000) { enter(); break; } printf("error!pleaseinputagain!"); } printf("密码输入三次有误!系统锁定!");}voidenter()/*进入主菜单函数*/{ intchoice,w; chark; system("cls"); printf("\t\t\t学生信息管理系统\n\n"); printf("\t\t1.录入.\t2.显示.\t3.增项.\t4.删项.\n\t\t5.修改.\t6.统计.\t7.查找.\t8.退出.\n"); printf("\n输入序号执行相应功能:"); scanf("%d",&choice); switch(choice) { case1:input();break; case2:display();break; case3:add();break; case4:delet();break; case5:amend();break; case6:preside();break; case7:fint();break; case8:output();break; default:w=1; } if(w==1) { printf("输入有误,按任意键重新选怿.\n"); k=getchar(); getch(); enter(); }}voidinput()/*学生信息录入的函数*/{ intx,count=0,i; charw,r[20],o; structstudent*p; p=stu; system("cls"); printf("\t\t\t学生信息的录入.\n"); do { pl++; printf("请输入第%d个学生的信息.\n\n",t); printf("学号:\n"); scanf("%ld",&p->num); printf("姓名:\n"); scanf("%s",&p->name); printf("\n"); printf("性别:\n"); gets(r); gets(&p->sex); printf("\n"); printf("地区:\n"); scanf("%s",&p->address); printf("\n"); printf("三门成绩:1.语文.2.数学.3.英语.\n"); for(i=0;i<3;i++) scanf("%d",&p->score[i]); p->sum=p->score[0]+p->score[1]+p->score[2]; p->ave=p->sum/3; printf("\n\n是否要继续输入学生信息,如果是请按y;不是请按n.\n"); o=getchar(); w=getchar(); if(w=='y'||w=='Y') { t++; x=1; p++; } else x=0; } while(x==1); if(w=='n'||w=='N') printf("按任意键返回.\n"); getch(); enter();}voiddisplay()/*显示学生信息*/{ inti,j; system("cls"); printf("\t\t\t学生信息显示.\n\n"); for(j=0;j<t;j++) { printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n","学号","姓名","性别","地区","语文","数学","英语","平均分","总分"); printf("%ld\t%s\t%s\t%s\t",stu[j].num,stu[j].name,stu[j].sex,stu[j].address); for(i=0;i<3;i++) printf("%d\t",stu[j].score[i]); printf("%d\t",stu[j].ave); printf("%d\t",stu[j].sum); printf("\n\n"); } printf("\n按任意键返回.\n"); getch(); enter();}voidadd()/*学生信息的增加*/{ inti,x; chara,w; structstudent*p; p=stu+t;system("cls"); printf("\n\t\t\t增加学生信息.\n");do { printf("请输入第%d个学生的信息.\n\n",t+1); printf("学号:\n"); scanf("%ld",&p->num); printf("\n"); printf("姓名:\n"); scanf("%s",p->name); printf("\n"); printf("性别:\n"); scanf("%s",p->sex); printf("\n"); printf("地区:\n"); scanf("%s",p->address); printf("\n"); printf("三门成绩:1.语文.2.数学.3.英语.\n"); for(i=0;i<3;i++) scanf("%d",&p->score[i]); for(i=0;i<3;i++) p->sum=p->score[0]+p->score[1]+p->score[2]; p->ave=p->sum/3; a=getchar(); printf("\n是否要继续输入学生信息,如果是请按y;不是请按n.\n\n");w=getchar(); p++; t++; if(w=='y'||w=='Y') { x=1; } if(w=='n'||w=='N') { x=0; break; } }while(x==1); if(x==0) { printf("\n"); printf("按任意键返回.\n"); getch(); enter(); }}voiddelet()/*学生信息的删除*/{ longb; intz,j; intr=t; charc,x; structstudent*p;system("cls"); printf("\n\t\t\t删除学生信息\n"); printf("请输入要删除学生的学号:\n\n"); scanf("%ld",&b); for(p=stu;p<stu+t;p++) if(p->num==b) break; else r--; if(r==0) { printf("你要删除的学生不存在,请按任意键返回.\n"); getch(); enter(); } printf("\n你要删除的学生为:\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","地区","语文","数学","英语","平均分","总分"); printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n你确定要删除吗?如是请输入y;不是请输入n.\n"); x=getchar(); c=getchar(); if(c=='y'||c=='Y') { for(p=stu;p<stu+t;p++) *p=*(p+1); t--; printf("系统已为你删除信息,请按任意键返回.\n"); getch(); enter(); } if(c=='n'||c=='N') { printf("删除信息取消!按任意键返回.\n"); getch(); enter(); }}voidamend()/*学生信息的修改*/{ longj; inti,z,r=t; charc,d,e,f,q,u,l,v,m,k,h1,h2,h3,h4; structstudent*p; system("cls"); printf("\n\t\t\t修改学生信息\n"); printf("请输入要修改学生的学号:\n\n"); scanf("%ld",&j); for(p=stu;p<stu+t;p++) if(p->num==j) break; else r--; if(r==0) { printf("你输入的学生不存在,请按任意键返回.\n"); getch(); enter(); } printf("\n你要修改的学生为:\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","地区","语文","数学","英语","平均分","总分"); printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n\n是否要修改学号:是请按y;不是请按n.\n\n"); l=getchar(); c=getchar(); if(c=='y'||c=='Y') { printf("请输入正确的学号:\n\n"); scanf("%ld",&p->num); } if(c=='n'||c=='N') z=1; printf("是否要修改姓名:是请按y;不是请按n.\n\n"); q=getchar(); d=getchar(); m=getchar(); if(d=='y'||d=='Y') { printf("请输入正确的姓名:\n"); scanf("%s",p->name); u=getchar(); } if(d=='n'||c=='N') z++; printf("\n是否要修改性别:是请按y;不是请按n.\n\n"); e=getchar(); k=getchar(); if(e=='y'||e=='Y') { printf("请输入正确的性别:\n"); scanf("%s",p->sex); } if(e=='N'||e=='n') z++; printf("\n是否要修改地区:是请按y;不是请按n.\n\n"); h3=getchar(); h4=getchar(); if(h3=='y'||h3=='Y') { printf("请输入正确的地区:\n"); scanf("%s",p->address); } if(h3=='N'||h3=='n') z++; printf("\n是否要修改三门成绩:是请按y;不是请按n.\n\n"); f=getchar(); if(f=='y'||f=='Y') { printf("请输入正确的三门成绩:"); for(i=0;i<3;i++) scanf("%d",&p->score[i]); p->sum=p->score[0]+p->score[1]+p->score[2]; p->ave=p->sum/3; } v=getchar(); if(f=='n'||f=='N') { printf("请按任意键返回.\n"); getch(); enter(); }}voidpreside()/*学生信息的统计*/{ inti,j,o=0,b=10,r=60; structstudent*p; system("cls"); printf("\n\t\t\t学生信息统计.\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","地区","语文","数学","英语","平均分","总分"); for(p=stu;p<stu+t;p++) { printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n\n"); } printf("\n\n\n"); for(p=stu;p<stu+t;p++) { for(i=0;i<3;i++) if(p->score[i]<r) { b=b-1;o=o+1; printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","地区","语文","数学","英语","平均分","总分"); printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版保险经纪服务合同for大型企业集团保险业务代理3篇
- 海外医疗保险
- 透析病人的饮食护理
- 幼儿园小班红绿灯安全教育
- 2024年全面业务合作协议版B版
- 2024年度企业安全管理服务合同6篇
- 中建PPP项目专项施工电梯方案
- 2024专业酒水经销商购销协议样本版B版
- 9新媒体营销 第九章
- 燃气安全法律法规培训
- 二年级上册数学广角《搭配一》
- 某房地产公司成本测算模板
- 新建制药车间厂房设施用户需求URS
- 半导体器件第二章pn结第1节
- DB31 933-2015 上海市大气污染物综合排放标准
- APM2.8飞控板使用手册
- 华电集团公司电力安全生产工作规定
- 教科版科学六年级下册实验报告单
- AASM睡眠分期新规则
- (完整版)人教版小学英语语法整理大全
- 动土作业安全技术交底
评论
0/150
提交评论