C语言程序设计报告

上传人:博****1 文档编号:571496483 上传时间:2024-08-11 格式:PDF 页数:23 大小:987.87KB
返回 下载 相关 举报
C语言程序设计报告_第1页
第1页 / 共23页
C语言程序设计报告_第2页
第2页 / 共23页
C语言程序设计报告_第3页
第3页 / 共23页
C语言程序设计报告_第4页
第4页 / 共23页
C语言程序设计报告_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C语言程序设计报告》由会员分享,可在线阅读,更多相关《C语言程序设计报告(23页珍藏版)》请在金锄头文库上搜索。

1、-C 语言课程设计报告 计算机程序设计根底计算机程序设计根底 课程设计课程设计学生姓名胡乔楠学号0909082109指导教师汤哲题目学生信息管理系统学院信息科学与工程学院专业班级电气 0821 班完成时间七月四号目录第一章第一章工程概述工程概述1.1问题的要求分析与描述1.2问题的要求和限制第二章第二章工程设计工程设计2.1 系统程序的组成框图2.2:程序的流程图2.3 详细设计.z.-第三章第三章调试与结果调试与结果3.2 测试结果见附录 A、B第四章第四章工作总结工作总结附录附录 A A、B;B;源代码;源代码;参考文献;参考文献;第一章第一章工程概述工程概述1.1问题的要求分析与描述我设

2、计一个学生信息管理系统。首先学生的信息包括: *、 、年龄、性别、出生年月、家庭地址、号码、电子邮件、毕业学校等等。这个管理系统需要实现以下功能:1.系统以菜单的方式工作;2.实现学生信息的录入功能,学生的信息保存在文件中;3.实现学生信息的输出功能,输出功能应包括如下算法:3_1:单个学生按*查询功能;3_2:单个学生按姓名查询功能;3_2:全部学生的浏览功能;3_3:全部学生按*排序浏览功能;.z.-4.实现学生信息的删除和修改;1.2问题的要求和限制1:系统要美观,有欢送界面;2: 在输入信息时要有一定的容错能力, 比方年龄输入为负数或者大于150 就提示有错,要求重新输入;第二章第二章

3、工程设计工程设计2.1系统程序的组成框图如下:欢送界面0:退出系统; 1:学生注册;2:学生查询;3:学生信息修改2.2:我设计的程序,其主要流程图如下:4:学生信息删除;开场假输入Ch1=01: 输入学生的假*、姓名、年龄、性别、出生年月、家庭地址、真假号码、电子邮件、毕业真学校等等。并保存在名为 的 文 本中。真假真真假1:系统按时间先后打印所有学生的只有在学生信息录入后才能查 询 学 生Ch1=1信息。可以按单个学生学好来查询,也可以按单个学生姓名来查询。其中有浏览功学生注册能 1: 按时间先后来浏览。2: 按*大小来浏览。先输入学生的*,系统查询持学生,如果没有此学生,则系统自动返回。

4、如果由此Ch1=2学生细心,则打 印 学 生 信息,并提示用户删除。先输入学生的*,系统查询持学生,如果没有此学生,则系统自动返回。如果由此学生细心,则打 印 学 生 信息,给用户选择要修改学生的信息,并修改;Ch1=3学生查询表达式二是否继续.z.2:系统按学好的大小打印所有学生完毕-假真假真假真假是 否 继 续学 生 删 除Ch1=4是 否 继 续学 生 修 改是 否 继 续2.3 详细设计系统在 visual studio c+中运行,visual studio c+支持中完毕文并且有强大输出功能。这样就能作出美观的界面,并且制作出详细的菜单。2.3.1 编译预处理命令在开头就调用了st

5、dio.h和string.h函数,并且定义了一个构造体数组,数组中有一百个构造体。每个构造体中有长整型,整型,字符型数组,还有指针,为以后制定链表用。定义了一个全局变量 i。此变量来记录学生的个数。2.3.2main 函数所有的函数都写在 main 函数中并给他调用。Main 函数中首先定义了一些整型数据,ch1、ch2、j、长整型数据number,字符数组name,文件指针。接着printf函数打印出一个欢送界面。用死循环进入一个选择菜单,用户输入选项来运行系统。用scanf函数来给 ch1 赋值。接着程序.z.-就进入一个多分支 if 语句中。通过判断,程序运行进入相应的功能区。Ch1=0

