C语言程序设计-学生信息管理系统_第1页
C语言程序设计-学生信息管理系统_第2页
C语言程序设计-学生信息管理系统_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计姓名:徐宗博学号:************班级:061092指导教师:曹老师2011年6月25日目录第一章:实习内容TOC\o"1-5"\h\z实习内容简介(2)程序代号说明(3)第二章:程序流程图第三章:函数模块介绍3.1读取文件、存储文件(6)3.2管理系统模块(8)3.3恢复区系统模块(12)3.4功能展示(12)第四章:实习总结(16)第五章:实习体会(17)附录:参考文献(19)源代码(19)第一章:实习内容1.1实习内容简介题目:学生通讯录管理系统要求:1.可实现信息的添加、删除,可按学号、姓名查询;学生信息必须包含学号、姓名、学院、专业、籍贯。地址、电话号码;必须有注释。日期:2011年6月20日至27日,共8个半天。地点:信息楼301指导老师:曹雪莲完成情况:程序可完成信息的添加,可按学号、姓名分别查询;程序可按姓名、学号分别删除,并在删除前显示删除学生的全部信息;按姓名删除,若出现同名情况,会依次出现系统提示是否删除,可选择删除或跳过;

在程序文件夹中有一“学生信息库”的txt文件,可查看学生系统里全部学生信息;设置有一个恢复区系统,可输出、查询删除的信息,并在可同文件夹中“删除信息库”的txt文件中查看删除信息;总体结构如下:1.2程序代号说明代号说明结构体student结构体stu全局变量num学号inf学生信息,包含左结构体student全部信息n链表节点数量name姓名next本类型结构体指针rhead恢复区链表头指针academy学院searchnum目标个数major专业province省份address地址phone电话号码函数add增加delet删除(按姓名或学号)search查找search_num搜索学号search_name搜索姓名print输出链表上信息print1输出链表上单个节点的信息save以二进制格式储存数据txtsave以文本格式储存数据crete从二进制文件中读取信息,建立链表deletinput将删除信息导入恢复区链表system管理系统主要程序recover恢复区系统主要程序此外,局部变量的含义比较固定:head链表头指针,右与rhead一同出现则代表管理系统链表头指针select、input为选择的值程序流程图:本次实习我的思路就是,先从二进制文件中读取信息,形成链表,对链表进行基本操作,如输出、添加、删除、查找。程序结束时将链表保存在二进制文件和文本文件中。管理系统流程图:运行管理系统部分时,先从文件"information.xls”中读取数据(若无该文件则创建文件),构建链表;后续操作都是对于链表进行操作,如添加、查找、删除、输出等;离开该部分时则保存链表里的信息到已存在的ainformation.xls”,并以ASCII形式存储至“学生信息库.txt”,方便检查。恢复区系统流程图:恢复区系统思路与管理系统思路类似,连函数调用都是一样的,二进制文件名为“dinformation.xls”,文本文件名为“删除信息库.txt”。具体函数模块功能将在第三章中具体介绍。第三章:函数模块介绍程序分为管理系统和恢复区系统两部分和读取文件、存储文件四部分,以下分别介绍。3.1读取文件、存储文件读取文件该函数模块(程序名为creat)于管理系统或恢复区系统运行前运行,目的是读取二进制文件信息,构建链表;若无目标文件,则创建文件。返回值为头指针。函数主体为:structstu*p1,*p2;structstu*head;while(fread(&(p1->inf),LEN,1,fp))//读取数据{n=n+1;//若读取数据成功节点数加一if(n==1)head=p1;//给头结点赋值elsep2->next=p1;//加新的结构体p2=p1;p1=(structstu*)malloc(LENS);}fclose(fp);p2->next=NULL;//尾结点处指针置0return(head);存储文件该函数模块分为两部分,以二进制形式存储链表信息(程序名为save)和以文本形式存储(程序名为txtsave)。二进制形式文件是为了读取文件,优点是快速;文本文件是为了方便检查,优点是明确可见。无返回值。二进制形式存储程序为:voidsave(structstu*head,charfilename[20])//存储链表信息(FILE*fp;structstu*p;p=head;fp=fopen(filename,"wb");//以二进制方式打开文件while((p!=NULL)&&fwrite(&(p->inf),LEN,1,fp))//写入文件(p=p->next;}fclose(fp);}//其中head为链表头指针,filename为存储文件名,在主函数中已有定义。存储在文本文件程序为:voidtxtsave(structstu*head,charfilename[20])//以文本形式将链表输入文件(FILE*fp;structstu*p;p=head;fp=fopen(filename,"w");//以文本形式打开while(p!=NULL)//链表不到尽头不停止(fprintf(fp,”%ld”,(p->inf).num);//向文本文件中写入数据fprintf(fp,"%10s”,(p->inf).name);fprintf(fp,"%10s",(p->inf).academy);fprintf(fp,"%10s”,(p->inf).majoy);fprintf(fp,"%10s",(p->inf).province);fprintf(fp,"%10s",(p->inf).address);fprintf(fp,"%20s\n",(p->inf).phone);p=p->next;}}3.2管理系统模块

管理系统(名为system)主要有四个函数功能部分,分别为添加、删除、查找、输出,以下依次介绍:添加该模块函数名为表中从键盘上输入信息structstu*p1,*p2;//管理系统(名为system)主要有四个函数功能部分,分别为添加、删除、查找、输出,以下依次介绍:添加该模块函数名为表中从键盘上输入信息structstu*p1,*p2;//p2=head;p1=(structstu*)malloc(LENS);//输入信息printf("\n学号(输入数值请小于32756):");scanf("%d",&((p1->inf).num));printf("\nprintf("\nprintf("\nprintf("\nprintf("\nprintf("\nadd,无返回值,参数为链表头指针,功能为向已建立的链函数主体为:建立结构体指针姓名:学院:专业:省份:地址:IIIIIIII电话号码:while((p2->next)!=NULL)//{p2=p2->next;}p2->next=p1;//移动指针p2=p1;);scanf("%s",(p1->inf).name););scanf("%s",(p1->inf).academy););scanf("%s",(p1->inf).majoy););scanf("%s",(p1->inf).province);");scanf("%s",(p1->inf).address);");scanf("%s",(p1->inf).phone);移动指针到链表尾函数名为delet,返回值为指向结构体的链表头指针,参数为链表头指针,可按姓名和学号删除。若按姓名删除时,为防止同名情况,则查询到一个目标,就显示出信息,并提示是否删除。按学号查找的函数主体为:printf(-请输入拟删除学生学号:\n");longsnum=0;scanf("%ld”,&snum);structstu*p1,*p2;p1=head;while(snum!=p1->inf.num&&p1->next!=NULL)//p1指向的学号不是要找的节点,并且后面还有节点{p2=p1;p1=p1->next;}//p1后移if(snum==p1->inf.num)//找至U目标{print1(p1);deletinput(p1);//print1()为输出相应指针指向的节点信息deletinput()为向恢复区系统链表输入信息的函数,在后续3.3中会提及if(p1==head)head=p1->next;//若p1指向头节点,将第二个节点位置赋予headelsep2->next=p1->next;//否则将下一结点位置赋给前一节点位置n--;}elseprintf("该学生不存在");return(head);按姓名查找(包含同名情况):intselect=0,count=0;//selet选择删除与否,count代表删除次数charsname[20];//定义要搜的名字structstu*p1,*p2;p1=head,p2=head;printf("请输入学生姓名:\n");scanf("%s”,sname);//输入学号while(p1!=NULL)//历遍链表{if(strcmp(sname,p1->)==0)//与目标名字是否一致,相同为0{print1(p1);//若符合姓名条件,显示信息printf("删除该生信息?\n删除选1\n按其它键不删除\n");//保证达到目标姓名时显示学生信息,可选择不删除scanf("%d",&select);if(select!=1){p2=p1;p1=p1->next;continue;}//不删除就再次循环else{n--;deletinput(p1);count++;//删除数加一if(p1==head)head=p1->next;//删除信息elsep2->next=p1->next;//更改指针,绕过目标}}p2=p1;p1=p1->next;}if(count==0)printf("该生信息不存在");//若未删除则视为未发现目标学生return(head);查找函数名为search,参数为链表头指针,无返回值。其中查找可按姓名与学号进行查找,若找到目标即出现在屏幕;若出现同名情况,则依次显示。查找与删除函数语句类似,但是删除要求目标的前一个节点的指针与目标节点的指针都能知道;而查找要求则低多了。因为这个原因,在加上我是先写的查找,所以删除中未调用查找函数。按学号查找函数主体如下:longsnum;//定义要查询学号变量printf(-请输入学号:\n");scanf("%ld",&snum);//输入学号while(p!=NULL)//历遍链表{p=search_num(p,snum);//此为调用函数,效果是查找到与目标相同的信息然后返回相应指针if(p!=NULL)print1(p);//若查找到目标,输出elsebreak;p=p->next;//传递指针,继续}按姓名查找函数主体如下:charsname[20];//定义要查询姓名的变量printf(-请输入姓名:\n");scanf("%s”,sname);//输入姓名while(p!=NULL){p=search_name(p,sname);//与上文中search_num类似,返回同名目标的指针if(p!=NULL)print1(p);//若查找到目标,输出elsebreak;p=p->next;//传递指针}输出函数名为print,参数为链表头指针head,无返回值。函数作用就是沿链表依次输出学生信息。函数主体为:printf("全体学生数据如下:\n");if(n==0){printf("无学生信息");return;}//若节点为0则返回

structstu*p;p=head;while(p!=NULL)//循环输出printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf("\n姓名%s”,(p->inf).name);"\n学院%s”,(p->inf).academy);"\n专业%s”,(p->inf).majoy);"\n省份%s”,(p->inf).province);"\n地址%s",(p->inf).address);"\n电话号码%s\n”,(p->inf).phone);p=p->next;3.3恢复区系统模块恢复区系统(其名为recover)是为了显示被删除信息而建立的,在函数运行之初便建立了恢复区链表,头指针设为rhead,与管理系统头指针head相区别。并且,rhead被设为全局变量,方便被函数调用。恢复区系统主要有查找、输出功能,其功能模块基本调用管理系统的函数,所以不再赘述。而恢复区的输入函数,即管理区删除信息时将信息输入恢复区链表的函数,上文已提及,即deletinput,此为连接恢复区与管理系统的桥梁,只不过是单行的。函数为:voiddeletinput(structstu*p)//将删除信息导入恢复区链表,p为要删除信息的指针structstu*p1,*p2;p1=rhead;//恢复区链表头节点位置while(p1->next!=NULL)//指针置于链表尾端{p1=p1->next;}p2=p1;p1=(structstu*)malloc(LENS);//复制结构体信息p1->inf.num=p->inf.num;strcpy(p1->,p->);strcpy(p1->inf.academy,p->inf.academy);//复制字符数组,以下类似strcpy(p1->inf.majoy,p->inf.majoy);strcpy(p1->vince,p->vince);strcpy(p1->inf.address,p->inf.address);strcpy(p1->inf.phone,p->inf.phone);p2->next=p1;p1->next=NULL;//链表尾设为NULL}以上程序函数模块基本介绍完毕,由于篇幅有限,很多函数模块只摘录了主体,若仍有疑惑处,可参考附录中的源代码。3.4功能展示主界面:管理系统:voidsystem()添加:voidadd(structstu*head)可连续添加查找:voidsearch(structstu*head)删除:structstu*delet(structstu*head)按学号删除:按姓名查询,可面对重名情况:输出:voidprint(structstu*head)恢复区系统菜单:voidrecover()文本形式保存:voidsave(structstu*head,charfilename[20])删除信息导入恢复区链表:voiddeletinput(structstu*p)第四章:实习总结本次实习,我制作了两个版本的程序,一个是简版,一个是升级版。其实,简版就是管理系统,升级版在简版的基础上还包含了恢复区系统。这也算是实现了程序的升级吧,安全性方面算是达标了。本次实习的不足主要有:实用性不足。程序中学生信息定义的是长整型,故范围有限,不能大于32756,否则就会溢出;如果定义为无符号的长整,也不过翻一番而已,并未增添多少位,我校学号可是有11位。但这样方便比较给变量赋值,并且在查找中已有查找姓名字符串的应用了,用长整型丰富了查找类型;其实完全可以定义学号为字符型数组,虽说浪费空间,但是方便输入较长数值,且比较也很方便,可以直接调用查找姓名字符串的函数。程序中函数模块利用率不高,除了读取、存储、查找、输出这四个模块被两个系统调用外,其他删除、添加只有管理系统用到;倒是printl这么一个输出单一节点信息的程序被调用多次;函数模块十分庞大,很多程序语句充斥在其中,没有很好的分成几部分子函数,方便调用,这也导致了函数调用率不高;因为思路原因,程序中有三个全局变量,不利于程序的移植,可移植性不高;程序中查找模块与删除模块没有结合好,导致在删除中又查找了一遍;说到底还是目标不一样,查找函数只要求目标节点的指针,而删除函数要前一个节点和目标节点的指针,而且链表是单向的,知道后一个节点但不能知道前一个节点。若用双向链表,那样就可以将删除与查找较好的结合在一起了。恢复区只有查找、输出功能,没有恢复与删除功能,如此只能添加不能删除,恢复区文件会越来越大;因为时间问题没有建立恢复函数,其实建立也不难,只是会与恢复区导入函数类似,再增加一全局变量而已;使用链表所以未排序。如果要给链表排序,可以在插入信息时就按顺序插入,但是这势必增加程序运行负担,而且效率不高,因为链表是单向的。可以用二叉树,如果那样的话效率就高多了,但是二叉树我还不会。程序视图就是C语言的黑框,没有美观可言。C+梯视图好一些,我也想过用C+端译一个窗口,然后在程序中调用。但是C+砸没学会,而且在调试程序的过程中遇到一些困难让我遗忘了这个想法,曾看程序看到凌晨两点,所以想法没有实践。在软件技术普及的今天,做个数据库已是小菜一碟,很到软件可以使用,如MicrosoftOfficeAccess,并且功能极其强大,比我花了几天时间做出来的高级不知多少倍。与那些专业程序相比,我的这程序不值一提,也就是练习练习C语言而已。第五章:实习感受此次实习在一个凉爽的夏日开始,这在武汉极反常。因为我们考试基本考完了,只剩下一门英语了,所以实习时间比较充裕。实习的题目也不算太难,思路很清晰,总共三步走:1.读取文件;2.处理链表;3.保存文件。操作的主体是链表,原以为会很轻松,但还是遇到很多问题,以前上课时从未想到过。经历过基本一天都在看程序的时间,我发现我懂的太少,要学的太多。对文件的操作我一直都没注意,现在才发现其乐无穷;以前觉得链表很难,现在轻松写出程序。学习与实践果然是不可分割的。实习中,大家八仙过海各显神通,用链表是比较传统的,而且节省内存,有的用数组,这也可以理解,方便使用,排序便利;有的直接用文件C语句查询、删除,让我大开眼界,文件还能这么用!在写报告时看到一篇用指针数组做的程序,相当有意思。

发现水平还是不够,同学可以用C语言编出一个比较漂亮的界面,还可以随意调用文件操作,实在让人赞叹不已。此次实习加强了我对链表的理解,很多以前迷糊的概念得到了明确,亦让我感到C语言强大之处,直接操作内存,实在很暴力。一句诗概括此次实习,“山重水复疑无路,柳暗花明又一村”;如今C语言实习已然结束,但是对于计算机语言的学习决不能放松,“雄关漫道真如铁,而今迈步从头越”。现在的世界是信息化的,我们现在对于Matlab的要求也很大,C语言也是其基础。路漫漫其修远兮,吾将上下而求索。感谢曹老师抽出时间将C语言实习提前和这八天来的指导,同时亦感谢大家这些天来的支持与帮助,此外额外感谢武汉夏天罕见的凉爽天气,感谢生活。附录参考书目谭浩强着〈〈C语言程序设计》2005年7月第3版298-299、300、302-303、338页吴煌坚学长的实习报告源代码#include<stdio.h>#include<malloc.h>#include<string.h>#defineNULL0#defineLENsizeof(structstudent)#defineLENSsizeof(structstu)structstudent//学生信息结构体{longnum;//学生学号charname[20];//学生姓名characademy[20];//学院charmajoy[10];//专业charprovince[10];//省份charaddress[20];//地址charphone[11];//电话号码};structstu//带学生信息结构体的链表单位{后续链表地址structstudentinf;structstu*next;//后续链表地址};intn;//记录节点个数intsearchnum;//structstu*rhead;//structstu*creat(char头指针{structstu*head;//structstu*p1,*p2;//搜索个数,保证未搜索到时可显示没搜到方便全局调用恢复区链表创建链表,从文件中读取数据,返回filename1[20])//链表头指针指针变量p1=p2=(structstu*)malloc(LENS);FILE*fp;//打开文件读取数据if((fp=fopen(filename1,"rb"))==NULL)//{printf("暂无任何学生信息\n");fp=fopen(filename1,"wb+");//建立文件fclose(fp);p1->next=NULL;return(p1);}else//读取文件信息,建立链表{若文件不存在则建立文件n=0;//此时无结点head=p1;while(fread(&(p1->inf),LEN,1,fp)){n=n+1;if(n==1)head=p1;//elsep2->next=p1;//p2=p1;p1=(structstu*)malloc(LENS);}fclose(fp);p2->next=NULL;//尾结点处指针置0return(head);给头结点赋值加新的结构体}}voidsave(structstu*head,charfilename[20])//{存储链表信息FILE*fp;structstu*p;p=head;fp=fopen(filename,"wb");//以二进制方式打开文件while((p!=NULL)&&fwrite(&(p->inf),LEN,1,fp))//写入文件{p=p->next;}fclose(fp);}voiddeletinput(structstu*p)//将删除信息导入恢复区链表{structstu*p1,*p2;p1=rhead;//恢复区链表头节点位置while(p1->next!=NULL)//指针置于链表尾端{p1=p1->next;}p2=p1;p1=(structstu*)malloc(LENS);//复制结构体信息p1->inf.num=p->inf.num;strcpy(p1->,p->);strcpy(p1->inf.academy,p->inf.academy);strcpy(p1->inf.majoy,p->inf.majoy);strcpy(p1->vince,p->vince);strcpy(p1->inf.address,p->inf.address);strcpy(p1->inf.phone,p->inf.phone);p2->next=p1;p1->next=NULL;}voidtxtsave(structstu*head,charfilename[20])//以文本形式将链表输入文件{FILE*fp;structstu*p;p=head;fp=fopen(filename,"w");//以文本形式打开while(p!=NULL)//链表不到尽头不停止{fprintf(fp,"%ld",(p->inf).num);//向文本文件中写入数据fprintf(fp,"%10s",(p->inf).name);fprintf(fp,"%10s",(p->inf).academy);fprintf(fp,"%10s",(p->inf).majoy);fprintf(fp,"%10s",(p->inf).province);fprintf(fp,"%10s",(p->inf).address);fprintf(fp,"%20s\n”,(p->inf).phone);p=p->next;}}voidprint1(structstu*p)//输出单个学生结构体信息(printf("\n学号%d",(p->inf).num);printf("\n姓名%s",(p->inf).name);printf("\n学院%s",(p->inf).academy);printf("\n专业%s",(p->inf).majoy);printf("\n省份%s",(p->inf).province);printf("\n地址%s",(p->inf).address);printf("\n电话号码%s\n",(p->inf).phone);}structstu*search_name(structstu*p,charsname[20])//按姓名搜索(while(p!=NULL)(if(strcmp(sname,p->)==0){++searchnum;return(p);}//若查找到目标,返回指针p=p->next;}if(searchnum==0)printf("没有该学生信息");return(NULL);//返回NULL以保证返回值}structstu*search_num(structstu*p,longsnum)//按学号搜索{while(p!=NULL){if(snum==(p->inf.num)){++searchnum;return(p);}//若查找至U目标,返回指针p=p->next;if(searchnum==0)printf("没有该学生信息");return(NULL);//返回NULL以保证返回值}voidadd(structstu*head)//添加信息{intinput=1;//给输入按钮赋初值structstu*p1,*p2;//建立结构体指针p2=head;while(input!=0){printf("请选择:\n输入0返回主菜单\n输入1继续\n");scanf("%d",&input);//输入按钮赋值if(input==0)break;//判断是否返回主菜单if(n==0)//链表无节点,给*head填充数据{printf("\n学号(输入数值请小");scanf("%d",&((head->inf).num));printf("\nprintf("\nprintf("\nprintf("\nprintf("\nprintf("\n于32756));scanf("%s",(head->inf).name););scanf("%s”,(head->inf).academy););scanf("%s”,(head->inf).majoy);");scanf("%s",(head->inf).province);");scanf("%s",(head->inf).address);II姓名:学院:专业:省份:地址:电话号码:");scanf("%s",(head->inf).phone);增加节点,节点数n加IIIIIIn++;p2->next=NULL;continue;//环,进入下一次}p1=(structstu*)malloc(LENS);//printf("\n学号(输");scanf("%d",&((p1->inf).num)););scanf("%s",(p1->inf).name););scanf("%s",(p1->inf).academy););scanf("%s",(p1->inf).majoy););scanf("%s",(p1->inf).province);");scanf("%s",(p1->inf).address);");scanf("%s",(p1->inf).phone);移动指针到链表尾输入信息入数值请小1,同时跳出此次循于32756)printf("\nprintf("\nprintf("\nprintf("\nprintf("\nprintf("\n姓名:学院:专业:省份:地址:IIIIIIII电话号码:while((p2->next)!=NULL)//{p2=p2->next;}p2->next=p1;//移动指针p2=p1;p2->next=NULL;n++;//节点数加1}}voidsearch(structstu*head)//搜索信息(searchnum=0;if(n==0){printf(”此时无数据");return;}//节点数为0状态structstu*p;p=head;printf("请输入拟搜索信息:\n");printf("按姓名查找请按1\n按学号查找请按2\n");//分类查找intinput=0;scanf("%d”,&input);//导入分类if(input==1)//按姓名查找{charsname[20];printf("请输入姓名:\n");scanf("%s”,sname);//输入姓名while(p!=NULL){p=search_name(p,sname);if(p!=NULL)print1(p);//若查找到目标,输出elsebreak;p=p->next;//传递指针}}elseif(input==2)//按学号查找{longsnum;printf("请输入学号:\n");scanf("%ld”,&snum);//输入学号while(p!=NULL){p=search_num(p,snum);

if(p!=NULL)print1(p);//若查找到目标,输出elsebreak;p=p->next;//传递指针}}else{printf("输入错误”);return;}}structstu*delet(structstu*head)//删除信息{if(n==0){printf("无学生信息”);return(head);}intinput=0;//选择变量:学号、姓名printf("按姓名删除请按1\n按学号删除请按2\n");//分类删除scanf("%d",&input);if(input==2)//按学号删除(学号默认唯一){printf("请输入拟删除学生学号:\n");longsnum=0;scanf("%ld",&snum);structstu*p1,*p2;p1=head;while(snum!=p1->inf.num&&p1->next!=NULL)//p1指向的学号不是要找的节点,并且后面还有节点{p2=p1;p1=p1->next;}//p1后移if(snum==p1->inf.num)//找至U目标{print1(p1);deletinput(p1);if(p1==head)head=p1->next;//若p1指向头节点,将第二个节点位置赋予headelsep2->next=p1->next;//否则将下一结点位置赋给前一节点位置n--;}elseprintf("该学生不存在");return(head);}elseif(input==1)//按姓名删除(姓名可以重复)选择删除与否{intselect=0,count=0;//charsname[20];选择删除与否structstu*p1,*p2;p1=head,p2=head;printf("请输入学生姓名:\n");scanf("%s",sname);//输入学号while(p1!=NULL)//历遍链表{if(strcmp(sname,p1->)==0){print1(p1);//若符合姓名条件,显示信息printf("删除该生信息?\n删除选1\n按其它键不删除\n");//保证达到目标姓名时显示学生信息,可选择不删除scanf("%d”,&select);if(select!=1){p2=p1;p1=p1->next;continue;}//不删除就再次循环else{n--;deletinput(p1);count++;//删除数加一if(p1==head)head=p1->next;//删除信息elsep2->next=p1->next;//更改指针,绕过目标}}p2=p1;p1=p1->next;}if(count==0)printf("该生信息不存在");//若未删除则视为未发现目标学生return(head);}else{printf("输入错误");return(head);}}voidprint(structstu*head)//输出全部数据•数据{printf("全体学生数据如下:\n");if(n==0){printf("无学生信息");return;}//若节点为0则返回structstu*p;p=head;while(p!=NULL)//循环输出

printf("\n学号%d",(p->inf).num);printf("\n姓名%s",(p->inf).name);printf("\n学院%s",(p->inf).academy);printf("\n专业%s",(p->inf).majoy);printf("\n省份%s",(p->inf).province);printf("\n地址%s",(p->inf).address);printf("\n电话号码%s\n",(p->inf).phone);p=p->next;}}voidsystem()(命名系统数据库命名恢复区文件数据库命名系统文本文件命名恢复区文本文件struct命名系统数据库命名恢复区文件数据库命名系统文本文件命名恢复区文本文件charfilename1[20]="information.xls”;//charfilename2[20]="dinformation.xls”;//charfilename3[20]="学生信息库.txt”;//ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论