版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安郵電學院高级语言课程设计报告书学院名称:计算机学院学生姓名:张昕专业名称:计算机科学与技术系班 级:0901班学号:04091035时间:2010年9月13日至2010年9月25日 学生成绩管理系统一、实验目的1.熟悉C语言程序的编辑、编译链接和运行过程。 2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。 3.熟练运用if语句和switch语句以及嵌套应用。 4.掌握C语言函数的定义基本方法、声明函数及调用函数的方法和过程。5.掌握结构体类型变量、结构体数组的运用。6.熟悉C语言的定义方法及合法语法标识符。7.掌握数组的定义、引用以及通过字符数组存储字符
2、串,进一步使用字符串,并对指针初步了解。8.掌握文件开辟内存存储、修改及读取。8.掌握学习方法,开拓计算机语言视野,培养创新意识。二、实验内容1.运用结构体等编辑一个简单的学生成绩管理系统,使之能够完成学生信息管理、成绩信息管理、专业课程信息管理,并使每个单元能进行输入,浏览,查询,删除及修改等功能。2.执行编译操作,并根据提示调试程序,排除所有的错误和警告,直到编译成功。3.执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功。4.请指导老师进行检查,对程序进行相关解释与说明,回答老师所提出的相关问题。对程序不足之处进行改进。5.根据源程序及运行情况截取相应的图片,认真完成实验报告。三
3、、需求分析3.1 信息输入及浏览 基本信息部分包括两个模块的信息:学生成绩信息及专业设置信息。3.2 信息修改可以随意修改两个模块中所需修改的信息。3.3 信息删除(查询)删除(查询)指定元素(学生成绩信息,专业)的所有信息。3.4 界面设计 界面友好,层次清楚。提示齐全,操作可行易懂。四、概要设计4.1 方案设计该程序主要由2个模块组成,分别是学生成绩信息管理、专业课程信息管理。整体上使用结构体数组进行控制,同时也使用了函数与等共同实现各个模块的功能,整个模块通过主函数系统紧密地联系在一起。用随机读写实现文件之间的连接,通过文件实现信息的及时存储与读取。系统的结构图如图4.1.1所示信息添加
4、专业添加专业修改信息修改学生成绩管理系统专业显示信息显示专业查找专业设置专业删除信息删除专业清空信息清空按成绩排序信息查找按姓名排序信息操作统计图4.1.1学生成绩管理系统结构图4.2 各个模块功能说明(因两个模块基本思路相同,故取第一个模块做例子说明)4.2.1 信息输入模块输入学生学号,学生姓名,学生班级,学生专业,专业所属课程成绩,同时存入文本,保证本输入的信息录入存储。4.2.2 信息浏览模块用数字键选中所要浏览的模块,进入浏览界面,自动显示当前所要浏览的所有信息。4.2.3 信息删除模块通过提示学号查找到所要删除信息,自动删除之后,及时调整所存储的信息,让信息立即更新。4.2.4 信
5、息查询模块通过提示学号输入查询信息,之后自动输出所有当前模块所指定的查询的信息。4.2.5 信息修改模块通过提示输入学号,之后根据提示重新录入,并将修改后的信息输出并且及时保存。4.2.6说明:每个模块运行过后根据界面提示都可回到主界面,程序直至主界面上的提示按0键结束。 五、详细设计及运行结果5.1 设计理念程序中in_stud(或in_major)为原始信息输入函数,find_stud(或find_major)为查找函数,show_stud(或show_major)为输出函数,执行各种相关操作时(例如注销与编辑),预先会自动判断并输出原始录入的信息。同时,为了实现代码简单化易懂,大部分模块
6、中使用简单的printf和scanf和fread和fwrite语句。使用结构体数组存储当前所有数据。5.2 程序主要模块流程图5.2.1 主函数模块 main()主函数部分简单,主要进行用户登录,用if-else语句控制,共设置两种模式,登录成功进入系统操作,否则进行重新登录5.2.1主函数流程图如图:开始错误返回重新登录输入用户名及密码no判断用户登录Yes登录成功,进行各项操作 5.2.1.1主函数调用结构示意图5.2.2子函数模块给出提示语句,用户根据提示语句输入,存储的数据于文件中。如图5.2.2.1所示。存于文件中用户输入给出提示语句 图 5.2.2.1 基本信息模块流程图删除流程图
7、(查询和修改类似)开始输入删除的信息读取判断是否存在删除信息元素根据提示返回主菜单否5.3 程序运行截图(核心部分截图(学生成绩登录) 图5.3.1 学生成绩管理系统登录界面图5.3.2 学生成绩管理系统主界面学生成绩系统专业课程界面浏览界面(专业浏览)成绩浏览 查询界面数据分析主界面数据分析-排序按成绩排序按姓名升序排序评级六、调试情况,设计技巧及体会6.1 自我评价在本次课程设计中,加强了对C语言的了解与思考的能力,面对程序中出现的种种问题,都能仔细认真排查,最终找到较为合适的解决方案。可以心平气和的面对繁杂的代码,脚踏实地的一步一步分析与构架,虚心接受同学与指导老师的建议与意见,不断进步
8、。但是,毕竟没有高级语言课程设计的经验,所以考虑不周全导致陷进死胡同,这些都有待提高。6.2 程序分析本程序在VC+6.0环境下编写,运用函数、数组、循环、结构体、文件等知识将整体融合在一起。在函数模块构建部分,运用判断语句简化整个程序,调用与嵌套大大减少了不必要的代码。尽量采取简单可用的语句,使程序易懂。6.3 实习心得通过为期两周的实习,感受颇多。我觉得,编写应用程序是一个由难到易,再到难的过程。其实,C语言的核心就是算法,一个好的程序员,一定有最好的算法。那么,在设计算法与模块时,应该进行十分周密的考虑。课程设计的前两天,我一直在考虑算法,画结构图,当大致框架出来后,再进行了一系列的评审
9、与试验,检验结构的可行性。实习期间,认真地编写与调试程序是关键部分,通过先前做的功课,觉得要实现要求的功能还是很容易的,尤其是两个模块的函数相互可以直接拿来用的。就这样,我完成了自己的程序初稿。后期调试阶段,出现了许多很棘手的问题。譬如文件无法存储和读取,储存时覆盖文件原数据,使用错误的跳转语句等。这些失误都是由于自己的粗心与偷懒导致的。经过自己的编译与同学的帮忙调试,重新编写修改错误部分,才解决了问题。 我觉得上机实习真的可以让人在高级语言方面取得较大的进步,纸上谈兵的方法在学习方面永远行不通,要实践,才能成功。编写一个程序,除了需要具备扎实的只是以外,还要有细心、虚心、专心的品质,这些都是
10、成功的关键。附:程序源代码:#include #include #include #include #include #define MAX 100typedef structint mno;/专业号char mname20;/专业名称char cour320;/专业课程MAJOR;typedef structint sno;/学号char sname10;/姓名char classno8;/班级int mno;/专业号int cour3;/课程float aver;/平均分char flag10;/标记STUDENT;void student();/学生基本信息函数void in_stud(
11、);/添加void up_stud();/修改void del_all_stud();/全删void del_stud();/删除一个void show_stud();/显示void find_stud();/查找void sort_stud();/排序void sort_1();/按成绩排序void sort_2();/按姓名排序void sort_3();/统计void major();/专业管理主函数void in_major();/添加void up_major();/修改void del_all_major();/全删void del_major();/删除一个void show_m
12、ajor();/显示void find_major();/查找/*专业添加函数*/void in_major()FILE *fp;MAJOR major,major1;if(fp=fopen(major.dat,rb+)=NULL)if(fp=fopen(major.dat,wb+)=NULL)printf(ntt.不能打开建立文件!);return;printf(nnt请输入信息:);printf(nt请输入专业号:);scanf(%d,&major.mno);printf(nt请输入专业名:);scanf(%s,major.mname);printf(nt请输入专业第一课程:);scanf
13、(%s,major.cour0);printf(nt请输入专业第二课程:);scanf(%s,major.cour1);printf(nt请输入专业第三课程:);scanf(%s,major.cour2);rewind(fp);while(!feof(fp)fread(&major1,sizeof(MAJOR),1,fp);if(major1.mno=major.mno)break;if(!feof(fp)printf(nttt.专业号重复!n);printf(n按任意键返回重新操作!);getch();elsefwrite(&major,sizeof(MAJOR),1,fp);fclose(
14、fp);/*专业修改函数*/void up_major()FILE *fp;MAJOR major,nmajor;int i,num;if(fp=fopen(major.dat,rb+)=NULL)printf(ntt.不能打开文件!n);return;fseek(fp,0,SEEK_END);if(ftell(fp)0)/文件不空rewind(fp);printf(ntt请输入要修改的专业号:);scanf(%d,&num);for(i=0;!feof(fp) & fread(&major,sizeof(MAJOR),1,fp)=1;i+)if(major.mno=num)break;if(
15、feof(fp)printf(ntt.没有该专业号的专业!n);return;printf(ntt修改信息:);printf(ntt请输入专业名:);scanf(%s,nmajor.mname);nmajor.mno=major.mno;fseek(fp,-(long)sizeof(MAJOR),SEEK_CUR);fwrite(&nmajor,sizeof(MAJOR),1,fp);fclose(fp);/*专业删除函数*/void del_major()FILE *fp;MAJOR majorMAX;int i,j,n,num;if(fp=fopen(major.dat,rb)=NULL)
16、printf(ntt.没有找到文件!n);return;fseek(fp,0,2);if(ftell(fp)0)rewind(fp);for(n=0;!feof(fp) & fread(&majorn,sizeof(MAJOR),1,fp);n+);/n为记录个数printf(nt请输入要删除的专业号:);scanf(%d,&num);for(i=0;i=n)printf(ntt.没有%d专业号的专业!,num);return;fclose(fp);if(n1)/文件记录多于1for(j=i;jn-1;j+)majorj=majorj+1;fp=fopen(major.dat,wb);for(
17、i=0;i无任何记录!n);printf(ntt按任意键返回继续操作!);getch();fclose(fp);/*专业全删除函数*/void del_all_major()FILE *fp;if(fp=fopen(major.dat,wb)=NULL)printf(ntt.不能打开文件!n);return;printf(ntt.全部记录已经删除!);printf(ntt.已经删除完毕,按任意键返回!);getch();fclose(fp);/*专业显示函数*/void show_major()FILE *fp;MAJOR major;if(fp=fopen(major.dat,rb) = N
18、ULL)printf(.不能打开文件!n);return;fseek(fp,0,SEEK_END);if(ftell(fp)0)/文件不能空rewind(fp);printf(nttttt专业浏览);printf(ntt.);printf(nntt专业号t 专业名 第一课程 第二课程 第三课程nn);while(1)fread(&major,sizeof(MAJOR),1,fp);if(feof(fp)break;printf(ntt%-8d%-12s%-12s%-12s%-12sn,major.mno,major.mname,major.cour0,major.cour1,major.cou
19、r2);printf(ntt.);elseprintf(nnttt.无任何记!n);printf(nttt.请重新选择操作选项!n);printf(nnn按任意键,退出浏览信息n);getch();fclose(fp);/*专业查找函数*/void find_major()int i=0,num;FILE *fp;MAJOR major;if(fp=fopen(major.dat,rb)=NULL)printf(ntt.不能打开文件!n);return;fseek(fp,0,2);if(ftell(fp)0)printf(nt请输入专业号:);scanf(%d,&num);rewind(fp)
20、;while (1)fread(&major,sizeof(MAJOR),1,fp);if(feof(fp) | major.mno=num)break;i+;if(!feof(fp)printf( 记录号 专业号 专业名n);printf( %6d%10d%12sn,i+1,major.mno,major.mname);printf(ntt.按任意键返回n);getch();elseprintf(ntt.查无记录!n);printf(ntt.按任意键返回n);getch();elseprintf(ntt.无任何记录!n);printf(ntt.按任意键返回n);getch();/*专业管理*
21、/void major()int sel;doprintf(nttt-专业信息管理菜单-n);printf(nttt1.添加t2.修改n);printf(nttt3.显示t4.查找n);printf(nttt5.删除t6.清空文件n);printf(nttt0.返回);printf(nttt-n);printf(nntt请输入操作选项:);scanf(%d,&sel);switch(sel)case 1:system(cls);in_major();system(cls);break;case 2:system(cls);up_major();system(cls);break;case 3:
22、system(cls);show_major();system(cls);break;case 4:system(cls);find_major();system(cls);break;case 5:system(cls);del_major();system(cls);break;case 6:system(cls);del_all_major();system(cls);break;case 0:break;default :printf(nttt.选择错误!n);while(sel!=0);/*判断专业号是否存在*/int findmajor_1(int no)FILE *fp;MAJO
23、R major;if(fp=fopen(major.dat,rb)=NULL)printf(nnttt.不能打开major文件!n);return 0;while(1)fread(&major,sizeof(MAJOR),1,fp);if(feof(fp) | major.mno=no)break;if(!feof(fp)return 1;elsereturn 0;void sort_1()int count;FILE *fp;int i,j;STUDENT *stud;STUDENT temp;if( (fp=fopen(student.dat, rb)=NULL)printf(打开失败!)
24、;exit(0);count=0;while(fread(&temp,sizeof(STUDENT),1,fp)!=0)count+;rewind(fp);stud = (STUDENT *)malloc(count*sizeof(STUDENT);for(i=0;icount;i+)fread(&studi,sizeof(STUDENT),1,fp);for(i=0; icount-1; i+ )for(j=0;j count-i-1;j+)studj.aver=(studj.cour0+studj.cour1+studj.cour2)/3.0;studj+1.aver=(studj+1.c
25、our0+studj+1.cour1+studj+1.cour2)/3.0;if(studj.averstudj+1.aver)temp = studj;studj = studj+1;studj+1=temp;printf(nttt排序后的学生(_成绩从高到低)n);printf(学号 姓名 班号 专业号t课程一t课程二t课程三t 总分nn);for(i=0;icount;i+)printf(%-10d%-10s%-10s%-10d%-10d%-10d%-10d%-10dn,studi.sno,studi.sname,studi.classno,studi.mno,studi.cour0,s
26、tudi.cour1,studi.cour2,studi.cour0+studi.cour1+studi.cour2);printf(nntt按任意键返回.);getch();rewind(stdin);fclose(fp);free(stud);void sort_2()FILE *fp;int i,j,count;STUDENT *stud;STUDENT temp;if( (fp=fopen(student.dat, rb)=NULL)printf(打开失败!);exit(0);count=0;while(fread(&temp,sizeof(STUDENT),1,fp)!=0)coun
27、t+;rewind(fp);stud = (STUDENT *)malloc(count*sizeof(STUDENT);for(i=0;icount;i+)fread(&studi,sizeof(STUDENT),1,fp);for(i=0; icount-1; i+ )for(j=0;j0)temp = studj;studj = studj+1;studj+1=temp;printf(ntttt排序后的学生n);printf(学号 姓名 班号 专业号t课程一t课程二t课程三t 总分nn);for(i=0;icount;i+)printf(%-10d%-10s%-10s%-10d%-10d
28、%-10d%-10d%-10dn,studi.sno,studi.sname,studi.classno,studi.mno,studi.cour0,studi.cour1,studi.cour2,studi.cour0+studi.cour1+studi.cour2);printf(nntt按任意键返回.);getch();rewind(stdin);fclose(fp);free(stud);void sort_3()FILE *fp;int i,j,count;STUDENT *stud;STUDENT temp;if( (fp=fopen(student.dat, rb)=NULL)p
29、rintf(打开失败!);exit(0);count=0;while(fread(&temp,sizeof(STUDENT),1,fp)!=0)count+;rewind(fp);stud = (STUDENT *)malloc(count*sizeof(STUDENT);for(i=0;icount;i+)fread(&studi,sizeof(STUDENT),1,fp);for(i=0; icount; i+ )for(j=0;j count-i;j+)studj.aver=(studj.cour0+studj.cour1+studj.cour2)/3.0;if(studj.aver=6
30、0 & studj.aver=75 & studj.aver=85 & studj.aver=100)strcpy(studj.flag,优秀);printf(ntttt排序后的学生n);printf(学号 姓名 班号 专业号t课程一t课程二t课程三t 评价nn);for(i=0;i按成绩排名);printf(nnttt2.按姓名排序);printf(nnttt3.数据统计);printf(nnttt0.返回);printf(nnttt-);printf(nntt请输入操作选项:);scanf(%d,&sel);switch(sel)case 1: system(cls);sort_1();s
31、ystem(cls);break;case 2: system(cls);sort_2();system(cls);break;case 3: system(cls);sort_3();system(cls);break;case 0:break;while (sel!=0);/*学生信息添加*/void in_stud()FILE *fp,*fm;int i;STUDENT stud,stud1;MAJOR major;int flag;if(fp=fopen(student.dat,ab+)=NULL)if(fp=fopen(student.dat,wb+)=NULL)printf(t.不
32、能打开文件!n);return;if(fm=fopen(major.dat,rb+)=NULL)printf(nt不能打开文件major.dat!);return 0;printf(nnt请输入信息:);printf(n请输入学号:);scanf(%d,&stud.sno);printf(n请输入姓名:);scanf(%s,stud.sname);printf(n请输入班级:);scanf(%s,stud.classno);printf(n请输入专业号:);scanf(%d,&stud.mno);rewind(fp);while(!feof(fp)fread(&stud1,sizeof(STU
33、DENT),1,fp);if(stud1.sno=stud.sno)break;if(!feof(fp)printf(t.学号重复n);printf(t.按任意键返回);getch();else if(findmajor_1(stud.mno)=1)fseek(fm,0,SEEK_END);if(ftell0)rewind(fm);flag=0;while(!feof(fm)fread(&major,sizeof(MAJOR),1,fm);if(major.mno=stud.mno)flag=1;break;if(flag=1)for(i=0;i不能打开文件!n);return;if(fm=f
34、open(major.dat,rb+)=NULL)printf(nttt.不能打开文件!n);return;fseek(fp,0,SEEK_END);if(ftell(fp)0)rewind(fp);printf(ntt请输入要修改的学生学号:);scanf(%d,&num);for(i=0;!feof(fp) & fread(&stud,sizeof(STUDENT),1,fp)=1;i+)if(stud.sno=num)break;if(feof(fp)printf(ntt.没有%d学号的学生!n);return;printf(tt请输入修改信息:);printf(n请输入姓名:);sca
35、nf(%s,nstud.sname);printf(n请输入班级:);scanf(%s,nstud.classno);printf(n请输入专业号:);scanf(%d,&nstud.mno);if(findmajor_1(nstud.mno)=1)nstud.sno=stud.sno;/*不能修改学号*/fseek(fm,0,SEEK_END);if(ftell0)rewind(fm);flag=0;while(!feof(fm)fread(&major,sizeof(MAJOR),1,fm);if(major.mno=nstud.mno)flag=1;break;if(flag=1)for
36、(i=0;i专业号错误!n);fclose(fp);elseprintf(ntt.无任何记录!n);fclose(fp);void del_stud()FILE *fp;STUDENT studentMAX;int i,j,n,num;if(fp=fopen(student.dat,rb)=NULL)printf(ntt.没有找到文件!n);return;fseek(fp,0,2);if(ftell(fp)0)rewind(fp);for(n=0;!feof(fp) & fread(&studentn,sizeof(STUDENT),1,fp);n+);/n为记录个数printf(nt请输入要
37、删除的学号:);scanf(%d,&num);for(i=0;i=n)printf(ntt.没有%d学号的学生!,num);return;fclose(fp);if(n1)/文件记录多于1for(j=i;jn-1;j+)studentj=studentj+1;fp=fopen(student.dat,wb);for(i=0;i无任何记录!n);printf(ntt按任意键返回继续操作!);getch();fclose(fp);void show_stud()FILE *fp;STUDENT stud;if(fp=fopen(student.dat,rb) = NULL)printf(.不能打开
38、文件!n);return;fseek(fp,0,SEEK_END);/将fp指针退回到文件开始if(ftell(fp)0)/文件不能空rewind(fp);printf(学号 姓名 班号 专业号t课程一t课程二t课程三n);while(1)fread(&stud,sizeof(STUDENT),1,fp);if(feof(fp)break;printf(%-10d%-10s%-10s%-10d%-10d%-10d%-10dn,stud.sno,stud.sname,stud.classno,stud.mno,stud.cour0,stud.cour1,stud.cour2);elseprintf(nnttt.无任何记录!n);printf(nttt.按任意键返回重新选择操作选项!n);getch();getch();printf(n按任意键,退出浏览信息n);getch();fclose(fp);/*学生全删函数*/void del_all_stud()FILE *fp;if(fp=fopen(student.dat,wb)=NULL)printf(ntt.不能打开文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 这一颠覆性假说的验证需要义翘神州这样的Tau蛋白产品矩阵
- 维护部电梯安全管理办法培训课件
- 心血管-肾脏-代谢(CKM)综合征的科学和临床管理证据
- 任务一 市场宏观数据分析
- 2026安徽城管面试题及答案
- 2026阿里巴巴面试题目及答案
- 尘毒射线安全卫生管理制度培训
- 《物联网概论》课件 3.2 EPC系统概述
- 公路安保工程质量保证措施
- 2025年区块链驱动消费品供应链溯源:品牌信任提升
- 西藏自治区日喀则市2026届高三第二次模拟考试语文试卷含解析
- 2026年酒店住宿O2O线上线下融合的预订与入住体验
- 中医涂擦疗法外用指南
- 英语北京市昌平区2026年高三年级第一次统一练习(昌平高三一模)(4.7-4.10)
- 气溶胶中I-131测量方法的关键技术与应用探究
- 国网西藏笔试真题及答案
- GB/Z 140-2025用于电量测量和监测、电能质量监测、数据采集和分析的装置的网络安全
- 计时收费合同范本
- 2025秋季《中华民族共同体概论》期末综合考试-国开(XJ)-参考资料
- (2025年)医疗技术临床应用及新技术新项目管理制度考核试题及标准(含答案)
- 2025年北京二级造价工程师考试建设工程造价管理基础知识真题及答案
评论
0/150
提交评论