6、 就会跳出此模块,返回上一模块。Ch1=1时,函数进入学生信息录入功能,用户输入学生的信息。在输入信息时会有容错能力。比方输入性别不是男或女,就会提示输入错误,要求用户重新输入;使用 fwrite函数,使学生的信息保存在 C 盘中名为INFORMATION.t*t的文档中。ch1=2 时,函数进入学生信息查询功能。用户根据菜单输入信息进入相应的子功能。用户可以更具菜单项选择择相应的功能。Ch3=0,系统就会返回上一个功能。Ch3=1,系统就会按学生*来查询学生信息,用户输入 *。假设*正确,则系统输出相应的学生信息。假设错误,系统就提示用户*错误,请重新输入。Ch3=2,系统就会按学生姓名来查

7、询学生信息,用户输入姓名。假设姓名正确,则系统输出相应的学生信息。假设错误,系统就提示用户姓名错误,请重新输入。Ch3=3,系统进入学生信息浏览功能,同样有一个菜单供用户选择,1 为浏览所有学生的信息。用for循环把所有学生的信息从文本中用fread函数读出来, 在把所有构造体成员一一打印出来。 这时调用了一个print(int l)函数。 在主函数中,把 i传给 n。2 为按*的顺序来浏览所有学生的信息,调用pai*u(int n)函数。主函数把i的值传给n,实现学生的信息排序,并打印出来。同样,选择为 0 时就返回上一级菜单。假设 ch1=3,系统进入删除功能模块。此时调用了.z.-del

8、etes(int n),主函数把i的值传给n,实现学生信息的删除功能。假设 ch1=4,系统进入修改功能模块,此时调用了changes(),主函数实现学生信息的修改功能。欢送界面、开场菜单、容错能力、单个查询功能见附录 A2.3.3print 函数print(int l)函数中,从主函数接收变量i,并把其值赋给l。print(int l)函数用struct students *p1,定义了一个构造体指针。接着用printf函数打印各个构造体的成员,p1-num等来表示成员。2.3.4pai*u 函数pai*u(int n) 从主函数接收变量i,并把其值赋给n。pai*u(int n)中定义了两

9、个整型数据,用来作为循环时的变量。以及两个构造体数组 u100和 v100,一个文件指针。函数先用 for 循环和fread函数把文件中的数据读出来并赋值给 u100。接着对 u100来进展冒泡排序,v100作为中间变量来实现排序。排完后,把 u100中的数据用printf函数打印出来。2.3.5deletes函数deletes(int n)从主函数接收变量i,并把其值赋给n。deletes(int n)中定义了三个整型变量j、k和chioce,一个长整型变量 number,一个构造体数组 struct studentsu100, 一个文件指针。 函数先判断有没有学生信息被录入,.z.-如果没

10、有,系统则自动返回。如果有,则要求用户输入要删除学生的*。用scanf函数给number赋值,并判断文本中是否有此学生的信息,如果此学生的信息不存在,则系统会提示用户学生不存在,并自动返回。如果学生信息存在,则系统将打印学生的全部信息,并再一次提示用户是否要删除此学生。当用户选择 1 时,系统删除此学生信息,选择否时,系统将自动返回,学生信息改变。2.3.6changes 函数changes()函数没有形参,直接对文件中的构造体进展修改。changes()函数中定义了两个文件指针fp1和fp2,一 个 长 整 型 数 据 number , 三 个 整 形 数 据 j flag choice。

11、函数先判断有没有学生信息被录入,如果没有,系统则自动返回。如果有,则要求用户输入要修改学生的*。fp1指向文本INFORMATION.t*t,fp2在 c 盘中重新建立一个文本change.t*t。用fread读出文本中的学生信息。 用scanf函数给number赋值, 并用for循环来判断文本中是否有此学生的信息,如果此学生的信息不存在,则系统会提示用户学生不存在,并自动返回。如果学生信息存在,则系统将调用print(int n)函数打印学生的全部信息,并给用户选择要修改的具体内容。用switch分支语句来判断并修改用户所指定的项。不管每个构造体是否修改,都会用fwrite函数把读出来的构造

