版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《高级语言》课程设计题目:学生信息记录簿学院班级姓名学号成绩指导老师年月日目录目的题目要求系统设计程序代码和运行结果编程中遇到的困难及解决方法心得体会参考文献一、目的1.进一步掌握和利用C语言进行程序设计的能力2.进一步了解和运用文件和链表的思想和方法3.初步掌握开发一个小型实用系统的基本方法4.学会调试一个较长程序的基本方法5.掌握书写程序设计开发文档的能力二、题目要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;能添加、删除和修改学生的籍贯信息;(6)显示输出唐山籍和非唐山籍学生的信息并可分别存盘。三、系统设计1.设计原始资料(1)链表基础知识(2)文件处理基础知识2.数据结构structStudent{ charnum[21];//学生学号 charname[256];//学生姓名 charaddress[562];/学生籍贯 structStudent*next;};声明一个结构体类型Student3.模块设计(1)creat函数:添加需要录入的学生信息(2)name_surch函数:根据姓名查找学生(3)num_surch函数:根据学号查找学生(4)NativePlace_surch函数:按籍贯查找学生(5)modification_shiyan函数:修改学生信息(6)showSzechwan_No函数分别显示唐山和非唐山籍学生并非别存盘(7)print_save函数:保存文件信息(8)fileout函数:显示文件信息2.程序流程图 四、程序代码和运行结果程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#defineLENsizeof(structStudent)structStudent{ charnum[21]; charname[256]; charaddress[562]; structStudent*next;};intn;//n为全局变量,本文件模块中各函数均可使用它structStudent*creat()//定义函数。此函数返回一个指向链表头的指针{ structStudent*head; structStudent*p1,*p2; n=0; p1=p2=(structStudent*)malloc(LEN); printf("请依次输入学生的信息,输入学号为零时退出。\n"); printf("学号\t姓名\t地址\n"); scanf("%s%s%s",p1->num,p1->name,p1->address); head=NULL; while(p1->num[0]!='0')//当学号是0时,退出 { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(structStudent*)malloc(LEN);//开辟动态存储区,把起始地址付给p1 printf("学号\t姓名\t地址\n");scanf("%s%s%s",p1->num,p1->name,p1->address); } p2->next=NULL; system("cls"); return(head);}voidprint_save(structStudenthead){ FILE*fp; structStudent*p; fp=fopen("D:\\stduent.txt","wb+");//打开文件 if(fp==NULL) { printf("文件无法打开\n"); exit(0); } printf("\n现在,有%d条记录,分别是:\n",n); p=&head; if(&head!=NULL) do { printf("\n学号:"); puts(p->num); printf("\n姓名:"); puts(p->name); printf("\n地址:"); puts(p->address); fseek(fp,0,2); if(fwrite(p,sizeof(structStudent),1,fp)!=1) printf("文件无法写入\n"); p=p->next; }while(p!=NULL); fclose(fp);//关闭文件 getchar(); system("cls");}structStudent*pt;//定义一个Student类型的指针charcomp[3];//comp为保存输入的变量intmain()//一个调用这个creat函数的main函数c{ voidShowView();//界面显示 voidname_surch();//按姓名查找 voidnum_surch();//按学号查找 voidNativePlace_surch();//按籍贯查找 voidmodification_shiyan();//修改学生信息 voidshowSzechwan_No();//分别显示唐山和非唐山籍学生并非别存盘 voidfileout(structStudent*p);//文件输出 voidprint_save(structStudenthead); while(1) { ShowView(); if(strnicmp(comp,"1",3)==0)//strnicmp比较两个字符串的函数 { pt=creat();//函数返回链表第一个结点的地址 } elseif(strnicmp(comp,"2",3)==0) { print_save(*pt); } elseif(strnicmp(comp,"3",3)==0)//输出文件内容 { fileout(pt); } elseif(strnicmp(comp,"4",3)==0) { name_surch(); } elseif(strnicmp(comp,"5",3)==0) { num_surch(); } elseif(strnicmp(comp,"8",3)==0) { //modification(); modification_shiyan();//修改学生信息 } elseif(strnicmp(comp,"7",3)==0) { showSzechwan_No(); } elseif(strnicmp(comp,"6",3)==0) { NativePlace_surch(); } elseif(strnicmp(comp,"0",3)==0) { break; } else { printf("输入错误!!!!!!\n"); } getchar(); system("cls"); } return0;}voidfileout(structStudent*p){ inti; FILE*fp; printf("现在有%d条记录,分别是:\n",n); fp=fopen("D:\\stduent.txt","rb");//0x00429af0 if(fp==NULL) { printf("文件无法打开\n"); exit(0); } rewind(fp); for(i=0;i<n;i++) { fread(p,sizeof(structStudent),1,fp);//从文件中读取一块数据 printf("%6s",p->num); printf("%6s",p->name); printf("%6s",p->address); puts("\n"); } fclose(fp); getchar(); system("cls");}voidShowView()//主菜单{ printf("**********************欢迎进入学生籍贯信息记录簿*******************************\n"); printf("\n"); printf("*******************************************************************************\n"); printf("****1、添加学生信息********\n"); printf("****2、保存当前信息********\n"); printf("****3、显示文件中的信息********\n"); printf("****4、按名字搜索********\n"); printf("****5、按学号搜索********\n");printf("****6、按籍贯搜索********\n");printf("****7、分别显示唐山和非唐山籍学生并非别存盘********\n"); printf("****8、修改学生信息********\n"); printf("****0、退出********\n"); printf("*******************************************************************************\n"); printf("********************请输入您的选择:"); gets(comp); system("cls");//清屏}voidname_surch(){ FILE*fp; charsurch[256]; printf("请输入要查询的人的名字:\n"); gets(surch); fp=fopen("D:\\stduent.txt","r");//0x00429af0 if(fp==NULL) { printf("不能打开文件\n"); exit(0); } rewind(fp);//指向文件的开始 while(!feof(fp))//查找 { Studenta; while(!feof(fp)) { fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据 if(!strcmp(,surch)) { printf("%s,%s,%s\n",a.num,,a.address); break; } } if(!feof(fp)) {return;} else { printf("查无此人····\n"); } } fclose(fp); getchar(); system("cls");}voidnum_surch(){ FILE*fp; charsurch[256]; printf("请输入要查询的人的学号:"); gets(surch); fp=fopen("D:\\stduent.txt","rb");//0x0042aab8 if(fp==NULL) { printf("ERROR"); exit(0); } rewind(fp);//指向文件的开始 while(!feof(fp))//查找 { Studenta; while(!feof(fp)) { fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据 if(!strcmp(a.num,surch)) { printf("%s,%s,%s\n",a.num,,a.address); break; } } if(!feof(fp)) {return;} else { printf("查无此人····\n"); } } fclose(fp); getchar(); system("cls");}voidNativePlace_surch()//按籍贯查询{ FILE*fp; charsurch[256]; printf("请输入要查询的人的籍贯:\n"); gets(surch); fp=fopen("D:\\stduent.txt","rb");//0x00429af0 if(fp==NULL) { printf("文件打不开\n"); exit(0); } rewind(fp);//指向文件的开始 Studenta; while(!feof(fp)) { fread(&a,sizeof(structStudent),1,fp);//从p指向的文件读入一组数据 if(!strcmp(a.address,surch))//相当于strcmp(a.address,surch)==0 { printf("%s,%s,%s\n",a.num,,a.address); } } if(!feof(fp)) {return;} fclose(fp); getchar(); system("cls");}voidshowSzechwan_No()//分别显示唐山和非唐山籍学生并非别存盘{ FILE*fp; FILE*sfp;//指向唐山籍学生文件 sfp=fopen("D:\\唐山stduent.txt","wb"); if(sfp==NULL) { printf("不能打开文件\n"); exit(0); } FILE*ffp;//指向非唐山籍学生文件 ffp=fopen("D:\\非唐山stduent.txt","wb"); if(ffp==NULL) {printf("不能打开文件\n"); exit(0);} fp=fopen("D:\\stduent.txt","rb"); if(fp==NULL) { printf("不能打开文件\n"); exit(0); } rewind(fp);//指向文件的开始 printf("唐山籍学生信息:\n"); Studenta; inti; for(i=0;i<n;i++) { fread(&a,sizeof(structStudent),1,fp);//从p指向的文件读取一组数据 if(!strcmp(a.address,"唐山")||!strcmp(a.address,"tangshan")||!strcmp(a.address,"tangshanshi")||!strcmp(a.address,"唐山市")) { printf("%s,%s,%s\n",a.num,,a.address); if(fwrite(&a,sizeof(structStudent),1,sfp)!=1) { printf("文件无法写入\n"); break; } } else { if(fwrite(&a,sizeof(structStudent),1,ffp)!=1) printf("文件无法写入\n"); } } fclose(fp); fclose(ffp); fclose(sfp); printf("非唐山籍学生信息:\n"); ffp=fopen("D:\\非唐山stduent.txt","rb"); if(NULL==ffp) { printf("文件打不开\n"); } for(i=0;i<n;i++) { fread(&a,sizeof(structStudent),1,ffp);//从p指向的文件读取一组数据 if(a.num=="0") break; printf("%s,%s,%s\n",a.num,,a.address); } fclose(ffp); getchar(); system("cls");}voidmodification_shiyan()//修改学生信息{ FILE*fp; FILE*fptemp; structStudenta; charsurch[256]; printf("请输入要修改的人的学号:\n"); gets(surch); fp=fopen("D:\\stduent.txt","rb");//0x0042aab8 fptemp=fopen("D:\\temp.txt","wb"); if(fp==NULL) { printf("文件打不开\n"); exit(0); } rewind(fp);//指向文件的开始 while(!feof(fp)) { fread(&a,sizeof(structStudent),1,fp);//从p指向的文件读入一组数据 if(0==strcmp(a.num,surch)) { charp; printf("%s,%s,%s\n",a.num,,a.address); printf("如果以上信息与你要修改的人的信息对应,请输入(y/n):\n"); scanf("%c",&p); if('Y'==p||'y'==p) { printf("请输入要修改成的信息(学号、姓名、籍贯):\n");getchar(); printf("学号:"); gets(a.num); printf("姓名:"); gets(); printf("地址:"); gets(a.address); } } fwrite(&a,sizeof(structStudent),1,fptemp); } fclose(fp); fclose(fptemp); FILE*bb; FILE*pp; bb=fopen("D:\\stduent.txt","wb");//0x0042aab8 pp=fopen("D:\\temp.txt","rb"); while(!feof(pp)) { fread(&a,sizeof(structStudent),1,pp); fwrite(&a,sizeof(structStudent),1,bb); } getchar(); getchar(); system("cls");}运行结果进入界面当每一个操作结束时,系统都会自动清屏,并返回主菜单,以保证屏幕整洁。使用户能拥有一个好的心情使用此软件。输入3,按enter键,查看文件中所存储的所有信息。添加学生信息界面保存信息界面按姓名查找按学号查找按籍贯查找分别显示唐山和非唐山籍贯学生信息并存盘修改学生信息按提示操作,如果现实的学生的信息是你要修改的,就输入y。再输入要改成的详细信息,按enter键保存、退出。五、编程中遇到的困难和解决方法困难:1.由于fread以及fwrite不能较熟练的应用,在实现唐山和非唐山籍学生分类时出错。2.偶尔会出现文件打开错误的情况或者乱码现象解决方法:1.看书熟悉fread和fwrite的使用规则,在此基础上对程序加以修改2.同时认真检查文件的打开格式是否出错,避免因打开方式错误而导致程序不能正常运行六、心得体会为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期二周的VisualC++课程设计实习,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。在此次字符统计程序开发过程中,有很多东西值得我们思考并总结。开发过程大体可分为以下几个步骤:(1)思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的VisualC++语言基本操作符、语句等。(2)画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。(3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码。(4)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。(5)代码的调试:在VisualC++6.0环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。(6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化.增强程序的新意与可行性。通过这次课程设计,使我们更加熟悉的掌握了VisualC++语言的运用。帮助我们熟悉了更多VisualC++语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。七、参考文献[1]马安鹏.VisualC++程序设计导学。北京:清华大学出版社,2002[2]谭浩强,C程序设计(第四版)[2]电子书籍.VisualC++技术内幕(第四版).网址:[3]郑莉,董渊,张瑞丰.C++语言程序设计.2003.[4]H.M.Deitel,P.J.Deitel.SmallC++HowtoProgram.2006.基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究基于TCP/IP协议的单片机与Internet互联的研究与实现变频调速液压电梯单片机控制器的研究基于单片机γ-免疫计数器自动换样功能的研究与实现基于单片机的倒立摆控制系统设计与实现单片机嵌入式以太网防盗报警系统基于51单片机的嵌入式Internet系统的设计与实现单片机监测系统在挤压机上的应用MSP430单片机在智能水表系统上的研究与应用基于单片机的嵌入式系统中TCP/IP协议栈的实现与应用单片机在高楼恒压供水系统中的应用基于ATmega16单片机的流量控制器的开发基于MSP430单片机的远程抄表系统及智能网络水表的设计基于MSP430单片机具有数据存储与回放功能的嵌入式电子血压计的设计基于单片机的氨分解率检测系统的研究与开发锅炉的单片机控制系统基于单片机控制的电磁振动式播种控制系统的设计基于单片机技术的WDR-01型聚氨酯导热系数测试仪的研制一种RISC结构8位单片机的设计与实现基于单片机的公寓用电智能管理系统设计基于单片机的温度测控系统在温室大棚中的设计与实现基于MSP430单片机的数字化超声电源的研制基于ADμC841单片机的防爆软起动综合控制器的研究基于单片机控制的井下低爆综合保护系统的设计基于单片机的空调器故障诊断系统的设计研究单片机实现的寻呼机编码器单片机实现的鲁棒MRACS及其在液压系统中的应用研究自适应控制的单片机实现方法及基上隅角瓦斯积聚处理中的应用研究基于单片机的锅炉智能控制器的设计与研究超精密机床床身隔振的单片机主动控制PIC单片机在空调中的应用单片机控制力矩加载控制系统的研究项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!目录第一章总论11、项目名称及承办单位12、编制依据43、编制原则54、项目概况65、结论6第二章项目提出的背景及必要性81、项目提出的背景82、项目建设的必要性9第三章项目性质及建设规模131、项目性质132、建设规模13第四章项目建设地点及建设条件171、项目建设地点172、项目建设条件17第五章项目建设方案251、建设原则252、建设内容253、工程项目实施33第六章节水与节能措施371、节水措施372、节能措施38第七章环境影响评价391、项目所在地环境现状392、项目建设和生产对环境的影响分析393、环境保护措施……404、环境影响评价结论……………..……………42第八章劳动安全保护与消防441、危害因素和危害程度442、安全措施方案443、消防设施…………...45第九章组织机构与人力资源配置461、组织机构462、组织机构图46第十章项目实施进度481、建设工期482、项目实施进度安排483、项目实施进度表48第十一章投资估算及资金筹措491、投资估算依据492、建设投资估算49目录第一章总论 1第一节项目概述 1第二节可行性研究的依据 3第三节可行性研究的范围和内容 3第五节技术经济指标 4第二章项目背景和建设的必要性 5第一节项目提出的背景 5第二节项目建设的必要性 7第三章 需求分析及服务规模与标准 9第一节 需求分析 9第二节 服务规模与标准 10第四章 项目选址及建设条件 13第一节项目选址 13第二节 项目区自然条件 13第三节 项目区社会经济条件 18HYPERLINK\l"_Toc3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省宁波余姚市重点中学2025-2026学年第二学期初三物理试题期中考试试题含解析
- 2026届吉林省农安县合隆镇中学初三年级第一次质量检监测语文试题含解析
- 2026届广东省江门市恩平市达标名校中考语文试题疯狂小题抢高分含解析
- 2025-2026学年云南省招生考试(三)语文试题模拟试题含解析
- 2026届贵州省(黔东南黔南黔西南)初三第一次模拟考试(内考)英语试题试卷含解析
- 重要文件资料丢失快速查找预案
- 年度业务指标考核结果反馈函6篇范本
- 信息网络安全责任保证承诺书5篇
- 产品质量检测标准化流程产品检测与质量控制
- 2026年技术支持服务标准确认函4篇
- 1993年1月-2006年6月大学英语六级(CET-6) 真题听力原文(含试题及答案)
- 中考化学复习备考策略课件
- 瓦斯隧道安全技术交底
- 核电设备设计制造规范标准
- XX置地地产集团成本造价商业综合体万象城成本标准
- 新外研版高二英语选择性必修三unit2 life behind the lens课件
- YY/T 0216-1995制药机械产品型号编制方法
- 与贸易实务相关的国际物流业务
- 【高中地理课件】城市的辐射功能 课件 2022-2023学年高二地理人教版(2019)选择性必修二
- 测量管理体系记录表
- 精神残疾评定课件
评论
0/150
提交评论