C++宿舍信息管理系统源代码.doc
宿舍信息管理系统代码如下:#include"stdio.h"#include"stdlib.h"#include"string.h"#include "conio.h"struct recordchar numb20; /学号char name20; /姓名char room10; /宿舍号student500;int num=0;FILE *fp;int menu(); /*菜单主界面*/int adduser(); /*输入记录*/int list(); /*显示记录*/int searchbyname(); /*按姓名查找*/int searchbyroom(); /*按宿舍号查找*/int searchbynumb(); /*按学号查找*/int add(); /*添加记录*/int change(); /*删除学生信息*/int dele(); /*删除记录*/int save(); /*保存记录*/int exit(); /*结束*/menu() /*主界面*/ int i; printf("*_* press any key enter menu! *_* n"); getch(); system("cls"); /*清屏*/ printf("tt*MENU*nn"); printf("tt 0. 输入记录n"); printf("tt 1. 显示记录 n"); printf("tt 2. 按姓名查找n"); printf("tt 3. 按姓名查找n"); printf("tt 4. 按学号查找n"); printf("tt 5. 添加记录 n"); printf("tt 6. 修改学生信息n"); printf("tt 7. 删除记录n"); printf("tt 8. 记录保存文件n"); printf("tt 9. Quitn"); printf("tt* *n"); printf("n Enter you choice(09):"); scanf("%d",&i); return i; void main() for(;) switch(menu() case 0:adduser();break; /*调用输入函数*/ case 1:list();break; /*调用显示记录函数*/ case 2:searchbyname();break; /*调用按姓名查找函数*/ case 3:searchbyname();break; /*调用按宿舍号查找函数*/ case 4:searchbynumb();break; /*调用按学号查找函数*/ case 5:add();break; /*调用添加函数*/ case 6:change();break; /*调用修改学生信息函数*/ case 7:dele();break; /*调用删除函数*/ case 8:save();break; /*调用保存函数*/ case 9:exit(0); adduser() /*输入记录*/ printf("ntt* 请输入用户信息 *n"); printf("ntt输入学号:"); scanf("%s",studentnum.numb); printf("ntt输入姓名:"); scanf("%s",studentnum.name); printf("ntt输入宿舍号:"); scanf("%s",studentnum.room); num+; printf("ntt是否继续添加?(Y/N):");if (getch()='y') adduser();return(0);list() /*显示记录*/ int i; if(num!=0) printf("ntt* 以下为宿舍信息管理系统所有信息*"); for (i=0;i<num;i+) printf("ntt学号: %s",studenti.numb); printf("ntt姓名: %s",studenti.name); printf("ntt宿舍号: %s",studenti.room); printf("tt"); if (i+1<num) printf("ntt_"); printf("ntt*"); else printf("ntt宿舍信息管理系统中无任何纪录"); printf("ntt按任意键返回主菜单:"); getch(); return(0);searchbyname() /*按姓名查找*/ int mark=0; int i; int a=0; printf("ntt* 按姓名查找 *"); char name20; printf("ntt请输入姓名:"); scanf("%s",name); for(i=a;i<num;i+) if (strcmp(studenti.name,name)=0) printf("ntt* 以下是您查找的用户信息 *"); printf("ntt学号: %s",studenti.numb); printf("ntt姓名: %s",studenti.name); printf("ntt宿舍号: %s",studenti.room ); printf("ntt*"); mark+; getch(); return(0); if (mark=0) printf("ntt没有该学生的信息"); printf("ntt按任意键返回主菜单"); getch(); return(0);return(0);searchbyroom() /*按学号查找*/int mark=0;int i;int a=0;printf("ntt* 按宿舍号查找 *");char numb10;printf("ntt请输入宿舍号:");scanf("%s",room);for(i=0;i<num;i+) if (strcmp(studenti.room,room)=0) printf("ntt* 以下是您查找的用户信息 *"); printf("ntt学号: %s",studenti.numb); printf("ntt姓名: %s",studenti.name); printf("ntt宿舍号: %s",studenti.room); printf("ntt*"); printf("ntt按任意键返回主菜单:"); mark+; if (i+1)<num) printf("ntt是否继续查找相同宿舍号的用户信息:(y/n)"); if (getch()='y') a=i; continue; else return(0); else printf("ntt按任意键返回主菜单"); getch(); return(0); if(mark!=0) printf("ntt没有相同宿舍号的用户纪录"); printf("ntt按任意键返回主菜单"); getch(); return(0); return(0);searchbynumb() /*按学号查找*/int mark=0;int i;int a=0;printf("ntt* 按学号查找 *");char numb10;printf("ntt请输入学号:");scanf("%s",numb);for(i=0;i<num;i+) if (strcmp(studenti.numb,numb)=0) printf("ntt* 以下是您查找的学生信息 *"); printf("ntt学号: %s",studenti.numb); printf("ntt姓名: %s",studenti.name); printf("ntt宿舍号: %s",studenti.room); printf("ntt*"); printf("ntt按任意键返回主菜单:"); mark+; getch(); return(0); if (mark=0) printf("ntt没有该学生的信息"); printf("ntt按任意键返回主菜单"); getch(); return(0);return(0);add() /*添加记录*/ int i; if (fp=fopen("student.bin","wb")=NULL) /*判断文件是否打开*/ printf("ntt文件打开失败"); for (i=0;i<num;i+) if (fwrite(&studenti,sizeof(struct record),1,fp)!=1)/*fwrite()(数据块的输出 )将以数组studenti为首地址的一个sizeof(struct record)的大小的数据块写入fp指向的文件中*/ printf("ntt写入文件错误!n"); printf("ntt* 请输入用户信息 *n"); printf("ntt输入学号:"); scanf("%s",studentnum.numb); printf("ntt输入姓名:"); scanf("%s",studentnum.name); printf("ntt输入性别:"); scanf("%s",studentnum.sex); num+; printf("ntt是否继续添加?(Y/N):"); if (getch()='y') adduser(); return(0); fclose(fp); /*关闭fp所指向的文件*/ printf("ntt宿舍信息管理系统文件已保存"); printf("ntt按任意键退出程序ntt"); exit(0); return(0);change() /*按学号修改*/int i,j; char numb;scanf("%s",numb);for(i=0;i<num;i+)if(strcmp(studenti.numb,numb)=0)printf("ntt* 以下是您查找的用户信息 *"); printf("ntt学号: %s",studenti.numb); printf("ntt姓名: %s",studenti.name); printf("ntt宿舍号: %s",studenti.room); printf("ntt*"); printf("ntt是否要修改?(Y/N)n");if(getchar()='Y'|getchar()='y')printf("ntt*请输入第%d位的学生信息*",i); printf("ntt输入学号:"); scanf("%s",studentnum.numb); printf("ntt输入姓名:"); scanf("%s",studentnum.name); printf("ntt输入宿舍号:"); scanf("%s",studentnum.room); printf("ntt*");studenti=studenti;printf("ntt修改成功");printf("ntt是否继续修改?(y/n)");if (getch()='y' | getch()='Y')plus();return;elseprintf("ntt对不起,文件中无任何纪录");printf("ntt按任意键返回主菜单");getchar();return;void deletebynumb() /*按学号删除*/int i,j; int deletemark=0; /*将删除联系人的数目初始化为0*/char numb20; printf("ntt请输入要删除学生学号:"); scanf("%s",numb); if(num=0) /*num为0说明宿舍信息管理系统中还没有输入联系人*/ printf("ntt对不起,文件中无任何纪录"); printf("ntt按任意键返回主菜单"); getch(); return; for (i=0;i<num;i+) if (strcmp(studenti.numb,numb)=0) printf("ntt以下是您要删除的学生纪录:"); printf("ntt学号: %s",studenti.numb); printf("ntt姓名: %s",studenti.name); printf("ntt性别: %s",studenti.room); printf("tt"); printf("ntt是否删除?(y/n)"); if (getch()='y') for (j=i;j<num-1;j+) studentj=studentj+1; /*将要删除的学生的后一位赋值给要删除的学生*/ num-; /*宿舍信息管理系统中的学生数目减少1*/ deletemark+; /*删除的联系人增加1*/ printf("ntt删除成功"); printf("ntt是否继续删除?(y/n)"); if (getch()='y') /*输入y值,继续调用按学号函数删除*/ deletebynumb(); return; else /*否则,返回值*/ return; continue; /*跳出for循环,立即转向计算表达式3,对循环控制变量增量或减量*/ if (deletemark=0) /*若删除的学生数目为0,则说明没有删除学生信息管理系统里的学生*/ printf("ntt没有该学生的纪录"); printf("ntt是否继续删除?(y/n)"); if (getch()='y') /*输入y值,继续调用按学号函数删除*/ deletebynumb(); return; void deletebyname() /*按姓名删除*/int a=0;int findmark=0;int i,j;int deletemark=0;char name20; printf("ntt请输入要删除学生姓名:"); scanf("%s",name);for (i=a;i<num;i+) if (strcmp(studenti.name,name)=0) printf("ntt以下是您要删除的学生纪录:"); findmark+; printf("ntt_"); printf("ntt学号: %s",studenti.numb); printf("ntt姓名: %s",studenti.name); printf("ntt性别: %s",studenti.sex); printf("ntt出生日期: %s",studenti.birth); printf("ntt学位:%s",studenti.degr); printf("ntt职务:%s",studenti.duty); printf("ntt电话号码:%s",studenti.tel); printf("ntt_"); printf("ntt是否删除?(y/n)"); if (getchar()='y') for (j=i;j<num-1;j+) studentj=studentj+1; num-; deletemark+; printf("ntt删除成功"); printf("ntt是否继续删除?(y/n)"); if (getch()='y') /*输入y值,继续调用按姓名函数删除*/ deletebyname(); return; else /*否则,返回值*/ return; continue; /*跳出for循环,立即转向计算表达式3,对循环控制变量增量或减量*/ if (deletemark=0) /*若删除的学生数目为0,则说明没有删除宿舍信息管理系统里的学生*/ printf("ntt没有该学生的纪录"); printf("ntt是否继续删除?(y/n)"); if (getch()='y') /*输入y值,继续调用按姓名函数删除*/ deletebyname(); return; dele()char choic; printf("ntt1-按学号删除 2-按姓名删除"); printf("ntt请选择:"); choic=getch();switch (choic) case '1':deletebynumb();break; case '2':deletebyname();break; return(0);save() /*保存记录*/ int j; FILE *fp; fp=fopen("student.txt","w"); /*以只写的方式打开文件*/ if (fp=NULL) /*判断文件是否存在*/ printf("can't open the file."); /*不能打开文件*/ if(num!=0) for(j=0;j<num;j+) fwrite(student,sizeof(student),1,fp); printf("保存成功!"); fclose(fp); /*关闭fp所指向的文件*/ return(0); 11系 )( *件的 关 ; )"存( ) , + 0 0= *件打/ ) "( *存是判/ = *文式写只/ "" = * *保 )()( ' ;( :' ) = ):请 ( )"删 按- ( ) *删数用续值* ''( )" ?继是( )"的有 ( *里系舍删有,0生的/) *减量量循,表算立环 跳/ *回返/ ) *除数用继 输 '= ()" (继 " )功除 " + - + )+ - =( ''= ( ) ?否 )_" ) 码话 ) . ": ) ": ( ) , 生" ) . ":性( ) 名 ) . 学 )_" + ):生学删下 0= (+ < ) , )"姓学入 ( 0= ,00 0 *除按 ) ) *除函用继值* '=( ()" 除继 )"生有没( *里系信除没则目生除/ )0 *减量制环 达计立循 * ; *,/ ) *删函用续 * = ( ) ?续否" )功删 ( *加系除/ ; *少数学中息舍 - *生删要位生除将/;+ +- ; ''= )/除是 )" ( ) . , 别 ( ) 姓 ). " 学 ):纪的您以 ( 0= , ( + = ) )回意 " )纪件起 *人输还系理宿0 / = ) ," )学除输请 *为初目联将/ ; ;*除按 ) ) )"主键任 ()任件文 )('') | = )"/?继 ()功成 ( = )*"( ) ," )"宿 ) "( )"姓 " ) "" ):入 " ) *生学第入* " '') |'= ) 修是 ( )"* " ; , 舍 ) 姓 ) . , 号 ;)* 用找下 * " 0= , . + =() %( *改按* ) )( )0 ) 序出意 ( )存件统理舍 ( *向 * ) )( )( ''=( ) 添是 + ) "" ):入 " ) "% ):入 ( ) . ( ):入 )"* 信输* )误文写 *向 入数大 的首 组以 输据) ! , ( + <0 )"打件" *开件判 =) " "( *录添 ()( )( )单主键 " )息生有 ( 0= )( ) + ):主回任 )* ) "%舍 " ) ,%姓( ). " : " ;"*学查您* 0= + <=) )"入请" 0 )*号按* 0 00 *查学 )0 )( ) )单主意按 )录用舍相有 0! )( ) )"菜意按" )( = '') )/:户的宿查否 ) + ):菜键按" )* ) %号 ). " : " ) ,%学 ;)* 用查下* " 0= , . + =) ( )"宿请 ( )* 号宿*" 0 0 *学/ )( ) ) )单主返 )"的有 ( 0= )0 ) + )* " ) %: " ) . ,%名 " ) . ,%学 )* 用查您以* 0= . + () ,% )"名 " )*找名* ( 0= 0= *查姓/ ) )( )"主键任 ( )"纪中管舍宿 ( )* )_ () " ) , 号( ) " : ( ) . , 号 ( + = )*息所理管宿 * 0= *录* )()( ) ' = )/?加是( + ) "% ):宿输 "() . ( ):姓 ) " )入( )"* 户输*" *录* ( )0 : *数保* ; ( *除* ;) *函息修用 : *函添/ ) *找按/ ( *数查按* ) *数名按/ ; : *函示调 ; ) *数输/ : ) ;( ( ) ( )" ( " )" * " ) ( ) 录 ) 记除 ( ) 信改. )"添. " ) 查按 )找按. " ) 按. ) 记显 ) 录输. ( ) * * ( *屏/ ) )() _ *_ *界* ) *束/ ; *保 * ; *信学删 ( *记* ; *找号* ( *查宿/ ; *名 )( *显 ;( *记* ; *面单* ) 0 0 舍/ 姓/ 学/ " " . 下