12、体写进 change.t*t中。For.z.-循环终止后,再把所有的构造体从change.t*t 中写进空的INFORMATION.t*t中。这样就能很好的完成修改了。 其中浏览、按*排序浏览、学生删除、学生修改的具体的执行结果见附录 B第三章第三章调试与结果调试与结果3.1 调试方法:visual studio c+ 有很好的调试与查错功能,写好代码后首先按build键来查错。 程序会把所有错误和警告显示出来,找到程序有错的地方,参考错误的原因,仔细查看程序改写代码,确认无误后,再按build键。假设有错误就再看错误并改写原代码。假设无误就再纠正下一个错误。很多错误就是这样一个一个慢慢地解决

13、。调试结果分析与讨论:开场写的代码是实现学生信息录入与单个查询功能,在查询结果时,发现毕业学校的信息被重复打印到了电子邮件里面。接着就查找打印是否有错,确认无误后, 结果没有变。 就查找程序开场的赋值是否有错,最终发现了错误,在scanf(%s,&sj.graduateschool);中误加了&这个符号。修改后,打印结果正确。对所有学生的信息按照*的顺序来浏览功能中,要用到冒泡排序法,用两个for循环来完成,其中的变量有固定的形式要求。并且终止条件也很严格的要求。刚开场我用了错误的算法,后来.z.-通过问教师,得到正确的方法,再经过反复的推敲,实现了排序功能。在实现修改功能中,我找不到算法,从

14、书上的找了一个算法,书写完后,发现程序直接跳出修改的选择信息模块。经检查后发现getchar()这个函数出了问题,最后修改了代码,删除getchar()函数。得到了正确结果。主要问题及解决方法 1。在书写长代码时,要用到很多这样的符号,有时会漏掉这个符号,导致错误;所以书写时一定要非常细心,严格按照语法来写2.花括号在*些地方有很多,在修改程序或者添加程序时会很麻烦,不知道应该在哪个地方添加,或者该删除哪个。所以,但凡有的都要用/*文字*/来标记,以后就不用一个个找原来语句了。3。在修改正程中修改了一个变量,却没有发现其他地方的相应程序也要修改,导致查出许多错误。 4。我曾经用两个指针指向同一

15、个文件,visual studio c+并不报错,但是我的排序和修改功能一直实现不了。最后问教师,才知道一个指针只能指向同一个文件。修改了指针及相应的程序后,我的功能实现了。5. 使用冒泡排序法时,构造体的个数控制得很严格,最终发现 for 循环多走了一步。把n减一就解决了问题。3.2 测试结果:输入了学生的信息后能正确打印。有时候在字符数组里面输入整型数据时, 后面的scanf函数就不再正确执行。把整型数据改为字符型后,就能正确运行程序.z.-了。有时候排序功不正确,是在终止结果里面出了错误。所有的程序运行数据和结果都在附录 A、B 中。第四章第四章工作总结工作总结这次课程设计的任务原本要求

16、是以十个人为一组一起合作完成,但是作为一个已经选了计算机科学与技术专业的学生,应该具备很强的编程能力。为了好好锻炼自己的编程能力,我毅然决定一个人独立完成此次课程设计。刚开场我只知道要用文件来做这个课程设计,但是我的文件那块掌握得不好,就看教师给我们讲的文件的程序。先是复习,再去写程序。按照课程设计的要求,我先定义构造体,再把所有的知识都运用上去。前四天,我把学生信息录入功能、学生信息按*当个查询功能做好了。在按学生姓名查询的时候,要用到#include这个函数。并且字符串处理函数都忘了,接着就看书把strcmp这个函数的功能及用法掌握。最后完成了按学生姓名查询功能。看着自己完成的程序,心中很

