语c言期末设计报告学生信息录入系统大学论文_第1页
语c言期末设计报告学生信息录入系统大学论文_第2页
语c言期末设计报告学生信息录入系统大学论文_第3页
语c言期末设计报告学生信息录入系统大学论文_第4页
语c言期末设计报告学生信息录入系统大学论文_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

《C语言课程设计项目报告》系 部: 计算机科学系班 级: 计算机应用(一)班姓名:指导老师:时间:2013年12月27日前言随着计算机的飞速发展,人们对控制计算机的语言也越来越要求接近人类思考的习惯。虽然汇编语言是时空效率最高的机器语言,但它的编写过程繁琐,不直观,需要对硬件的功能非常了解。所以C语言就孕育而生了。C语言的书写习惯比较符合人们的思维方式,所以写起来比较流畅。C语言的语句格式比较简单,方便人们记忆。结构化的C语言类型有三类:循环、分支、顺序三种,编写思路固定。我们的程序是用VisualC++6.0版来编写的。主要用于学校对学生入学信息的录入和查询功能。VisualC++系列是由Microsoft公司在1993年推出的,经过不断的更新,现在的VisualC++已经成为广大编程人员首先的编程工具。虽然Microsoft公司在6.0之后又推出了7.0版,但由于使用的局限性过大,所以在实际中用得最多的还是6.0版。我们组的C语言程序报告分为7个部分。设计任务:让读者知道我们的程序主要完成哪些功能。以及对功能的一些简单介绍。分析思路:主要介绍完成一个功能模块所用到的函数和编程同学的思路。流程图:用图形的方式来介绍程序实现的功能,让读者更好的理解程序的运行过程。代码区:全盘托出我们所编写的C语言程序,可以让用户自己去添加自己想要的功能,删除对自己没有用的功能。执行效果:对已经编写完整的程序进行运行演示,各个功能模块的演示。总结:主要叙述在做程序的过程中遇到的困难,自己是如何面对困难,寻找方法,最后解决困难的一个过程。和自己的一些心里的一些想法和感悟。参考文献:主要说明我们做这次任务所看的一些相关书籍和资料。一:设计任务1.用Visual

C++

