资源描述
学生信息管理系统学生姓名:学号:班级:指导老师:日期:2、课程设计正文格式:1题目及要求学生信息管理系统此题目要求,使用结构体静态数组存储数据,并要求使用户输入的数据或者修改后的数据能够永久保存。1.1问题提出详细叙述本人所要实现的题目中的问题我编写一个学生信息管理系统,主要用来管理学生基本信息。1.2本系统涉及的知识点女口:结构体、数组、循环、函数、分支、文件、字符串、指针;1.3功能分析叙述本人所要实现的题目功能1、添加学生信息,每个学生的信息包括:学号、姓名、电话、生日、地址、班级;2、根据学号删除该学生信息或删除全部学生信息;3、根据学号、姓名查询学生信息;4、可以以表格形式输出所有学生信息;5、输入欲修改的那人的名字后,再次进行信息修改;6、保存此学生信息系统;2功能设计画出模块层次结构图学生信息管理系统退出2.1菜单设计陆Ine口些口 d一口些 口 utkrrELtut-U - 厂一 一戶二 厂二 卜二 学8忑忑-I-老-1 1 Z 3 4- E b2.2各功能模块的算法设计增加学生信息模块:1.1打开文件。1.2用scanf输入数据,保存再结构数组中。1.3用fwrite函数将结构体数组读入学生信息文 件中,关闭文件。显示学生信息模块:1.1只读打开文件1.2将文件的信息读入结构体数组中;1.3将结构体的内容显示在窗口上。1.4关闭文件。查询学生信息模块:1.1打开文件,读出信息;1.3如有该学号或姓名,打印该学生的信息;1.4关闭文件。开始用fread函数读信息到stui中修改学生信息模块:打开文件,读出信息;1.1i=0; n1.2输入要修改的学生信息的学号。1.3若有此学号,则重新输入此学生信息。1.4覆盖原先的信息,读入文件;关闭文件。1.1删除学生信息模块:1.2选择要单个删除一1.3,选择全部删除一1.5 ;1.3打开文件,输入要删除的学号;1.4若有此学号,覆盖此条信息,已少一次数, 读入文件,关闭文件;若无,返回1.3 ;1.5打开文件。将空字符读入文件中,覆盖原先 的信息,关闭文件。打开文件,读出信息,关闭文件3程序代码设计(-)增加模块1)函数原形:void add(void)2) 功能:利用for循环语句和seanf、getchar函数完成对结构数组的输入,再用再用fwrite函数将结构数组读入学生信息表中。存放n个学生的信息(学号、姓名、电话、生日、地址、班级)。3)输入输出:无 (二)查询模块1)函数原形:void search(void)2)功能:打开文件后,根据stremp函数进行对比,可以进行学号与姓名查询,用fread函数将文件中信息读到结构体数组中,相同就打印到窗口上3)输入输出:无。(三)修改模块1) 函数原形:void modi(void)2)功能:输入要修改的姓名,用fread函数将文件中信息读到结构体数组中,根据strcmp函数进行对比,然后根据fwrite函数进行修改覆盖,得 到新文件。3)输入输出:无。(四)删除模块1)函数原形:void del (void)2) 功能:用fread函数将文件中信息读到结构体数组中,依次将输入的学号根据strcmp函数进行对比,然后再进行选择性删除。3)输入输出:无。(五)显示模块1)函数原形:void print(void)2)功能:用freed函数打开存储的文件使其显示在屏幕上。3)输入输出:无。(六)源程序代码#i nclude#in clude #i ncludevoid prin t(void); /显示函数void add(void); /增加函数void search(void); /查找函数void modi(void); /修改函数/定义结构体typedef struct stude ntchar n ame20;char num20;char ban20;char birthday20;char pho ne20;char address200;STU;STU stu2000;FILE *fp;/主函数int main(v oid)int i;doprin tf(|1n);printf( |学生信息管理系统|n);prin tf(|1n);printf(| 1-增加学生信息| n);printf(| 2-删除学生信息| n);printf(|3-查询学生信息| n);printf(|4-显示学生信息| n);printf(|5-修改学生信息| n);printf(| 6-退出1 n);printf(|1n);prin tf(请选择你的操作:(16)n);scan f(%d,&i);if(i=1) add();if(i=2) del();if(i=3) search();if(i=4) prin t();if(i=5) modi();if(i=6) prin tf(谢谢您的使用!n);break;while(i0&i 6|i1)printf(你的输入错误n);return 0;/*增加函数*/void add(void)int m,i;学生信息表.txt,a+)=NULL) /为读写打开学生信息表文本文件if(fp=fope n(”printf(Cannot open file strike any key exit!);getchar();exit(1);printf(”请输入要添加学生的人数:);scan f(%d,&m);for(i=1;i=m;i+)prin tf(请输入姓名:n);sca nf(%s,stui. name);prin tf(请输入学号:n);scan f(%s,stui. nu m);prin tf(请输入班级:n);scan f(%s,stui.ba n);prin tf(请输入生日:n);scan f(%s,stui.birthday);prin tf(请输入电话号码:n);scan f(%s,stui.pho ne);prin tf(请输入地址:n);sca nf(%s,stui.address);fwrite(&stui,sizeof(STU),1,fp); /把结构体的数据写入学生信息表中prin tf(n);fclose(fp); /关闭学生信息表文本文件/*显示函数*/void prin t(void)int i,n;if(fp=fope n(学生信息表.txt,广)=NULL) /为输入打开学生信息 表文本文件prin tf(Ca nnot ope n file strike any key exit!);exit(O);读出学生信息for(i=0;fread(&stui,sizeof(STU),1,fp)!=0;i+); /n=i;生日地址printf( 姓名学号班级电话n);printf(n);for(i=0;i n;i+) prin tf(%st %st %st %st %st %sn,stui. namestui. nu m,stui.ba n, stui.ph on e,stui.birthday,stui.address);printf(n)Jfclose(fp); /关闭学生信息表文本文件/*查询函数*/void search(void)int i,n;char number20, name20;if(fp=fopen(学生信息表.txt,广)=NULL) /为输入打开学生信息表文本文件printf(Cannot open file strike any key exit!);exit(0);/读取学生信息表文本文件for(i=0;fread(&stui,sizeof(STU),1,fp)!=0;i+);n=i;int xz;printf(n);printf( 1.学号查询n);printf( 2.姓名查询n);printf(n);printf(请选择:n);scan f(%d,& xz);if (xz=1)prin tf(n请输入要查找学生的学号:);sca nf(%s ,nu mber);for(i=0;i n;i+)if(strcmp( nu mber,stui. num )=0)prin tf(n该学生已找到n);printf(n);printf(姓名:%sn,stui.name);printf(学号:%sn,stui.num);printf(班级:%sn,stui.ban);printf(电话:%sn,stui.phone);printf(出生日期:%sn,stui.birthday);printf(地址:%sn,stui.address);break;elseprintf(n没有你要找的学生!nn);elseif(xz=2)printf(请输入要查询者的姓名:);scan f(%s, name);for(i=0;i n ;i+)if(strcmp( name,stui. name)=0)printf(该学生已找到n);printf(n);printf(姓名:%sn,stui. name);printf(学号:%sn,stui. num);printf(班级:%sn,stui.ba n);printf(电话:%sn,stui.pho ne);printf(出生日期:%sn,stui.birthday);printf(地址:%sn,stui.address);break;elseprintf(n没有你要找的学生!nn);fclose(fp); /关闭学生信息表文本文件/*修改函数*/ void modi(void)int i,n;char n ame20;if(fp=fopen( 学生信息表.txt,r+)=NULL) /为读写打开学生信息表文本文件printf(Cannot open file strike any key exit!);exit(0);printf(请输入你要修改的学生的姓名:);scan f(%s, name);for(i=0;fread(&stui,sizeof(STU),1,fp)!=0;i+);n=i;for(i=0;i n;i+)if(strcmp( name,stui. num )=0)printf(n);printf(”请重新输入姓名:n); scanf(%s,stui.name);printf(请重新输入学号:n); scanf(%s,stui.num);printf(请重新输入班级:n); scanf(%s,stui.ban);printf(请重新输入电话:n); scanf(%s,stui.phone);printf(请重新输入生日:n); scanf(%s,stui.birthday);printf(请重新输入地址:n); scanf(%s,stui.address);fclose(fp);if(fp=fope n(”学生信息表.txt,w)=NULL) /为输出打开学生信息表文本文件for(i=0;i n;i+)fwrite(&stui,sizeof(STU),1,fp);覆盖要修改的学生信息fclose(fp); /关闭学生信息表文本文件/*删除函数*/void del(void)char number20,stud300;int flag=0,i,k,ch ,n ,temp;if(fp=fopen( 学生信息表.txt,r)=NULL) / 为输入打开学生信息表文本文件读出学生信息exit(1);for(i=0;fread(&stui,sizeof(STU),1,fp)!=0;i+);n=i;fclose(fp);printf( l*1单个删除*2全部删除 *n);prin tf(输入你的选择:);scan f(%d,&ch);if(ch=1) loop:printf(输入要删除学生的学号:);sca nf(%s ,nu mber);for(i=0;i n;i+)if(strcmp(stui. num,nu mber)=0)flag=1; k=i;printf(*是否确定删除?*printf(*1-j是*2否y *n);scan f(%d, &temp);if(temp=2)goto loop;if(flag=O)printf(*列表中无此记录*n);goto loop;for(i=k;i n-1;i+)strcpy(stui. name,stui+1. name); strcpy(stui. nu m,stui+1. nu m); strcpy(stui.ba n,stui+1.ba n); strcpy(stui.birthday,stui+1.birthday); strcpy(stui.ph on e,stui+1.ph on e);strcpy(stui.address,stui+1.address);为输出打开学生信息表文本文件if(fp=fopen( 学生信息表.txt,w)=NULL) /exit(1);n=n-1;重新输出已修改的学生信息表for(i=0;i n;i+)fwrite(&stui,sizeof(STU),1,fp);fclose(fp);printf( 已删除成功n);if(ch=2)printf( *是否确定删除?*n);printf( *1-是*2-否*“);sca nf(%d, &temp);if(fp=fopen(学生信息表.txt,w)=NULL) /为输出打开学生信息表文本文件printf(Cannot open file strike any key exit!);getchar();exit(1);if(temp=1);fputs(,fp);printf(已全部删除n);fclose(fp);4.运行结果测试请鞠入姓名:输入学号, 鲫入生日:钿入电话号码;请输入脱a*占?OS4r IlllJjjaj!u.&alu* -乞上i丰 毎姜車 -I 黔!M-4E 右M诸筈赛告祈旱咗掠学号,1 说卒生已山争那屯知加垛牛蹄严2音诗T迅宵选岸谅妁援作,ti-fil:S1&退也 -H HIM!话只捧件內岂件,f、IdH Ja3上J3-f it -. 巾搦Ty岀 呀九*rsiE乞琴供7诜年CI-&7询希牛曰TttU升SL弟swr匚鉄需 saalis mtI I | I i| I L I cI I r I I -ynm PEIlgvid. 宀ICJlIMH-l.M r to fs r* 丹曲Fl 一 扩哉-.Mffl就蛋帆H養A 1 r i-ii 1 _i_ 1 1 1 ,111 i r暑a扌 虻円书赳.讦 ill敬坐握,卅压“ 出悯当蚩沪严B“ 询阿驾釧严届津”恳.茎卷m1 P1ii和M a 1 ” gjne 跟::Fkft 比 血血D( n1 HF1 id9 r i 氐t
展开阅读全文