17、快乐。还拿了同学的信息来做实验。当时信心大增,想着用一个星期就能完成任务。没想到后面的程序是如此的困难。因为前四天我写的程序还不长,所用到的知识和算法都还相对简单。到了浏览学生信息的哪一个功能,我就几天都实现不了了。在这之前,.z.-我编写的程序都没有用模块化编写,一个主函数就包括了上述所有的功能。我就开场编写功能函数。把排序功能全写到一个pai*u(int n)中。我到处查阅资料,向教师请教,问同学。终于搞清楚了算法。就是用冒泡排序法。我按照这个思路去做也没有得出正确结果。一连两三天,我都找不出错误的原因,反复修改也不行。编译环境也没有报错。在找教师查看我的源代码之后,发现我用了两个文件指针

18、指向了同一个文件,书上没有这样讲过,但也没有说这样不对。我自认为是对的,却花了我这么多时间去改他。这次教训中,我深刻的体会到。要想运用一个新知识,必须的问问教师或者在行的人是否能用,不能擅作主张。我经快修改完程序,并且调试、查错。实现了排序的功能,我当时快乐的跳起来。这就是编程中的快乐。参考文献很重要。在做修改的功能时,我找不到算法。但在一本书中,我找到类似的算法,经过反复推敲。我决定引用其中的算法。编写的函数很长,并且那段代码必须经过修改才能在我的程序中实现修改功能。因为有参考,这个功能还是相对容易实现的。 最后就是删除功能了, 算法了解后,就直接开场编程。找到要删除的学生,接着把所有的构造

19、体都后移一位。但是在循环体中,哪个变量因该是多少,会不会多了一 1,或者少了一个 1,这需要自己去耐心调试。总体来说,变成是很麻烦的。中途我就又放弃的念头,.z.-因为那是连程序的一般都没有完成,但是一个功能就花了我几个下午的时间,却没有一点进展。还好我没有放弃,毕竟大学里面的学习时机十分珍贵。四年也只有一次这样系统的C 语言编程技巧的时间。这次独立完成,对以后的学习和编程也会有很大的帮助。自己感到惭愧的是,教师教C 语言的时候没有把它学得很通。在写程序的时候经常有很多与发行的错误, 还有在运用一些简单的语句时, 忘记了其中的格式。语法中经常有笔误,都是平时训练少,对自己要求不严格的结果。还有

20、参考文献,虚心向别人请教。很多问题,也许看看书,问问教师之后就会迎刃而解。读程序多了之后,就会对编程很有感觉,编程的速度会提高、质量会变高、思路也会越来越清晰。附录 A:欢送界面和开场菜单:输入信息时的容错能力:学生信息的录入功能:按*来查询学生,以及选择菜单时的容错能力:按姓名来单个查询的功能:附录 B:按时间顺寻来浏览所有学生的信息:按*的大小来浏览所有学生的信息:对学生的姓名进展修改:紧接着修改学生的年龄修改完后,查询学生的信息是否被修改:查询结果删除学生信息的功能:查看是否已经被成功删除:.z.-以下是源代码:#include #include void printstarts()pr

21、intf(*n);struct studentslongnum;char name15;int age;char se*4;char birthdate15;char address30;char phonenumber15;char email20;char graduateschool20;struct students *ne*t; s100,*p;/*定一个有一百个成员的构造体数组*/int i=0;/*定义一个全局变量,记录被录入学生的个数*/void print(int l);void pai*u(int n);void deletes(int n);void changes();

22、/*先定义所有的功能函数,供主函数中调用*/void main()int ch1,ch2,ch3,ch4,ch5,ch6,ch7,flag1=0;int flag2=0,j,choice=1;int ch0=0;long number;char name20;FILE *fp;printf(nnnnnn);printf(ttn);printf(tt欢送进入学生信息管理系统n);printf(tt-n);printf(tt胡乔楠n);printf(tt-n);printf(tt2009 年 7 月 3 日n);printf(tt n);送界面*/printf(nnnn);while(1)prin

