版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计〔大作业〕报告课程名称:数据结构设计题目:宿舍管理查询系统院系:信息技术学院班级:计算机科学与技术2班设计者:戴薪国学号:202311010204指导教师:王震江设计时间:2023年1月7日—1月11日信息技术学院昆明学院课程设计〔大作业〕任务书姓名:戴薪国 院〔系〕:信息技术学院专业:计算机科学与技术学号:202311010204任务起止日期:2023年1月7日——2023年1月11日课程设计题目:宿舍管理查询系统课程设计要求:课程设计要求:〔包括原始数据、技术要求、工作要求等〕1.任务为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:(1)采用交互工作方式(2)建立数据文件,数据文件按关键字〔姓名、学号、房号〕进行排序(冒泡、选择、插入排序等任选一种)2.查询菜单:(用二分查找实现以下操作)(1)按姓名查询(2)按学号查询(3)按房号查询3.可进行删除、插入、修改等功能。4.可打印所有学生信息。工作方案及安排:第1天完成方案设计与程序框图第2、3天编写程序代码第4天程序调试分析和结果及辩论第5天课程设计报告和总结指导教师签字年月日课程设计〔大作业〕成绩学号:202311010204 姓名:戴薪国 指导教师:王震江课程设计题目:宿舍管理查询系统总结:通过本次数据结构课程设计,我学到了很多,我充分利用了这五天的时间,认真、独立的完成了作业。我觉得很满足,也很有成就感,许多曾经自己不知道的知识,现在知道了并能熟练的掌握了一些,比方:〔1〕一个函数既能调用它本身也能调用其它函数;〔2〕如fflush(stdin)函数,它的功能是清空输入缓冲区,得到正确的输入数据;如system("cls")函数,它的功能是将屏幕先前显示的内容清理掉;〔3〕熟练掌握了函数的调用。在编程与调试过程中我遇到了许多问题,具体问题如下:〔1〕以前不知道怎么把各个函数编排在一起,不能形成一个总体模块,现在经过实践与调试,已经能组装好各个函数模块,使它们实现各自的功能。〔2〕在写mian、menu()、Delete功能函数时,很繁琐。C++中的函数模板能解决这个问题,但对于C++我还是个初学者,现在还不懂得如何去运用它,所以还不能对此程序作进一步修改,但我相信,不用多久,这个问题我一定能够解决。在这次课程设计中,经过自己与同伴的编成和调试、老师和同学的帮助,我们成功的完成了这次课程设计作业,虽然它的功能还不是很多,也不是很完善,但我还是非常的兴奋,因为,它给我增添了编程方面的信心,使我更有信心去努力成为一个强力的程序员。指导教师评语:成绩:填表时间: 指导教师签名:目录一、题目分析-5-二、根本理论-5-三、总体设计-5-3.1模块分化设计-5-3.2算法设计-5-存储结构-5-流程图-6-四、具体方法步骤-6-4.1主菜单函数编写-6-4.3删除函数编写的思路分析-8-4.4删除函数的具体算法-8-4.4删除算法的时间性能分析-9-4.5函数设计-10-五、程序组装调试分析-11-5.1测试数据:-11-开始录入的数据-11-插入的数据:-11-查找的数据:-11-5.2测试输出结果〔以运行结果图表示〕:-12-菜单界面:-12-当无数据时自动跳转创立信息界面:-12-显示创立信息:-13-按姓名查找:-13-按学号查找:-14-按房号查找:-14-插入:-15-进入删除功能-15-退出-16-六、总结-16-七、参考文献-16-八、附件〔程序代码〕-16-摘要本宿舍管理查询软件是为方便宿舍管理人员实现宿舍管理查询而开发的,具有信息录入、显示、查询、排序、插入和删除功能,能实现信息修改和通过别的途径导入大量数据,可连续打印任一查询结果,但不能实现信息存盘,使用简单方便,点击程序即可运行。关键词:管理,查询〔姓名、学号、房号〕,结构体,函数一、题目分析①要实现交互工作方式,各项操作结束后均应返回主菜单;②系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即首先创立一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能;③信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;④本系统按关键字〔学号〕进行冒泡排序,采用二分查找方式分别实现按关键字〔姓名、学号、房号〕查询功能;⑤由于有些同学因为不同原因而离校,所以设计了删除功能;⑥由于有新同学入校,所以设计了插入功能;⑦当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作系统。二、根本理论用线性表中的顺序存储,存储结构采用结构体数组,查找、排序、删除、插入都采用二分法。主菜单函数、主函数都调用库函数用。三、总体设计根据上述要求,以及对题目的分析,我们将对该程序进行如下设计3.1模块分化设计该程序经过分析将分成7个大的模块:创立成员数据、排序、查找、插入、删除、主菜单函数、主函数3.2算法设计3.2.1存储结构本系统定义的存储结构采用结构体数组,结构体为:typedefstructpnode//结构体定义用于存放学生信息的节点{ charname[10];//姓名 charsex[6];//性别 charnum[16];//学号 charad[30];//家庭住址 chartel[15];//联系 charzzmm[10];//政治面貌 charprofession[40];//专业 chargread[10];//年级 charyuanxi[40];//院系 charroom[10];//房号}personnode;3.2.2流程图主菜单函数主菜单函数主函数主函数查找查找插入删除按姓名删除按学号排序输出所有学生信息按姓名查找按学号查找按房号查找显示四、具体方法步骤4.1主菜单函数编写编写主菜单函数主要调用库函数,用printf、scanf来进行输入、输出,用system("PAUSE")函数提示“按任意键继续...〞,用fflush(stdin)函数,用它来清空输入缓冲区,得到正确的输入数据。具体主菜单函数如下:voidmain()//主函数{ intm,flag=1;//m用于控制菜单的选择项flag用于控制菜单弹出 while(flag) { printf("**********************************************************\n"); printf("§【欢送进入学生宿舍管理系统】§\n"); printf("§———————————————————————————§\n"); printf("§§\n"); printf("§【1】:创立学生信息【2】:按姓名查找学生信息§\n"); printf("§§\n"); printf("§§\n"); printf("§【3】:按学号查找学生信息【4】:按房间查找学生信息§\n"); printf("§§\n"); printf("§§\n"); printf("§【5】:修改学生信息【6】:删除学生信息§\n"); printf("§§\n"); printf("§§\n"); printf("§【7】:插入学生信息【8】:打印所有学生信息§\n"); printf("§§\n"); printf("§§\n"); printf("§【9】:结束§\n"); printf("§§\n"); printf("**********************************************************\n\n"); readfile(); //output(); printf("请输入相应菜单编号:"); scanf("%d",&m); switch(m) { case0:creat(); system("PAUSE"); break; case1:readfile(); system("PAUSE"); break; case2:search1(); system("PAUSE"); break; case3:search2(); system("PAUSE"); break; case4:search3(); system("PAUSE"); break; case5:modify(); fflush(stdin); system("PAUSE"); break; case6:deleted(); system("PAUSE"); break; case7:append(); fflush(stdin); break; case8:output(); system("PAUSE"); break; case9:exit(0); } }}4.3删除函数编写的思路分析用while(!feof(fp))循环遍历整个文件查找需要删除的记录。printf("你真的要删除该生信息吗?y/n?\n");scanf("%s",&m);判断是否删除查找到的学生信息。选择"n"调用rewind(fp)函数将文件指针重新指向一个流的开头。取消删除!4.4删除函数的具体算法voiddeleted()//删除函数用于删除指定学生姓名的记录{ intk=0; charm; longoffset; charnamekey[8]; personnode*person; person=(personnode*)malloc(sizeof(personnode)); printf("\n请输入你要删除的学生姓名:"); scanf("%s",namekey); if((fp=fopen("students.txt","r+"))==NULL) { printf("\n无法翻开文件"); exit(0); } while(!feof(fp))//此循环遍历整个文件查找需要删除的记录 { offset=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); if(!strcmp(namekey,person->name)) { k=1; break; } }if(k){ printf("\n成功找到你要删除的学生信息:\n"); printf("\n%-8s%-7s%-7s%-7s%-9s%-9s%-8s%-9s%-8s%-10s\n","姓名","性别","学号","房号","地址","","政貌","专业","年级","院系"); printf("%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); printf("你真的要删除该生信息吗?y/n?\n"); scanf("%s",&m); if(m=='y')//删除确认按钮 { fseek(fp,offset,SEEK_SET);//删除记录 fprintf(fp,"%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n","","","","","","","","","",""); printf("\n删除成功!\n\n"); } else { rewind(fp); printf("\n已经取消删除!\n\n"); } } elseprintf("\n对不起,没有找到你要删除的学生信息,请确认你的输入是否正确!\n"); fclose(fp);}4.4删除算法的时间性能分析该算法时间主要消耗在移动表中元素上,删除第i个元素时,其后面的元素ai+1an都要像前移动一位,共移动了n-1个元素,所以平均移动数据元素的次数:E〔de〕=在等概率的情况下,pi=1/n,那么:E〔de〕===这说明顺序表上作删除运算时大约需要移动表中一半的元素,显然该算法的时间复杂度为O〔n〕4.5函数设计(1)create〔〕//初始条件:必须保证原有记录是空时方可建立操作结果:建立一个新的数据文件(2)readfile〔〕//初始条件:数据文件已经建立操作结果:获取次文件的信息(3)serch1〔〕按姓名查找serch2〔〕按学号查找serch3〔〕按宿舍号查找初始条件:数据文件中含有纪录操作结果:不支持模糊查询必须查询项和关键字吻合情况下才可查询。调用按不同关键字查询的子函数假设存在相应的查询结果那么显示在屏幕上,假设查找的纪录不存在那么提示该纪录不存在,请建立相应的数据纪(4)append()//添加数据纪录的函数初始条件:必须已经建立了数据文件操作结果:在数据文件中添加新的纪录假设没有建立数据文件那么添加失败。(5)deleted〔〕//删除数据纪录的函数初始条件:必须建立了数据库并且数据文件中含有数据纪录操作结果:删除输入学号的学生的一切相关纪录(6)modify()//修改数据纪录的函数初始条件:必须建立了数据库并且数据文件中含有数据纪录操作结果:修改输入的学号相对应的学生的一切信息。如不存在相应的纪录那么提示不存在(7)output()//输出函数初始条件:数据文件已经建立操作结果:起泡法排序按学号顺序输出记录本程序包含10个函数:eq\o\ac(○,1.)主函数main〔〕eq\o\ac(○,2.)新建数据文件create〔〕eq\o\ac(○,3.)查询函数serch1〔〕eq\o\ac(○,4.)查询函数serch2〔〕eq\o\ac(○,5.)查询函数serch3〔〕eq\o\ac(○,6)插入函数append()eq\o\ac(○,7.)删除数据纪录函数deleted〔〕eq\o\ac(○,8.)修改数据纪录函数modify()eq\o\ac(○,9.)数据文件读取函数readfile()eq\o\ac(○,10)查询当前所有纪录并按学号升序输出的函数output〔〕五、程序组装调试分析5.1测试数据:5.1.1开始录入的数据姓名学号房间号戴薪国2023201625陈兆强20232336275.1.2插入的数据:姓名学号房间号刘正江20236296295.1.3查找的数据:刘正江〔按姓名〕2023629〔按学号〕629〔按房间号〕5.1.4删除的数据:刘正江〔按姓名〕5.2测试输出结果〔以运行结果图表示〕:5.2.1菜单界面:5.2.2当无数据时自动跳转创立信息界面:5.2.3显示创立信息:5.2.4按姓名查找:5.2.5按学号查找:5.2.6按房号查找:5.2.7插入:5.2.8进入删除功能5.2.9退出六、总结对我们这一学期实际学到的内容的检验,在课程设计的同时不仅稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的掌握,从而提高自己的实际动手能力和独立思考的能力七、参考文献《数据结构》王震江等编著,云南大学出版社。《数据结构》〔C语言版〕,严蔚敏等,清华大学出版社,1993《数据结构题集》,严蔚敏等,清华大学出版社,1995《数据结构》,许卓群等,高等教育出版社《数据结构〔C语言版〕习题与解析》,李春葆主编,清华大学出版社。八、附件〔程序代码〕程序源代码:#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructpnode//结构体定义用于存放学生信息的节点{ charname[10];//姓名 charsex[6];//性别 charnum[16];//学号 charad[30];//家庭住址 chartel[15];//联系 charzzmm[10];//政治面貌 charprofession[40];//专业 chargread[10];//年级 charyuanxi[40];//院系 charroom[10];//房号}personnode;FILE*fp;//指向文件的指针voidcreat()//创立新数据文件的函数创立一个二进制文件用于存放学生数据{ personnode*person; person=(personnode*)malloc(sizeof(personnode));//为节点分配内存 if((fp=fopen("students.txt","w+"))==NULL){ printf("\n你没有输入文件名,无法找到文件!"); exit(0);} printf("\n请分别输入学生姓名、性别、学号、房间号、家庭住址、、政治面貌、专业、年级、院系,输入#号结束\n"); scanf("%s",person->name); while(strcmp(person->name,"#"))//该循环用于控制学生信息的录入当输入#时学生信息录入完毕{ scanf("%s%s%s%s%s%s%s%s%s",person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); fprintf(fp,"%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); scanf("%s",person->name);} fclose(fp);}voidreadfile()//文件读取函数用于翻开已有的二进制数据文件{ if((fp=fopen("students.txt","r+"))==NULL) { printf("\n不能翻开文件或者文件不存在!请录入信息:\n"); //exit(0); creat(); } fclose(fp); //printf("信息加载成功!现在你可以使用一下菜单进行操作了!\n");}voidoutput()//输出函数用于输出文件的全部信息{ personnode*person; longoffset1,offset2; charname1[10],name2[10],name3[10]; charnum1[16],num2[16],num3[16]; charroom1[10],room2[10],room3[10]; charsex1[6],sex2[6],sex3[6]; charad1[40],ad2[40],ad3[40]; chartel1[15],tel2[15],tel3[15]; charzzmm1[10],zzmm2[10],zzmm3[10]; charprofession1[40],profession2[40],profession3[40]; chargread1[10],gread2[10],gread3[10]; charyuanxi1[40],yuanxi2[40],yuanxi3[40]; person=(personnode*)malloc(sizeof(personnode)); if((fp=fopen("students.txt","r"))==NULL) {printf("\n无法翻开文件");exit(0); } while(!feof(fp))//此循环用于对文件数据中关键字学号进行从小到大冒泡排序{ inta,b,c,d;//a为循环结束判定变量b,c,d用于冒泡排序时学号交换的替换 if((fp=fopen("students.txt","r+"))==NULL) { printf("\n无法翻开文件"); exit(0); } while(!feof(fp))//从文件头开始遍历 { while(!feof(fp))//对两组数据进行排序 { offset1=ftell(fp);//获取文件内部当前指针位置 fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); strcpy(name1,person->name); strcpy(num1,person->num); strcpy(room1,person->room); strcpy(sex1,person->sex); strcpy(ad1,person->ad); strcpy(tel1,person->tel); strcpy(zzmm1,person->zzmm); strcpy(profession1,person->profession); strcpy(gread1,person->gread); strcpy(yuanxi1,person->yuanxi); if(feof(fp))break;//文件结束跳出循环 offset2=ftell(fp);//获取文件内部下一指针位置 fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); strcpy(name2,person->name); strcpy(num2,person->num); strcpy(room2,person->room); strcpy(sex2,person->sex); strcpy(ad2,person->ad); strcpy(tel2,person->tel); strcpy(zzmm2,person->zzmm); strcpy(profession2,person->profession); strcpy(gread2,person->gread); strcpy(yuanxi2,person->yuanxi); b=strlen(num1); c=strlen(num2); d=strcmp(num1,num2); if(b==c&&d>0)//如果学号1大于等于学号2怎交换全部数据 { strcpy(name3,name1); strcpy(name1,name2); strcpy(name2,name3); strcpy(num3,num1); strcpy(num1,num2); strcpy(num2,num3); strcpy(room3,room1); strcpy(room1,room2); strcpy(room2,room3); strcpy(sex3,sex1); strcpy(sex1,sex2); strcpy(sex2,sex3); strcpy(ad3,ad1); strcpy(ad1,ad2); strcpy(ad2,ad3); strcpy(tel3,tel1); strcpy(tel1,tel2); strcpy(tel2,tel3); strcpy(zzmm3,zzmm1); strcpy(zzmm1,zzmm2); strcpy(zzmm2,zzmm3); strcpy(profession3,profession1); strcpy(profession1,profession2); strcpy(profession2,profession3); strcpy(gread3,gread1); strcpy(gread1,gread2); strcpy(gread2,gread3); strcpy(yuanxi3,yuanxi1); strcpy(yuanxi1,yuanxi2); strcpy(yuanxi2,yuanxi3); fseek(fp,offset1,SEEK_SET);//将文件指针移动offset1个字节 strcpy(person->name,name1); strcpy(person->num,num1); strcpy(person->room,room1); strcpy(person->sex,sex1); strcpy(person->ad,ad1); strcpy(person->tel,tel1); strcpy(person->zzmm,zzmm1); strcpy(person->profession,profession1); strcpy(person->gread,gread1); strcpy(person->yuanxi,yuanxi1); fprintf(fp,"%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi);//排序后写入文件 strcpy(person->name,name2); strcpy(person->num,num2); strcpy(person->room,room2); strcpy(person->sex,sex2); strcpy(person->ad,ad2); strcpy(person->tel,tel2); strcpy(person->zzmm,zzmm2); strcpy(person->profession,profession2); strcpy(person->gread,gread2); strcpy(person->yuanxi,yuanxi2); fprintf(fp,"%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi);//排序后写入文件 } fseek(fp,offset2,SEEK_SET);///将文件位置指针从文件头向前移动offset2个字节 }rewind(fp);//指向头文件 while(!feof(fp))//此循环用于判断学号是否有序 { offset1=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); strcpy(num1,person->num); if(feof(fp)){a=1;break;} offset2=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); strcpy(num2,person->num); b=strlen(num1); c=strlen(num2); d=strcmp(num1,num2); if(b==c&&d<=0)a=1;//假设a为1那么有序 else{a=0;//a为0怎无序 break;} fseek(fp,offset2,SEEK_SET); } if(a)break;//a为1说明学号已经有序跳出循环 rewind(fp); } if(a)break;//假设a为1,那么学号已有序排列,跳出总循环,输出文件 }rewind(fp); printf("\n******************************************************************************\n"); printf("%50s\n","所有学生信息如下:"); printf("\n\n");printf("%-8s%-7s%-7s%-7s%-9s%-9s%-8s%-9s%-8s%-10s\n","姓名","性别","学号","房号","地址","","政貌","专业","年级","院系"); while(!feof(fp))//次循环用于输出文件 { fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); printf("%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); } fclose(fp); printf("******************************************************************************\n\n");}voidsearch1()//按姓名搜索函数{ intk=0; charnamekey[10]; personnode*person; person=(personnode*)malloc(sizeof(personnode)); printf("\n请输入学生姓名:"); scanf("%s",namekey); if((fp=fopen("students.txt","rb"))==NULL) { printf("\n无法翻开此文件"); exit(0); } while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); if(!strcmp(namekey,person->name))//比拟是否相同相同那么输出结果否那么输出未找到记录 { printf("\n\n查找成功!该生信息为:\n"); printf("\n%-8s%-7s%-7s%-7s%-9s%-9s%-8s%-9s%-8s%-10s\n","姓名","性别","学号","房号","地址","","政貌","专业","年级","院系"); printf("%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); k=1; } } if(!k)printf("\n\n对不起,没有找到你要找的学生~请确认输入是否正确~\n"); fclose(fp);}voidsearch2()//按学号搜索函数{ intk=0; charnumkey[16]; personnode*person; person=(personnode*)malloc(sizeof(personnode)); printf("\n请输入要查找的学生学号:"); scanf("%s",numkey); if((fp=fopen("students.txt","rb"))==NULL) {printf("\n无法翻开文件!");exit(0); } while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); if(!strcmp(numkey,person->num))////比拟是否相同相同那么输出结果否那么输出未找到记录 { printf("\n\n查找成功!该生信息为:\n"); printf("\n%-8s%-7s%-7s%-7s%-9s%-9s%-8s%-9s%-8s%-10s\n","姓名","性别","学号","房号","地址","","政貌","专业","年级","院系"); printf("%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); k=1; } } if(!k)printf("\n\n对不起,查无此人!请确认你的输入是否有误~\n"); fclose(fp);}voidsearch3()//按房号搜索函数{ intk=0,m=1; charroomkey[10]; personnode*person; person=(personnode*)malloc(sizeof(personnode)); printf("\n按房间号查找~请输入房间号:"); scanf("%s",roomkey); if((fp=fopen("students.txt","rb"))==NULL) { printf("\n无法翻开文件!"); exit(0); }while(!feof(fp)){ fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); if(!strcmp(roomkey,person->room))//比拟是否相同相同那么输出结果否那么输出未找到记录 { printf("\n查找到第%d个学生,信息为:\n",m);//printf("\n该生信息为:\n"); printf("\n%-8s%-7s%-7s%-7s%-9s%-9s%-8s%-9s%-8s%-10s\n","姓名","性别","学号","房号","地址","","政貌","专业","年级","院系"); printf("%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); k=1; m++; }} if(!k)printf("\n\n对不起,查无此人!请确认你的输入是否有误?\n"); fclose(fp);}voidappend()//插入函数用于像已有文件插入一条新的学生信息记录{ personnode*person; person=(personnode*)malloc(sizeof(personnode)); if((fp=fopen("students.txt","a"))==NULL) { printf("\n无法翻开文件"); exit(0); } printf("\n请输入学生姓名、性别、学号、房间号、家庭住址、、政治面貌、专业、年级、院系(输入'#'号保存插入信息):\n"); scanf("%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); fprintf(fp,"%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); fclose(fp); printf("\n插入成功!\n");}voidmodify()//更新函数用于修改指定学生姓名的记录{ intk=0; longoffset; charnamekey[10]; personnode*person; person=(personnode*)malloc(sizeof(personnode)); printf("\n请输入你要修改的学生姓名:"); scanf("%s",namekey); if((fp=fopen("students.txt","r+"))==NULL) { printf("\n无法翻开文件"); exit(0); }while(!feof(fp)){ offset=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); if(!strcmp(namekey,person->name))//比拟是否相同 { k=1; break; }} if(k)//相同输出记录并进行修改 { printf("\n成功找到你要修改的学生信息:\n"); printf("\n%-8s%-7s%-7s%-7s%-9s%-9s%-8s%-9s%-8s%-10s\n","姓名","性别","学号","房号","地址","","政貌","专业","年级","院系"); printf("%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); printf("\n请输入新的学生姓名、性别、学号、房间号、家庭住址、、政治面貌、专业、年级、院系(输入'#'号保存插入信息):\n"); scanf("%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); fseek(fp,offset,SEEK_SET); fprintf(fp,"%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); printf("\n修改成功!\n"); } else printf("\n对不起,没有找到你要进行修改的学生信息!\n请确认你的输入是否正确或者使用插入菜单插入~\n"); fclose(fp);}voiddeleted()//删除函数用于删除指定学生姓名的记录{ intk=0; charm; longoffset; charnamekey[8]; personnode*person; person=(personnode*)malloc(sizeof(personnode)); printf("\n请输入你要删除的学生姓名:"); scanf("%s",namekey); if((fp=fopen("students.txt","r+"))==NULL) { printf("\n无法翻开文件"); exit(0); } while(!feof(fp))//此循环遍历整个文件查找需要删除的记录 { offset=ftell(fp); fscanf(fp,"%s%s%s%s%s%s%s%s%s%s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,person->zzmm,person->profession,person->gread,person->yuanxi); if(!strcmp(namekey,person->name)) { k=1; break; } }if(k){ printf("\n成功找到你要删除的学生信息:\n"); printf("\n%-8s%-7s%-7s%-7s%-9s%-9s%-8s%-9s%-8s%-10s\n","姓名","性别","学号","房号","地址","","政貌","专业","年级","院系"); printf("%-8s%-7s%-7s%-7s%-9s%-9s%-7s%-9s%-8s%-9s\n",person->name,person->sex,person->num,person->room,person->ad,person->tel,pers
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源汽车维修服务保障方案
- 展览馆吊顶施工方案细节
- 计算器课程设计需求分析
- 铝板幕墙施工进度管理方案
- 2024至2030年中国平纹麻布数据监测研究报告
- 装配式建筑预制构件市场推广方案
- 2024至2030年三维柔性焊接工作台项目投资价值分析报告
- 2024年自动风淋室项目可行性研究报告
- 大型活动安保工作实施方案
- 2024年中国纯毛男西服市场调查研究报告
- 2023边缘物联代理技术要求
- 普宁市北部中心水厂榕江取水工程环境影响报告书
- 不良资产项目律师法律尽调报告(模板)
- 接交车辆检查表-原版
- 剪辑师职业生涯规划与管理
- 水稻栽培技术-水稻常规栽培技术
- 四风整改台账清单
- 标准报价单模板(二)
- 【期中】第1-4单元易错题专项攻略-数学四年级上册苏教版(含答案)
- 《mc入门教程》课件
- 福建省厦门市第一中学2023-2024学年七年级上学期期中数学试卷
评论
0/150
提交评论