6.0实现该系统;2.对学生信息(姓名、学号、性别、年龄、生源地、通讯地址),学生信息进行管理有录入、保存、显示、查询、修改、删除、显示已有通讯录、退出系统。3.学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成的功能:(1)录入功能:按每个学生的姓名、年龄、性别、年龄、生源地、通讯地址。(2)保存功能:按个人信息用文件保存,可以一次完成若干条记录的输入。(3)查询功能:按姓名和查找学生信息记录,并显示。(4)修改功能:按每个学生的学号、姓名、年龄、生源地、通讯地址等进行修改。(5)删除功能:按每个学生的姓名、性别、年龄、生源地、通讯地址删除。(6)添加功能:在原有的内容的基础上添加新的同学信息。(7)显示:显示全部学生的信息。(8)退出:退出整个程序。思路分析总菜单代码#include<stdio.h> /****标准输入输出函数****/#include<stdlib.h> /****系统调用函数****/#include<string.h> /****字符串控制函数****/#defineN2 #definenull0structst{ charname[50]; /***姓名****/ intxh; /***学号****/ charsex[50]; /***性别****/ intnl; /***年龄****/ charsyd[50]; /***生源地****/ inttxl; /***通讯地址****/ };voidmain(){ system("color06"); sta[N]; inti; voidadd(sta[],intn); voidxs(sta[],intn); voidxg(sta[],intn); voidsc(sta[],intn); voidsave(ststud[],intn); voidlr(sta[],intn); voidcx(sta[],intn); do { printf("\t**\n"); printf("\t****************计应<1>班*************************\n"); printf("\t陆老师!您辛苦了!\n"); printf("\t谢谢您一直默默对我们付出\n"); printf("\t一直严格要求我们!\n"); printf("\t*************学生信息管理系统********************\n"); printf("\t/<1.>录入学生信息 \n"); printf("\t|<2.>保存学生信息|\n"); printf("\t|<3.>查询学生信息|\n"); printf("\t|<4.>修改学生信息|\n"); printf("\t|<5.>删除学生信息|\n"); printf("\t|<6.>增加学生信息|\n"); printf("\t|<7.>显示已有通讯录|\n"); printf("\t<0.>退出此系统/\n"); printf("\t***************输入选择项<1-7>******************\n"); printf("\n"); scanf("%d",&i); if(i==0) { system("color07"); printf("欢饮使用本系统!(学生信息管理系统!作者:louby)\n)"); break; } else { switch(i) { case1:lr(a,N);// 录入1 break; case2:save(a,N); // 保存 break; case3:cx(a,N); break; case4:xg(a,N); // 修改记录 break; case5:sc(a,N); // 删除 break; case6:add(a,N); // 增加信息 break; case7:xs(a,N); // 打开已有通讯录 break; } } }while(1);}总界面由do--while语句、if--else语句和switch语句组成。程序开始执行时,先遇到do,无条件执行下面的程序。显示由printf编写的提示信息,用户可以开始选择。当用户选择8时,程序执行if语句中的命令,显示退出信息并退出整个程序。当用户选择1--7的任意数时,程序开始执行switch中相同标号的case后面的函数调用部分。执行完调函数后,执行break语句,跳出选择。执行while()由于()中的值为1,程序将返回do所在的位置再次显示提示信息。由于调函数是在do--while语句的内部,所以每次执行完一个功能后都会显示选项,方便用户选择。(2)录入区代码voidlr(sta[],intn) // 输入学生信息 { inti;inty;printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%d",&y); while(y!=-1) { printf("请录入%d个学生信息\n",n); fflush(stdin); for(i=0;i<n;i++) { printf("姓名:"); scanf("%s",a[i].name); printf("学号:"); scanf("%d",&a[i].xh); printf("性别:"); scanf("%s",a[i].sex); printf("年龄:"); scanf("%d",&a[i].nl); printf("生源地:"); scanf("%s",a[i].syd): printf("通讯录(电话):"); scanf("%d",&a[i].txl); printf("\n"); //save(a,N); } printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%d",&y); }}Lx函数是用来录入学生信息的函数,由已定义的结构体数组a[],整型变量n作为主函数值传递的对象(以后的调函数不再说明)。Printf中为提示信息。For语句用于循环输入多个学生的信息.(3)保存区代码// 保存voidsave(sta[],intn){ FILE*fp; inti; system("color04");if((fp=fopen("d:\\student.txt","w"))==NULL) { printf("保存失败!\n"); exit(0); } else { fflush(fp); for(i=0;i<n;i++) { fprintf(fp,"%s%d%s%d%s%d\n",a[i].name,a[i].xh,a[i].sex,a[i].nl,a[i].syd,a[i].txl); // fread(&a[i],sizeof(structst),1,fp);//这个函数至对于以二进制文件操作,不限于文本文件 } } fclose(fp);}Save函数由if--else语句、for语句和文件指针*fp组成。如果录入信息没有写入student文件,程序将会执行if后面的命令,显示“保存失败!”。反之是保存成功,程执行else后面的命令,执行for语句,将录入的学生信息按照对应的格式依次写入student文件中。(在没有写入信息之前,fp是指向student文件的顶部的,即左上角)(4)显示区代码//显示voidxs(sta[],intn){ FILE*fp; inti; //sta[N]; system("color02"); if((fp=fopen("d:\\student.txt","at+"))==NULL) { printf("读取失败!"); exit(0); } else { printf("姓名\t学号\t性别\t年龄\t生源地\t通讯录\n"); for(i=0;i<N;i++) { fscanf(fp,"%s",a[i].name);/*从磁盘里写入到内存中*/ fscanf(fp,"%d",&a[i].xh); fscanf(fp,"%s",a[i].sex); fscanf(fp,"%d",&a[i].nl); fscanf(fp,"%s",a[i].syd); fscanf(fp,"%d",&a[i].txl); //fwrire(&a[i],sizeof(structst),1,fp); } for(i=0;i<N;i++) { printf("%s%d%s%d%s%d\n",a[i].name,a[i].xh,a[i].sex,a[i].nl,a[i].syd,a[i].txl); } printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");/*从内存输入到显示器中*/ } fclose(fp); }Xs函数是由if--else语句,for语句组成。当程序执行到if语句是,文件指针fp将指向d盘student.txt函数,如果开启失败,则会显示“读取失败”。反之执行else后面的指令。用for语句将信息按格式依次传入数组a[]中,然后用printf显示结果。(5)查询区代码//按姓名查找voidcx(sta[],intn){ inti,f=-1; //sta[N]; charname[10]; system("color09"); intj; printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%d",&j); while(j!=-1) { printf("输入你要查找的名字:\n"); //gets(name); scanf("%s",name); FILE*fp; if((fp=fopen("d:\\student.txt","r"))==NULL) { printf("读取失败!"); exit(0); } else for(i=0;i<n;i++) { fscanf(fp,"%s",a[i].name);/*从磁盘里写入到内存中*/ fscanf(fp,"%d",&a[i].xh); fscanf(fp,"%s",a[i].sex); fscanf(fp,"%d",&a[i].nl); fscanf(fp,"%s",a[i].syd); fscanf(fp,"%d",&a[i].txl); if(strcmp(a[i].name,name)==0) { f=0; printf("已查到,数据为!\n"); printf("\n"); printf("姓名\t学号\t性别\t年龄\t生源地\t通讯录\n"); printf("%s%d%s%d%s%d\n",a[i].name,a[i].xh,a[i].sex,a[i].nl,a[i].syd,a[i].txl); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); } } if(f==-1) { printf("查无此人\n"); } fclose(fp); printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%d",&j); }}Cx函数由文件指针fp,if--else函数,Faliscan函数,printf函数,While函数组成。当用户选择查询学生信息时,系统跳到录入学生信息函数cx中。遇到printf函数显示提示信息问询是否继续。当用户选择1时,while函数不为-1。系统执行循环。这时系统提示输入学生姓名并输入学生姓名,如果fp打开d盘的student文件为0,则系统执行if后面的语句。显示读取失败,否则读取成功。文件指针fp将按格式把信息依次传入数组a[]中。然后让a[].name和name比较,结果为0,显示if后面的提示信息“已查到,数据为”。显示该学生的信息。如果比较不为0,则显示else后面的“查无此人”。修改区代码//修改数据voidxg(sta[],intn){ intk,i,f=-1; charname[10]; inty; system("color03"); printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%y",&y); while(y!=-1) { printf("你要修改学生的名字:\n"); //gets(name); scanf("%s",name); FILE*fp; if((fp=fopen("d:\\123.txt","rt+"))==NULL) { printf("读取失败!"); exit(0); } else for(i=0;i<n;i++) { fscanf(fp,"%s",a[i].name);/*从磁盘里写入到内存中*/ fscanf(fp,"%d",&a[i].xh); fscanf(fp,"%s",a[i].sex); fscanf(fp,"%d",&a[i].nl); fscanf(fp,"%s",a[i].syd); fscanf(fp,"%d",&a[i].txl); if(strcmp(a[i].name,name)==0) { k=i; f=0; printf("原数据为!\n"); printf("\n"); printf("姓名\t学号\t性别\t年龄\t生源地\t通讯录\n"); printf("%s%d%s%d%s%d\n",a[i].name,a[i].xh,a[i].sex,a[i].nl,a[i].syd,a[i].txl); fflush(stdin); printf("姓名:"); scanf("%s",a[i].name); printf("学号:"); scanf("%d",&a[i].xh); printf("性别:"); scanf("%s",a[i].sex); printf("年龄:"); scanf("%d",&a[i].nl); printf("生源地:"); scanf("%s",a[i].syd); printf("通讯录(电话):"); scanf("%d",&a[i].txl); printf("\n"); save(a,N); //信息修改后重新更新文件里面的数据以保持数据一致性 for(i=k;i<N;i++) { fprintf(fp,"%s%d%s%d%s%d\n",a[i].name,a[i].xh,a[i].sex,a[i].nl,a[i].syd,a[i].txl); } printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); save(a,N); } } if(f==-1) printf("查无此人\n"); fclose(fp); printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%d",&y); }}功能是查询功能和录入功能的综合运用,原理是将已录入的学生信息调入a[]中,然后在向a[]中输入新的信息去覆盖掉原来的信息。然后保存到原来的文件中即可。(7)删除区代码voidsc(sta[],intn){ inti,k,f=-1; FILE*fp; //sta[N]; charname[10]; system("color08"); inty; printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%d",&y); while(y!=-1) { printf("请输入你要删除者名字:\n"); //gets(name); scanf("%s",name); if((fp=fopen("d:\\student.txt","w"))==NULL) { printf("读取失败!"); exit(0); } else { for(i=0;i<n;i++) { fscanf(fp,"%s",a[i].name); //从磁盘里写入到内存中 fscanf(fp,"%d",&a[i].xh); fscanf(fp,"%s",a[i].sex); fscanf(fp,"%d",&a[i].nl); fscanf(fp,"%s",a[i].syd); fscanf(fp,"%d",&a[i].txl); } for(i=0;i<n;i++) if(strcmp(a[i].name,name)==0) { k=i; f=0; fflush(stdin); } } if(f==-1) { printf("查无此人\n"); } else { for(i=k;i<n;i++) { strcpy(a[k].name,a[k+1].name); strcpy(a[k].sex,a[k+1].sex); strcpy(a[k].syd,a[k+1].syd); a[k].nl=a[k+1].nl; a[k].xh=a[k+1].xh; a[k].txl=a[k+1].txl; printf("%s%d%s%d%s%d\n",a[i].name,a[i].xh,a[i].sex,a[i].nl,a[i].syd,a[i].txl); fprintf(fp,"%s%d%s%d%s%d\n",a[i].name,a[i].xh,a[i].sex,a[i].nl,a[i].syd,a[i].txl); } printf("删除成功!\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); save(a,N-1); } printf("你想继续么?\t(1.继续,-1.退出)\n"); scanf("%d",&y); fclose(fp); }}Sc函数由if--else函数,for函数,字符串比较函数strcmp和字符串复制函数strcpy.j当选择继续时。文件指针fp就会指向d盘studenttxt文件。如果打开文件失败,执行if后面的信息“读取失败”。否则执行else后的命令。先用for语句将已保存的信息读入数组a[]中。再将一个空值的数组a[k+1]将a[]中的信息逐一覆盖。最后完成删除。(8)添加区代码voidadd(sta[],intn)//添增模块函数{ //sta[N];FILE*fp;//定义文件指针变量inty; system("color02"); { if((fp=fopen("d:\\student.txt","a+"))==NULL)//以追加形式打开文件 { printf("建立失败!\n"); exit(0); } else { fflush(stdin); lr(a,N); save(a,N); xs(a,N+10); } fclose(fp); }}Add函数是用fflush(stdin)语句开辟一个缓存区,然后调用LR函数来完成。三:流程图是否选择1进入菜单选择选项:、1录入学生信息2保存学生信息3查询学生信息4修改学生信息5删除学生信息6增加学生信息7显示已有通讯录8退出是否选择1进入菜单选择选项:、1录入学生信息2保存学生信息3查询学生信息4修改学生信息5删除学生信息6增加学生信息7显示已有通讯录8退出开始进入录入界面继续进入录入界面保存

温馨提示

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

评论

0/150

提交评论