23、tf(n);printf(n);printf(n);./*美观的欢z.-printf(tt学生信息管理系统n);printf(tt =n);printf(tt1.添加学生信息n);printf(tt2.查询学生信息n);printf(tt3.删除学生信息n);printf(tt4.修改学生信息n);printf(tt0.退出系统n);printf(n);printf(nnt请按键选择功能(04):);scanf(%d,&ch1);if(ch1=0)break;else if(ch1=1)while(choice=1)fp=fopen(c:INFORMATION.t*t,a+);printf(请

24、输入*:);scanf(%ld,&si.num);printf(请输入姓名:);scanf(%s,si.name);printf(请输入年龄:);scanf(%d,&si.age);/*参加容错能力*/if(si.age=150)printf(输入错误,请重新输入n);break;printf(请输入性别(男/女):);scanf(%s,si.se*);if(strcmp(si.se*,男)!=0&strcmp(si.se*,女)!=0)printf(输入错误,请重新输入n);break;printf(请输入出生日期:);scanf(%s,si.birthdate);printf(请输入家庭地

25、址:);scanf(%s,si.address);printf(请输入号码:);scanf(%s,si.phonenumber);printf(请输入电子邮件:);scanf(%s,si.email);printf(请输入毕业学校:);scanf(%s,si.graduateschool);fwrite(&si,sizeof(struct students),1,fp);fclose(fp);printf(tt添加成功!n);i+;/*输入一个学生就加一次*/printf(n);printf(tt是否再添加?n);printf(tt1:添加n);printf(tt0:不添加n);scanf(%

26、d,&choice);if(choice=0)break;else if(choice=1)continue;else choice=2;printf(选择错误!系统自动返回n);.z.-break;/*ch1=1*/else if(ch1=2)/*check*/while(1)/*此处是查询功能的菜单*/printf(tt1.按单个*来查询n);printf(tt2.按学生姓名来查询n);printf(tt3.查询所有学生信息n);printf(tt0.返回上一级菜单n);scanf(%d,&ch2);if(ch2=0) break;else if(ch2=1)while(1)printf(

27、tt1.继续效劳n);printf(tt0.返回上一级菜单n);printf(nnt请按键选择:);scanf(%d,&ch3);if(ch3=0)break;else if(ch3=1)fp=fopen(c:INFORMATION.t*t,r);/*用*来查*/printf(请输入*:);scanf(%ld,&number);for(j=0;ji;j+)fread(&sj,sizeof(struct students),1,fp);if(sj.num=number)flag1=1;print(j);fclose(fp);if(flag1=0)printf(号码不存在!n);break;/*i

28、f*/*for*/*ch3=1*/elseprintf(选择错误!系统自动返回n);/*while(1)*/*ch2=1*/else if(ch2=2)/*ch4*/while(1)printf(tt1.继续效劳n);printf(tt0.返回上一级菜单n);printf(nnt请按键选择:);scanf(%d,&ch4);if(ch4=0)break;.z.-else if(ch4=1)printf(请输入名字:);/*用学生姓名来查询*/scanf(%s,name);fp=fopen(c:INFORMATION.t*t,r);for(j=0;j=i;j+)fread(&sj,sizeof(

29、struct students),1,fp);if(strcmp(name,sj.name)=0)flag2=1;printf(查询成功!n);print(j);fclose(fp);if(flag2=0)printf(名字不存在!);break;/*if*/*for*/*ch4=1*/elseprintf(选择错误!系统自动返回n);/*3while(1)*/*ch2=2*/else if(ch2=3)while(1)printf(tt1.按时间循序来查询所有学生信息n);printf(tt2.按*来查询所有学生信息n);printf(tt0.返回上一级菜单n);printf(nnt请按键选

30、择:);scanf(%d,&ch5);/*ch5*/if(ch5=0)break;else if(ch5=1)for(j=0;jnum,p1-name,p1-age,p1-se*,p1-birthdate,p1-address,p1-phonenumber,p1-email,p1-graduateschool);void deletes(int n)/*此处为删除函数*/int j,k;int choice=0;long number;struct students u100;.z.-FILE *fp1;if(fp1=fopen(c:INFORMATION.t*t,r)=NULL)printf

