版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 hubei university of automotive technology c语言程序设计报告学院 :电气与信息工程学院专业 :电子信息产业题目 :学生证管理系统班号 :t-132316姓名 :樊帅昌学号 :20130231611指 导 教 师 :吴年志2014 年 7 月 2 日2 目录c语言程序设计报告 . 1一.课程设计目的. 3二设计要求 . 3三具体模块分析. 51 头文件及定义结构体. 5头文件: . 5结构体: . 52 主函数 . 63 分块设计 . 6首页面 . 6系统菜单 . 7用户选择 . 7添加模块 . 8查询模块 . 12修改模块 . 15删除模块 . 1
2、9四.测试分析 . 21五.课程设计总结. 26六.程序源代码 . 273 一.课程设计目的1巩固和加深学生对c语言程序设计课程基本知识的理解和掌握。2掌握 c 语言编程和程序调试的基本技能。3掌握书写程序设计说明文档的能力。4提高学生分析问题和解决问题的能力, 培养严谨的工作作风和良好的程序设计习惯,为后续课程的学习打下良好的基础。二设计要求题目:学生证管理程序题目描述:请设计一个学生证管理的程序,以方便辅导员对学生证的管理,该程序应该具有以下功能:(1) 能从键盘输入某位学生的学生证信息(学生证应该包含的信息可以参考自己的学生证) 。(2) 给定学号,显示该学生的学生证信息。(3) 给定班
3、号 , 显示该班所有学生的学生证信息。(4) 给定学号,修改该学生的学生证信息。(5) 给定学号 , 删除该学生的学生证信息。题目要求:(1) 按照分析、设计、编码、调试、测试的软件过程完成这个应用程序. (2) 学生证应该包含的信息参考自己的学生证. (3 )为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单, 然后用户通过菜单项选择希望进行的操作项目. 输入要求 : (1) 应用程序运行后在屏幕上显示一个菜单。用户可以根据需求, 选定相应的操作项目。进入每个操作后, 根据应用程序的提示信息,从键盘输入相应的信息. 程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输
4、入的数据进行简单的校验,例如, 学生的入学时间必须是一个合法的日期格式,学号是唯一的(一个学号对应一条学生证信息)。输出要求:(1)应用程序运行后, 要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。(3) 在程序完成处理后, 要清楚地给出程序的处理结果. 例如,在给定学号删除学生证信息时,如果该学生不存在,要提示没能删除,如果删除成功要提示删除成功.实现要求:(1)在程序中使用链表存储学生证信息。4 (2) 采用模块化程序设计的方法,将程序中的各项功能用函数实现。提示: (1)使用结构体表示学生证信息,一个结点保存一条学生证
5、信息。扩展功能: (1)学生证信息从文件读入。(2)将学生证信息保存到文件中。( 一)基本要求1 掌握 c 语言程序设计的方法,熟悉使用vc6.0 作为开发软件开发c 语言程序及c 程序的调试过程。2熟悉 c 语言中的数据类型,数据结构、语句结构、运算方法、函数,巩固和加深对理论课中知识的理解,提高基本编程能力。3综合编程题,每组完成一个课题(一组不能超过2 人) ,每组成员必须明确各自的任务。4要求利用结构化程序设计方法以及c 的编程思想来完成题目问题描述中所要求的设计任务,功能模块化,设计内容符合题目要求; 5概要设计模块划分合理,清晰,系统结构图符合功能操作要求;6详细设计,主要功能模块
6、有较完善的程序流程图,每个主要功能模块有较完善的入口、功能、出口等的清晰的描述,说明符合结构化程序设计要求;7每个模块的程序代码,具有较好的可读性和可靠性;程序书写风格: 锯齿型书写格式,并有详尽的注释。8用户界面要求尽可能友好,提示信息充分、完整;对输入内容有较完善的判误处理并方便操作;9程序必须上机调试通过,不应出现语法型、功能型错误,并获得满意的结果;10所设计的程序,必须在提交验收前,通过测试用例做必要的功能测试,尽可能避免原则性错误的出现。(二 ) 设计步骤在进行综合编程时需要遵循以下的步骤:1问题分析、 确定解决方案框架,充分地分析和理解问题本身,弄清要求做什么.在确定解决方案框架
7、过程中,仔细考虑如何使用数据,数据结构有哪些?程序结构清晰、合理、简单和易于调试,并确定每个模块的简单功能,以及模块之间的调用关系。2详细设计和编码:确定程序的主要流程,在此基础上进行代码设计,每个功能模块程序一般不超过60 行,否则要进一步划分。3上机前编写程序与检查。4上机调试程序。5每个功能在输入值集范围内,确定好几组测试用例数据,通过尽可能详尽的测试用例,找出程序中存在的或有可能出现的功能错误. (三)综合报告要求5 课程设计报告要求内容:1系统设计分析预览:(1)系统功能模块划分:根据需求分析 ,可以把这个系统的设计分为学生信息预览、管理系统、添加、从文件读入、查询、修改、删除、退出
8、系统七大模块,其中查询模块可以分为两个子模块,系统功能模块图如下所示:三具体模块分析1 头文件及定义结构体头文件 : include /输入输出函数include stdlib.h/常用函数库#include6) /对选择菜单进行判断 printf (”选择错误,请重新选择!n ); continue; switch(sel) case 1: inputinfo();break ;/添加模块case 2: showinfo();break; /从文件读入模块case 3: quiry();break ;/查询模块case 4: searchreplace( );break;/修改模块8 cas
9、e 5: searchdelate();break;/删除模块case 0: exit(0); if(sel=0) break; 添加模块首先要判断文件 stuinfo.txt是否存在,如果存在就以读写 (r+ )的方式打开,如果不存在,就以写(w)的方式创建文件 stuinfo 。txt 。输入格式要求:性别为男或女,学号为11 位且不能重复 , 年龄在 0100 之间,班级号为 6 位, 程序提供了完善的验证机制, 输入错误时将提示重新输入直到正确为止. 此外,如果以读写的方式打开,还要判断记录数 numn 是否成立,因为结构体数组的大小为n,当 num=n 时,表示已满,不能再存储数据,
10、 需要修改 n的值。该模块具体流程如左图:代码 : void inputinfo ()/输入学生信息 int num ;int i; int age; char sno20; /临时变量 ,用于验证输入的学号是否满足条件char sex20; /临时变量,用于验证输入的性别是否满足条件char banji20 ; /临时变量,用于验证输入的班级是否满足条件int right ;file fp;if( (fp=fopen( ”stuinfo 。txt,r+ ” ) )=null )/以读写方式打开 if ((fp=fopen (” stuinfo。txt ,w ))=null) /文件不存在则创
11、建文件9 printf(n 文件不存在且创建失败,返回!n”); printmenu();printf( ”n 请按照提示输入学生信息:nn); printf( 姓名 :); scanf(%s,&stuinfo0 .name) ;do printf (n 性别(男或女):) ;scanf(” s, sex) ;if(strcmp(sex, ”男” )!=0)& (strcmp(sex,女” ) !=0))printf( 输入错误,请输入男或女!n ) ;/判断性别输入合法性right=1; getchar(); else right=0; while(right=1); str
12、cpy(stuinfo0 。sex,sex); do printf(n 学号( 11 位) :);scanf(”s,sno) ; if(strlen(sno ) !=11)/判断学号输入合法性printf (”输入错误,学号长度应为11 位数! n” ); right=1;getchar(); else right=0; while (right=1 ); strcpy(stuinfo 0。sno,sno);do printf (n 年龄: ” ); scanf(”d,&age);if(age25) printf( ”年龄应在15-25 之间 ,请重新输入年龄!n” ); right=
13、1; getchar() ;else right=0 ;10 while (right=1); stuinfo0 。age=age;do printf( ”n 班号( 7 位) :); scanf(”s,banji); if(strlen (banji) !=7) printf (输入错误,班号长度应为7 位数 !n” ); right=1;getchar() ;else right=0; while(right=1 ); strcpy(stuinfo0 .banji,banji); printf(n 所在院系名: ”); scanf(” %s, &stuinfo0.departmen
14、t); fprintf(fp ,nststst%dt%st s, stui,stuinfo 0.sex,stuinfo0 。sno,stuinfo0 。age,stuinfo0.banji,stuinfo 0 。department) ;fclose(fp); printf (n 保存成功! n” ) ;/将输入信息保存至文件printf(n 请按 enter 键返回主菜单 !n”); getchar();getchar(); printmenu(); /返回菜单 for (i=0;!feof(fp);i+) fscanf(fp , ” %s s%sd%s%s ” ,&
15、;stuinfoi 。name, stuinfoi 。sex,stuinfoi .sno,&stuinfo i 。age, &stuinfo i.banji , stuinfoi 。department); /以读写方式输入num=i ;/记录数if(num=n) printf (” n 保存记录数超出结构体数组数的大小,请先修改 n 的值 n”); printmenu( ) ; printf( ”n 请按照提示输入学生信息:nn); printf( 姓名: );scanf(”s,stui ) ;do 注:判断记录数numn是否成立,因为结构体数组的大小为
16、n,当num=n时,表示已满,不能再存储数据, 需要修改 n的值。11 printf (” n 性别(男或女):); scanf(”s” ,sex) ;if( (strcmp(sex,男” )!=0) (strcmp(sex, 女)!=0 ) ) printf (输入错误,请输入男或女!n) ;right=1;getchar(); else right=0 ;while(right=1 ) ;strcpy(stuinfonum .sex,sex) ;do printf (n 学号( 11 位) : ” ) ;scanf(%s”,sno); if(strlen(sno) !=11) printf
17、 (”输入错误,学号长度应为11 位数 !n ” ) ;right=1;getchar(); else right=0; for(i=0 ;i3) right=1;getchar(); else right=0;while(right=1 ); switch(chose)case 1:searchshowinfo() ;break;case 2:searchshowallinfo();break;case 3:printmenu() ; 2 按照学号查询输入学号,并对学号进行查找,查找后显示出来。流程图:该部分代码:void searchshowinfo () int found= 1;int
18、 num,i;char no20; file *fp ;if( (fp=fopen (” stuinfo.txt”,” r ”))=null )printf (”文件打不开!n” ) ; printmenu( ); for (i=0;!feof(fp) ;i+)/读取文件 fscanf(fp ,” s%s%s%ds%s, stuinfoi 。name,stuinfoi .sex,&stuinfo i。sno,&stuinfo i。 age,stuinfoi.banji, stuinfo i.department ) ;num=i; fclose(fp ) ;printf( ”n
19、 请输入学生学号: ”);scanf( s,no);for(i=0;i num;i+) 14 if(strcmp(no ,stuinfoi.sno)=0)将输入学号与已存学号进行对比,查找出该学生 found=i; printf(n 该学生的信息为:nn” ) ;printf( 姓名性别学号年龄班号所在院系名n) ;printf( ” st st st dt%stt%sn,stuinfo ,stuinfofound.sex,stuinfofound 。 sno, stuinfo found.age, stuinfofound 。 banji, stuinfofound 。d
20、epartment) ; if (found0) printf (” n 没有找到该学号的记录!n); printf (” n 请按 enter 键返回主菜单!n”); getchar(); getchar() ;quiry(); /调用该层菜单3 按照班号查询将输入的班号与已存的班号进行对比,并将该班所有学生的学生证信息输出流程图如右 : 该部分代码:void searchshowallinfo () int found= 1;int num ;int i; char clano 20 ;file fp; if ((fp=fopen(” stuinfo。txt ”,” r ))=null)
21、printf (”文件打不开!n) ; printmenu() ; for (i=0;!feof(fp);i+) /读取文件 fscanf (fp, ”s%ssd%ss,&stuinfoi .name,stuinfoi。sex,&stuinfoi.sno ,&stuinfo i.age,&stuinfoi 。banji, stuinfoi .department) ; 15 num=i ;fclose(fp ) ; printf( ”n 请输入班号 :) ;scanf(”s,clano); for (i=0;inum;i+ )if( strcmp(clano,s
22、tuinfo i 。banji)=0) /查找该班级 found=i; printf (” n 该班级的学生信息为:nn) ;printf (”姓名性别学号年龄班号所在院系名 n) ;printf ( %st%st%st%dt st sn,stuinfo , stuinfo found 。sex,stuinfofound .sno,stuinfofound.age,stuinfofound 。banji,stuinfofound 。department); if(found 0)/没有查找到该班级printf (” n 没有找到该班号的记录!n); printf( ”n
23、请按 enter 键返回上级菜单!n”); getchar() ;getchar(); quiry () ; 修改模块先判断文件 stuinfo.txt以读(r )的方式能否打开, 不能就返回 , 可以就读入记录;然后输入学号查找记录,没找到就返回, 找到就按照提示修改该记录,与输入模块一样 , 输入的格式要求 : 性别为男或女 , 学号为 11 位且不能与除当前修改的记录的学号外的记录的学号重复, 年龄在 15 到 25 之间, 班级号为 7 位, 程序提供了完善的验证机制, 输入错误时将提示重新输入直到正确为止。输入完成后, 再以写(w)的方式创建文件,不能创建就返回,可以就将结构体数组中
24、的所有记录保存到文件中,这与添加稍有差别,最后返回主菜单。流程图如下16 开始(fpr=fopen(stuinfo.txt,r)=null读取文件输入学号根据提示输入新信息(fpw=fopen(stuinfo.txt,w)=null保存数据主菜单是否存在该学号的记录否是否是否是代码部分:void searchreplace() /修改int num; int i; int right; int age;char sex20; /临时变量,用于验证输入的性别是否满足条件char banji20 ;/临时变量 ,用于验证输入的班级是否满足条件char sno20; /临时变量,用于验证输入的学号是
25、否满足条件char department30;/临时变量,用于验证输入的院系是否满足条件int found=-1; char stuno20; file*fpr,*fpw; if(fpr=fopen(stuinfo。txt,” r)=null)printf( 文件打不开! n ) ;printmenu( );17 for(i=0;!feof (fpr) ;i+ )/读取文件 fscanf (fpr,” %s%ss%d%ss” ,stui, stuinfoi 。 sex,stuinfoi 。 sno,stuinfoi.age , stuinfoi.banji,&stui
26、nfo i。department); num=i ;fclose(fpr);printf (” n 请输入学号选择要修改的学生证:n” ) ;scanf(”s” ,stuno) ;for(i=0 ;i25) printf( ”年龄应在15-25 之间,请重新输入年龄!n) ;right=1;getchar() ; else right=0; while(right=1 ) ;stuinfofound 。age=age;do printf (” n 班号( 7 位) :); scanf(”s” ,banji);if(strlen (banji) !=7) printf( ”输入错误,班号长度应为
27、7 位数! n”);right=1;getchar() ;else right=0; while(right=1) ;strcpy(stuinfo found.banji ,banji) ;printf (” n 所在院系名:” );scanf(%s, stuinfofound .department); if ((fpw=fopen ( stuinfo.txt” , ” w) )=null) printf (文件打不开,保存失败!n” ); 19 printmenu(); for(i=0;inum ;i+)/保存文件 fprintf(fpw ,n%st%st%st dtsts” ,stuin
28、,stuinfoi.sex,stuinfoi.sno ,stuinfoi.age,stuinfo i 。banji,stuinfoi 。department); fclose(fpw) ;printf( ”n 修改成功! n” ) ;printf(n 请按 enter 键返回主菜单!n”); getchar(); getchar(); printmenu() ; if(found 0) /查找不到printf (n 没有找到该学号的记录:n);printf (” n 请按 enter 键返回主菜单!n”); getchar();getchar(); printmenu( );删
29、除模块给定学号,先查找并显示出来,然后将这个学号对应的学生信息删除。代码:void searchdelate() /删除int num ;int i; int found=-1; char stuno20 ;file fpr, *fpw; if ( (fpr=fopen ( ” stuinfo.txt”,r ”) )=null) printf (”文件打不开!n); printmenu( ); for (i=0; !feof(fpr );i+) /读取文件fscanf(fpr,s%ssd ss”,stuinfoi 。name,stuinfoi 。sex,&stuinfo i 。20 s
30、no, stuinfo i 。age,&stuinfoi .banji,&stuinfo i.department); num=i; fclose(fpr); printf (n 请输入学号选择你要删除的学生证信息:n” ); scanf(” %s,stuno);for(i=0 ;inum; i+) if(strcmp (stuno,stuinfoi.sno )=0)found=i; printf (” n 你删除的学生信息为:nn”); printf( 姓名性别学号年龄班号所在院系 n” );printf(%st%st%st dt%st%sn , stuinfofound 。
31、 name,stuinfofound .sex,stuinfofound.sno,stuinfo found.age,stuinfofound 。banji,stuinfo found.department ); if (foundnum 1) for(found;foundnum 1;found+ )/删除该学生的信息strcpy(stui,stuinfo found+1 。name);strcpy(stuinfofound.sex,stuinfofound+1 .sex) ;strcpy(stuinfofound 。sno,stuinfofound+1.sno);
32、 stuinfofound.age=stuinfo found+1 。age; strcpy(stuinfofound 。banji,stuinfo found+1 .banji); strcpy(stuinfofound.department,stuinfofound+1 。department); if ( (fpw=fopen (stuinfo.txt ,w” )=null) printf( 文件打不开!n” ); printmenu( ); for(i=0 ;inum-1;i+) /保存文件fprintf ( fpw , n st st%st%dt st s” , stuinfoi 。
33、 name,stuinfoi.sex,stuinfo i.sno,stuinfoi 。age,stuinfoi.banji,stuinfo i.department);fclose(fpw); printf (” n 删除成功! n”); /提示删除成功printf(n 请按 enter键返回主菜单!n); getchar() ;getchar() ;printmenu(); 21 if (found0) printf(n 没有找到该学号的记录:n) ;printf (” n 请按 enter 键返回主菜单!n” ); getchar() ;getchar() ;printmenu(); 四.
34、测试分析主要内容:测试用例数据,测试结果,实际运行结果截图,测试中出现的问题、原因与分析 . 测试 : 第一部分:首页面第二部分 : 系统菜单:22 第三部分:添加模块选择 1,按照提示输入相应信息:测试中遇到的问题:23 第一次时提示后没有注意学号,姓名,性别等方面输入的合法性,后来注意到在源代码中修改, 其次, 再输入时学号的重复问题也有一点麻烦,在经过和同学讨论后解决了。第四部分:从文件中读入选择 2,如图:测试中遇到的问题:首 先 , 在 窗 口 中 显 示 的 信 息 排 列 混 乱 , 所 以 又 不 断 的 调 试 , 原 因 是 ” n st%st%st%dtsts中对输出的细
35、节没注意到. 第五部分:查询模块:按照学号查询: 24 按照班号查询:遇到问题:在代码中对查询的方法使用不熟练,曾用过链表方法,但是失败,后来又改用数组方法 ,多次修改后终于成功。原因:对c 语言中的链表指针使用不熟练,理解掌握程度不够,有待提高。第六部分:修改模块:如图:25 修改后:第七部分:删除模块:如图:修改后的结果 : 26 已经把樊帅的信息删除. 遇到的问题 :在代码中不知道怎么编写代码才能把指定学生的信息删除掉,在上网查找相关资料,并在课本中查询有关数组的相关知识,最后实现了该功能. 五。课程设计总结主要内容 :设计中的难点及其解决方法、独到之处、不足之处、课程设计心得。课设中的
36、难点: 本次学生证信息管理系统的课设综合性比较强,对所学知识的各个方面都有所考察, 我认为对我比较难的有查询模块和删除模块,其中查询需要对输入的学号与已有学号进行比对,这点刚开始无从下手, 但是在网上找了一些资料后逐渐明白, ;删除模块中,对用数组进行删除不是很熟练,而且对链表需要加强掌握。独到之处 : 在课设中 , 采用数组的方法使得整个程序比较简单. 不足之处: 在修改菜单中 , 需要对每一项都重新输入一遍,而不是针对某一项进行修改,所以这一点不好, 曾尝试修改,但是失败了好几次. 心得: 本次 c语言课程设计非常有意义, 它锻炼了我们解决实际问题的能力。在设计的过程里虽然遇到了很多麻烦,
37、但是通过查询参考书和网络, 一个个最终27 解决。通过这次实践课, 不只是强化了我们c语言编程的能力, 更重要的是使我们学会了一种工作方法 , 学会了如何规划、组织、设计、实施项目,从整体到局部,从局部又到整体 . 此外, 在设计流程图和编制报告的过程里也学了不少东西,学会了用 office word制作报告,学会了组织报告等等。六.程序源代码include include stdlib.h include string.h#define n 1000 struct studentchar name 20 ;char sex 10; int age;char department48 ;cha
38、r banji 30 ;char sno 20 ;stuinfon; void preprintmenu(); /分块设计void printmenu();void selmenu(); void inputinfo( );void showinfo(); void modify(); void quiry(); void searchshowinfo(); void searchshowallinfo() ;void searchreplace() ;void searchdelate(); main() preprintmenu() ; printmenu () ;selmenu() ;2
39、8 void preprintmenu() /首页面 system(cls); printf( c语言课程设计 n) ;n”) ;printf(”课设题目:学生证管理程序n ” ) ;printf(”学生班级: t1323 16 班n ” ) ;printf(”学生姓名:樊帅昌 n ) ;printf(”学生联系方式:电话: ” ) ;printf(”学生联系方式: qq:2026555785n);printf( 完成日期: 2014 年 7 月 1 日” ); printf(n请按 enter 进入系统! n); getchar() ; system(cls) ;v
40、oid printmenu() /使用菜单 system( ”cls ”) ;printf(* * * 欢迎使用学生证管理系统* * * * * * n ”); printf(n) ;printf(”1. 添加学生的学生证信息n ” );printf( 2。 从文件读入学生的学生证信息n ” ) ;printf( 3。 查询学生的学生证信息n ”); printf(” 4. 给定学号修改该学生的学生证信息n ”) ;printf(” 5. 给定学号删除该学生的学生证信息n ” ) ;printf( 0。 退出系统 n); printf(”n”) ;printf(”* * * * * * * *
41、 * * * *n ) ;printf(”请根据需要选择菜单选项(05)n ” ); void selmenu() /选择菜单int sel;char ch ;while ( 1) printf(”请输入菜单选项: );29 scanf(%d ”, sel ) ;if(sel 0 sel6) printf(”选择错误,请重新选择!n ); continue; switch (sel ) case 1 : inputinfo();break; case 2: showinfo() ;break ;case 3: quiry( ) ;break; case 4: searchreplace() ;
42、break; case 5 : searchdelate();break ;case 0: exit(0); if(sel=0) break; void inputinfo() /输入学生信息 int num; int i; int age; char sno20 ; char sex20 ; char banji20; int right; file *fp; if((fp=fopen(”stuinfo.txt, ”r+ ))=null) /以读写方式打开 if((fp=fopen (” stuinfo 。txt,w” ) )=null) / 文件不存在则创建文件 printf(” n 文件
43、不存在且创建失败,返回!n ” ); printmenu() ; printf(” n 请按照提示输入学生信息:nn) ; printf(”姓名:”) ; scanf( s, stuinfo 0 。name); do printf(” n 性别(男或女): ” ); scanf(” s,sex);30 if((strcmp(sex , ”男” ) !=0) &(strcmp(sex,”女”)!=0 ) ) printf(输入错误,请输入男或女!n ); /判断right=1;getchar() ; else right=0; while(right=1); strcpy(stuinfo
44、 0.sex,sex); do printf(” n 学号( 11 位) :) ; scanf(” s”, sno); if(strlen(sno)!=11) printf( 输入错误,学号长度应为11 位数 !n ) ;right=1; getchar () ; else right=0; while(right=1); strcpy(stuinfo0.sno,sno); do printf(” n 年龄 : ” );scanf( ”%d,&age); if(age=1|age 25) printf(”年龄应在1525 之间 , 请重新输入年龄!n ” ); right=1; get
45、char () ; else right=0; while(right=1) ; stuinfo0 。age=age; do printf(n班号( 7 位) : ); scanf( ”%s ”, banji ) ; if(strlen(banji )!=7) printf(输入错误 , 班号长度应为7 位数! n ); right=1;getchar () ; 31 else right=0;while(right=1); strcpy(stuinfo 0.banji,banji); printf(n所在院系名: ); scanf(”%s, stuinfo 0 。department ) ;
46、 fprintf(fp, ”n%st st%stdt%st s , stuinfo 0 。 name , stuinfo 0 .sex ,stuinfo 0.sno ,stuinfo0。age,stuinfo 0 。banji ,stuinfo 0 。department ); fclose(fp ); printf(”n 保存成功! n); printf(”n 请按 enter 键返回主菜单!n ”); getchar(); getchar() ; printmenu() ; for(i=0; !feof(fp);i+) /读取文件 fscanf( fp ,”%s ss%d%s%s”,&am
47、p;stuinfo , stuinfo i .sex,stuinfoi.sno ,&stuinfo i .age, stuinfoi.banji,&stuinfoi.department); num=i; if(num=n ) printf(” n 保存记录数超出结构体数组数的大小, 请先修改n的值 n ” ); printmenu() ; printf(”n 请按照提示输入学生信息:nn) ; printf(”姓名 : ); scanf(%s, &stuinfo num .name); do printf(” n 性别 ( 男或女) : ”) ; scan
48、f( %s ”, sex) ; if( (strcmp (sex, ”男” ) !=0) &(strcmp (sex, ”女 ) !=0) printf(”输入错误,请输入男或女!n ) ;right=1;getchar (); else right=0; while(right=1) ; strcpy(stuinfonum.sex,sex); do 32 printf(n 学号( 11 位) : ”) ; scanf(s”, sno); if( strlen(sno)!=11 ) printf(”输入错误,学号长度应为11 位数 !n ”); right=1; getchar();
49、else right=0; for(i=0; i num ;i+ ) if(strcmp (sno,stuinfo i 。sno)=0) printf(”该学号已经存在,请重新输入!n ”); right=1; getchar() ; while(right=1); strcpy(stuinfonum.sno,sno); do printf(n年龄: ) ; scanf( d,&age ); if(age3) right=1; getchar(); else right=0; while (right=1);switch (chose) case 1: searchshowinfo()
50、 ;break ;case 2 : searchshowallinfo() ;break; case 3:printmenu() ; void searchshowinfo() int found=-1; int num ,i ;char no20; file fp ; if(fp=fopen(stuinfo.txt”,r ”) )=null) printf(文件打不开!n ) ; printmenu() ; for(i=0;!feof (fp) ; i+) /读取文件 fscanf(fp,”%s s%s%d%s s”,&stuinfoi。 name, stuinfoi。 sex ,&
51、amp;stuinfoi.sno ,stuinfoi.age, stuinfoi.banji,&stuinfoi 。department ) ; 35 num=i; fclose(fp); printf(” n 请输入学生学号:); scanf( ”%s ”, no) ; for(i=0 ;i num;i+) if(strcmp( no,stuinfoi.sno)=0) found=i; printf(n该学生的信息为:nn ” ); printf( 姓名性别学号年龄班号所在院系名n ” ) ; printf( st%st st n” , stui,stuin
52、fo found .sex,stuinfofound 。 sno, stuinfo found .age , stuinfo found。banji,stuinfofound。department ); if(found0) printf(” n 没有找到该学号的记录!n) ; printf(” n 请按 enter键返回主菜单 !n ”) ; getchar(); getchar( ); quiry() ; void searchshowallinfo() int found=-1; int num; int i; char clano20 ; file*fp; if( (fp=fopen
53、(stuinfo。txt ”,” r ”)=null) printf(文件打不开!n); printmenu(); for(i=0; !feof(fp);i+) /读取文件 fscanf( fp ,” s%s%s d%ss”,&stuinfo i 。name, stuinfo i .sex, stuinfoi。sno,&stuinfoi.age,&stuinfo i.banji,stuinfoi.department); num=i ; fclose(fp ) ;36 printf(” n 请输入班号: ” );scanf( ”%s,clano); for(i=0;in
54、um;i+ ) if(strcmp(clano,stuinfoi 。banji)=0) found=i; printf(n 该班级的学生信息为:nn ” ); printf(”姓名性别学号年龄班号所在院系名 n) ;printf(” st%st%st dtn” , stuinfo ,stuinfo found.sex,stuinfo found。 sno , stuinfofound.age, stuinfo found。banji,stuinfofound。department ); if(found0) printf(”n 没有找到该班号的记录!n ”); printf
55、(n请按 enter 键返回上级菜单!n) ; getchar(); getchar() ; quiry() ; void searchreplace() /修改 int num; int i; int right; int age; char sex20; char banji20; char sno20; char department30; int found=-1; char stuno20; file fpr, fpw; if((fpr=fopen(stuinfo。txt ”,r ”) ) =null) printf(”文件打不开!n ); printmenu() ; for(i=0
56、 ;!feof(fpr);i+ ) /读取文件 fscanf( fpr, s%s s d% s%s ”, stuinfo i 。 name, stuinfoi.sex,37 stuinfoi。sno,&stuinfoi 。 age,stuinfoi。banji ,stuinfo i 。department); num=i; fclose( fpr ) ; printf( n请输入学号选择要修改的学生证:n) ;scanf( ” s ,stuno); for(i=0;inum ;i+ ) if(strcmp (stuno,stuinfoi.sno )=0) found=i; printf
57、(”n 你要修改的学生信息为:nn); printf(”姓名性别学号年龄班号所在院系名 n ” ); printf( ”%st st%st%dt st sn,stuinfoi .name,stuinfo i。sex,stuinfoi.sno,stuinfoi.age ,stuinfo i 。banji ,stuinfo i .department); printf(” n 请按照提示输入学生的新信息:n); printf(姓名: ); scanf( ”%s,&stui); do printf(” n 性别 ( 男或女): ” ) ; scanf(”%s ”,
58、sex) ; if( (strcmp (sex, ”男 ) !=0)&(strcmp (sex,女” )!=0) printf(”输入错误,请输入男或女!n ) ;right=1;getchar () ; else right=0; while(right=1); strcpy(stuinfo found .sex,sex); do printf(” n 学号 (11 位) : ” ) ; scanf(”%s ”,sno) ; if( strlen(sno)!=11 ) printf(输入错误,学号长度应为11 位数 !n ” ); right=1;getchar(); else ri
59、ght=0; for(i=0 ;i num;i+ )38 if(i!=found)&( strcmp (sno,stuinfoi.sno)=0)) printf( 该学号已经存在,请重新输入!n ” ); right=1; getchar( ); while(right=1 ) ; strcpy(stuinfofound .sno,sno); do printf(” n 年龄 : ” ); scanf(%d,age) ; if(age25) printf( 年龄应在1525 之间 , 请重新输入年龄!n); right=1; getchar(); else right=0;while (right=1) ; stuinfofound。age=age; do printf(” n 班号( 7 位):);scanf( ” s ,banji); if(strlen(banji)!=7) printf(”输入错误,班号长度应为7 位数! n ”) ;right=1;getchar(); else right=0; while (right=1); strcpy(stuinfo fou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- LY/T 3422-2024林产品检验检测能力验证规范
- 人教版七年级地理(下)《第七章我们邻近的地区和国家》复习听课评课记录
- 沪科版数学七年级下册《一元一次不等式的运用》听评课记录1
- 沪教版数学八年级下册23.2《事件的概率》听评课记录
- 粤教版道德与法治八年级下册5.2《公民的权利和义务》听课评课记录1
- 湘教版数学九年级下册4.2《概率及其计算》听评课记录3
- 北京课改版历史七年级上册第15课《东汉的兴衰》听课评课记录
- 语文三年级听评课记录
- 《三国鼎立》听课评课记录1(新部编人教版七年级上册历史)
- 人教版八年级地理上册《 2.2 气候 》听课评课记录
- 房地产调控政策解读
- 山东省济宁市2025届高三历史一轮复习高考仿真试卷 含答案
- 五年级数学(小数乘法)计算题专项练习及答案
- 产前诊断室护理工作总结
- 2024-2025学年八年级数学人教版上册寒假作业(综合复习能力提升篇)(含答案)
- 2024年社会工作者(中级)-社会综合能力考试历年真题可打印
- 湖南省长郡中学2023-2024学年高二下学期寒假检测(开学考试)物理 含解析
- 隐匿性阴茎的诊疗和治疗课件
- 2022届北京市东城区高三语文一模语文试卷讲评课件
- 了不起的狐狸爸爸-全文打印
- JJG646-2006移液器检定规程-(高清现行)
评论
0/150
提交评论