31、(没有学生被记录,按任意键返回);getchar();return;fp1=fopen(c:INFORMATION.t*t,r);/*先赋值给 uk,再拿 uk进展比拟*/for(k=0;kn;k+)fread(&sk,sizeof(struct students),1,fp1);uk.num=sk.num;strcpy(uk.name,sk.name);uk.age=sk.age;strcpy(uk.se*,sk.se*);strcpy(uk.birthdate,sk.birthdate);strcpy(uk.address,sk.address);strcpy(uk.phonenumber

32、,sk.phonenumber);strcpy(uk.email,sk.email);strcpy(uk.graduateschool,sk.graduateschool);fclose(fp1);printf(输入*:);scanf(%ld,&number);for(k=0;kn;k+)if(uk.num=number)printf(要删除的学生信息如下n);printf(第%d 个是: *:%ldn 姓名:%sn 年龄:%dn 性别:%sn 出生日期:%sn 家庭地址:%sn号码:%sn 电子邮件:%sn 毕业学校:%snn,k ,uk.num,uk.name,uk.age,uk.se*,

33、uk.birthdate,uk.address,uk.phonenumber,uk.email,uk.graduateschool);printf(是否要删除n1:是tt2:否n);scanf(%d,&choice);break;if (choice=0)/*判断是否存在*/printf(选择错误!系统自动返回n);return;else if(choice=2)return;else if(choice=1)if(k!=n-1)for(j=k;jn-1;j+).z.-uj.num=uj+1.num;strcpy(uj.name,uj+1.name);uj.age=uj+1.age;strcp

34、y(uj.se*,uj+1.se*);strcpy(uj.birthdate,uj+1.birthdate);strcpy(uj.address,uj+1.address);strcpy(uj.phonenumber,uj+1.phonenumber);strcpy(uj.email,uj+1.email);strcpy(uj.graduateschool,uj+1.graduateschool);i-;/*学生删除,个数减少一个*/else i-;fp1=fopen(c:INFORMATION.t*t,r);if(j!=n-1)for(j=0;jn-1;j+)fread(&sj,sizeof

35、(struct students),1,fp1);/*删除完后,在赋值给 sk*/sj.num=uj.num;strcpy(sj.name,uj.name);sj.age=uj.age;strcpy(sj.se*,uj.se*);strcpy(sj.birthdate,uj.birthdate);strcpy(sj.address,uj.address);strcpy(sj.phonenumber,uj.phonenumber);strcpy(sj.email,uj.email);strcpy(sj.graduateschool,uj.graduateschool);/*for*/fclose

36、(fp1);/*if*/elsefread(&sj,sizeof(struct students),1,fp1);sj.num=uj.num;strcpy(sj.name,uj.name);sj.age=uj.age;strcpy(sj.se*,uj.se*);strcpy(sj.birthdate,uj.birthdate);strcpy(sj.address,uj.address);strcpy(sj.phonenumber,uj.phonenumber);strcpy(sj.email,uj.email);strcpy(sj.graduateschool,uj.graduateschoo

37、l);fclose(fp1);else printf(选择错误!系统自动返回n);.z.-void pai*u(int n)/*此为排序函数*/int j,k;struct students u100,v100;FILE *fp1;fp1=fopen(c:INFORMATION.t*t,r);for(k=0;kn;k+)/*先赋值给 uk*/fread(&sk,sizeof(struct students),1,fp1);uk.num=sk.num;strcpy(uk.name,sk.name);uk.age=sk.age;strcpy(uk.se*,sk.se*);strcpy(uk.bir

38、thdate,sk.birthdate);strcpy(uk.address,sk.address);strcpy(uk.phonenumber,sk.phonenumber);strcpy(uk.email,sk.email);strcpy(uk.graduateschool,sk.graduateschool);fclose(fp1);for(j=0;jn-1;j+)/*用 uk进展冒泡排序,vk为中间变量*/for(k=0;kuk+1.num)vk.num=uk.num;uk.num=uk+1.num;uk+1.num=vk.num;strcpy(vk.name,uk.name);str

39、cpy(uk.name,uk+1.name);strcpy(uk+1.name,vk.name);vk.age=uk.age;uk.age=uk+1.age;uk+1.age=vk.age;strcpy(vk.se*,uk.se*);strcpy(uk.se*,uk+1.se*);strcpy(uk+1.se*,vk.se*);strcpy(vk.birthdate,uk.birthdate);strcpy(uk.birthdate,uk+1.birthdate);strcpy(uk+1.birthdate,vk.birthdate);strcpy(vk.address,uk.address)

40、;strcpy(uk.address,uk+1.address);strcpy(uk+1.address,vk.address);strcpy(vk.phonenumber,uk.phonenumber);strcpy(uk.phonenumber,uk+1.phonenumber);strcpy(uk+1.phonenumber,vk.phonenumber);strcpy(vk.email,uk.email);strcpy(uk.email,uk+1.email);.z.-strcpy(uk+1.email,vk.email);strcpy(vk.graduateschool,uk.gra

41、duateschool);strcpy(uk.graduateschool,uk+1.graduateschool);strcpy(uk+1.graduateschool,vk.graduateschool);for(k=0;kn;k+)printf(第%d 个是: *:%ldn姓名:%sn年龄:%dn性别:%sn出生日期:%sn家庭地址:%sn号码:%sn 电子邮件:%sn 毕业学校:%snn,k ,uk.num,uk.name,uk.age,uk.se*,uk.birthdate,uk.address,uk.phonenumber,uk.email,uk.graduateschool);f

42、close(fp1);void changes()/*此处为修改函数*/FILE *fp1,*fp2;long number;int j,flag=0;int choice;if(fp1=fopen(c:INFORMATION.t*t,r)=NULL)printf(学生信息没有被录入,按任意键返回:n);getchar();return;fp1=fopen(c:INFORMATION.t*t,r);fp2=fopen(c:change.t*t,w);printf(请输入*n);scanf(%ld,&number);for(j=0;fread(&sj,sizeof(struct students

43、),1,fp1)!=0;j+)if(sj.num=number)/*判断该学生是否出在*/printf(学生的信息如下:n);print(j);printf(n);printf(tt =n);printf(tt1.修改学生姓名n);printf(tt2.修改学生年龄n);printf(tt3.修改学生性别n);printf(tt4.修改学生出生日期n);printf(tt5.修改学生家庭地址n);printf(tt6.修改学生号码n);printf(tt7.修改学生电子邮件n);printf(tt8.修改学生毕业学校n);/*列出修改菜单*/.z.-printf(n);scanf(%d,&ch

44、oice);switch(choice)case 1:printf(请输入新姓名n);scanf(%s,sj.name);fwrite(&sj,sizeof(struct students),1,fp2);break;case 2:printf(请输入新年龄n);scanf(%d,&sj.age);fwrite(&sj,sizeof(struct students),1,fp2);break;case 3:printf(请输入新性别n);scanf(%s,sj.se*);fwrite(&sj,sizeof(struct students),1,fp2);break;case 4:printf(

45、请输入新出生日期n);scanf(%s,sj.birthdate);fwrite(&sj,sizeof(struct students),1,fp2);break;case 5:printf(请输入新家庭地址n);scanf(%s,sj.address);fwrite(&sj,sizeof(struct students),1,fp2);break;case 6:printf(请输入新号码n);scanf(%s,sj.phonenumber);fwrite(&sj,sizeof(struct students),1,fp2);break;case 7:printf(请输入新电子邮件n);sca

46、nf(%s,sj.email);fwrite(&sj,sizeof(struct students),1,fp2);break;case 8:printf(请输入新毕业学校n);scanf(%s,sj.graduateschool);fwrite(&sj,sizeof(struct students),1,fp2);break;default:.z.-printf(选择错误!系统自动返回n);fwrite(&sj,sizeof(struct students),1,fp2);break;flag=1;/*第一个 if*/ else fwrite(&sj,sizeof(struct studen

47、ts),1,fp2);/*for 循环*/if(flag=0) printf(学生不存在!系统自动返回n);fclose(fp1);fclose(fp2);/*修改完成,信息重新写入文本*/fp1=fopen(c:INFORMATION.t*t,w);fp2=fopen(c:change.t*t,r);for(j=0;fread(&sj,sizeof(struct students),1,fp2)!=0;j+)fwrite(&sj,sizeof(struct students),1,fp1);fclose(fp1);fclose(fp2);参考文献:C 语言程序设计根底 李丽娟、牛莉主编铁道出版社C 语言程序设计黄迪明、胡德昆主编电子科技大学出版社C 程序设计谭浩强主编清华大学出版社.z.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号