版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
PAGEPAGE2學號1006430113成績課程設計說明書設計名稱C語言集中周設計題目學生信息管理系統(tǒng)設計時間2011年6月20日-6月24日學院信息學院專業(yè)建筑電氣與智能化班級10-1班姓名吳浩銘指導教師王鳳英2011年6月24日目標:編寫程序,建立一個學生信息管理系統(tǒng),存放有姓名,性別,籍貫,等,具備輸入、查找、添加、修改及刪除等功能。內(nèi)容要求:1)寫明題目,目的,意義2)說明完成該題目的詳細設計方法及相關(guān)知識3)完整的程序設計框圖(流程圖或N-S圖)4)完整的源程序代碼(包括注釋等程序說明)5)設計收獲體會6)參考資料注:說明書最后放一空白頁,預留寫評語按小組上交源程序電子版設計要求:完成一個學生信息管理系統(tǒng)系統(tǒng),具體要求如下:1.增加學生信息2.修改學生信息3.顯示學生信息4.查詢學生信息5.刪除學生信息7.保存學生信息至記錄文件8.從記錄文件讀取學生信息系統(tǒng)的功能模塊總控函數(shù)、菜單文件總控函數(shù)、菜單文件student.c增加學生信息刪除學生信息所有記錄列表清楚所有記錄修改信息記錄查詢學生信息源程序及解釋:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>*字定義函數(shù)聲明*/voidAdd();//增加記錄voidDelete();//刪除記錄voidSearch();//查找記錄voidAlter();//修改記錄voidViews();//查看所有記錄voiddelete_all();//清除所有記錄intcheck(charstrID[]);//查找文件記錄中已經(jīng)存在的學生ID/*定義學生信息結(jié)構(gòu)體*/structstudent{charID[10];charname[10];charsex[4];charnativePlace[10];charphone[13];charnation[6];};/*學生信息(學號,姓名,性別,籍貫,電話,住址,民族)*/structstudentstu;FILE*fp;/*定義文件指針*//*main()主函數(shù)*/voidmain(){intflag;while(flag!=7){printf("\n\t\t【學生信息管理系統(tǒng)】\n");printf("\t\t‖****************************************‖\n");printf("\t\t‖1、增加記錄4、修改記錄‖\n");printf("\t\t‖2、刪除記錄5、清除所有記錄‖\n");printf("\t\t‖3、查詢記錄6、所有記錄列表‖\n");printf("\t\t‖〖按任意鍵退出〗‖\n");printf("\t\t‖****************************************‖\n");scanf("%d",&flag);switch(flag){case1:Add();//增加記錄getch();system("cls");break;case2:Delete();//刪除記錄getch();system("cls");break;case3:Search();//查找記錄getch();system("cls");break;case4:Alter();//修改記錄getch();system("cls");break;case5:delete_all();//清空所有記錄getch();system("cls");break;case6:Views();//查看所有記錄getch();system("cls");break;default:exit(0);}}}/*****************插入新記錄*******************************/voidAdd(){if((fp=fopen("StudentMessage","ab+"))==NULL){printf("學生信息文件打開失?。?);exit(1);}else{intcheck_add(charstuID[]);longflength,offset;intk=0,t;//t用來接收check()函數(shù)的傳值charstr[53];fseek(fp,0,SEEK_END);flength=ftell(fp)/sizeof(stu);//統(tǒng)計文件中有多少條記錄printf("\t請輸入要插入的學生的信息:\n");input_message:printf("\t學號:");scanf("%s",&stu.ID);t=check_add(stu.ID);if(t==1){printf("\t》該學號已經(jīng)存在,不允許重復插入!請重新輸入一個學號?!禱n");gotoinput_message;//跳轉(zhuǎn)到“input_message”標記處繼續(xù)執(zhí)行}printf("\t姓名:");scanf("%s",&);printf("\t性別:");scanf("%s",&stu.sex);printf("\t籍貫:");scanf("%s",&stu.nation);printf("\t電話:");scanf("%s",&stu.phone);printf("\t名族:");scanf("%s",&stu.nativePlace);rewind(fp);//檢測文件中是否有空字符串,如果有則在此處插入新記錄,如果沒有則插入到文件尾while(!feof(fp)){fread(&str,sizeof(stu),1,fp);//檢測到空字符串,則將fp所指向的文件關(guān)閉,以讀寫方式重新打開if(strcmp(str,"")==0){fclose(fp);fp=fopen("StudentMessage","rb+");break;}k++;}offset=sizeof(stu)*k;fseek(fp,offset,SEEK_SET);fwrite(&stu,sizeof(stu),1,fp);fclose(fp);printf("插入數(shù)據(jù)成功!\n");}}/******************檢測將要插入的學號是否已存在文件記錄中**************************/intcheck(charstuID[10]){intid=0,k=1;FILE*fpp;structstudentcheckID;if((fpp=fopen("StudentMessage","rb"))==NULL)//以只讀方式打開一個二進制文件StudentMessage{printf("文件打開失??!\n");exit(1);//打開失敗,返回系統(tǒng)}while(!feof(fpp)){fread(&checkID,sizeof(stu),1,fpp);//檢測用戶輸入的學號是否已經(jīng)存在,若存在則終止程序的執(zhí)行if(strcmp(checkID.ID,stuID)==0){break;}id++;}fclose(fpp);returnid*k;}/********************檢測輸入的學號是否能插入*****************************************/intcheck_add(charstuID[10]){intid;FILE*fpp;structstudentcheckID;if((fpp=fopen("StudentMessage","rb"))==NULL)//以只讀方式打開一個二進制文件StudentMessage{printf("文件打開失敗!\n");exit(1);//打開失敗,返回系統(tǒng)}while(!feof(fpp)){fread(&checkID,sizeof(stu),1,fpp);//檢測用戶輸入的學號是否已經(jīng)存在,若存在則終止程序的執(zhí)行if(strcmp(checkID.ID,stuID)==0){id=1;break;}else{id=0;}}fclose(fpp);returnid;}/*******************根據(jù)用戶輸入的學號刪除記錄************/voidDelete(){printf("刪除相應記錄!\n");if((fp=fopen("StudentMessage","rb+"))==NULL)//以可讀可寫方式打開一個二進制文件{printf("文件打開失??!\n");return;}else{charmessage[10];//接收用戶需要刪除的學號inti;longflength;fseek(fp,0,SEEK_END);//把文件指針移到文件尾flength=ftell(fp)/sizeof(structstudent);//計算文件中有多少條記錄printf("\t請輸入您要刪除的學號:");scanf("%s",message);i=check(message);longoffset=sizeof(stu)*i;//記錄要刪除的學號的位置if(flength==0){printf("文件記錄為空!\n");return;}elseif(i>flength){printf("沒有該學生信息!\n");return;}else{//將要刪除的字符串全部置為空strcpy(stu.ID,"");strcpy(,"");strcpy(stu.sex,"");strcpy(stu.nation,"");strcpy(stu.phone,"");strcpy(stu.nativePlace,"");fseek(fp,offset,SEEK_SET);//移動指針到要刪除的學號的位置fwrite(&stu,sizeof(stu),1,fp);//將置空的信息重新寫回到文件中printf("\t\t數(shù)據(jù)刪除成功!\n");}fclose(fp);}}/******************查找數(shù)據(jù)***************************************/voidSearch(){if((fp=fopen("StudentMessage","rb"))==NULL)//以只讀方式打開StudentMessage文件{printf("\t文件打開失?。n");return;}else{charmessage[10];//接收用戶需要查找的信息inti;longflength,offset;fseek(fp,0,SEEK_END);//將文件指針移文件尾flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少條記錄printf("\t請輸入您要查找的學號:");scanf("%s",message);i=check(message);offset=sizeof(structstudent)*i;if(flength==0){printf("\t文件記錄為空!\n");return;}elseif(i>flength){printf("\t\t查找失敗,沒有找到相應信息!\n");return;}else{//輸出查找到的內(nèi)容rewind(fp);fseek(fp,offset,SEEK_SET);fread(&stu,sizeof(structstudent),1,fp);printf("學號:%s",stu.ID);printf("姓名:%s",);printf("性別:%s",stu.sex);printf("籍貫:%s",stu.nation);printf("電話:%s",stu.phone);printf("民族:%s\n",stu.nativePlace);}fclose(fp);}}/******************修改記錄********************************/voidAlter(){printf("修改相應記錄!\n");if((fp=fopen("StudentMessage","rb+"))==NULL){printf("文件打開失?。n");exit(1);}else{charmessage[10];//存儲用戶要修改的學號inti;longflength,offset;fseek(fp,0,SEEK_END);//移動文件指針到文件尾flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少條記錄printf("\t請輸入您要修改的學號:");scanf("%s",message);i=check(message);offset=sizeof(structstudent)*i;//記錄要修改的記錄在文件中的位置if(flength==0){printf("文件記錄為空!\n");return;}elseif(i>flength){printf("沒有該學生信息!\n");return;}else{rewind(fp);fseek(fp,offset,SEEK_SET);fread(&stu,sizeof(structstudent),1,fp);printf("該學生原來的信息:\n");printf("\t學號:%s",stu.ID);printf("姓名:%s",);printf("性別:%s",stu.sex);printf("籍貫:%s",stu.nation);printf("電話:%s",stu.phone);printf("名族:%s\n\n",stu.nativePlace);printf("請更新該學生的信息:\n");strcpy(stu.ID,message);printf("\t姓名:");scanf("%s",&);printf("\t性別:");scanf("%s",&stu.sex);printf("\t籍貫:");scanf("%s",&stu.nation);printf("\t電話:");scanf("%s",&stu.phone);printf("\t名族:");scanf("%s",&stu.nativePlace);fseek(fp,offset,SEEK_SET);//將文件指針指向要修改的地方fwrite(&stu,sizeof(stu),1,fp);//將修改后的內(nèi)容重新寫回到原來的地方printf("\t數(shù)據(jù)更新成功!\n");}fclose(fp);}}/**************查看所有記錄************************************/voidViews(){longflength;if((fp=fopen("StudentMessage","rb"))==NULL){printf("文件打開失?。n");exit(1);}fseek(fp,0,SEEK_END);//移動文件指針到文件尾flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少條記錄if(flength==0){printf("文件中沒有記錄!");return;}rewind(fp);//將文件指針移動到文件頭printf("\t\t\t所有記錄列表\n\n");while(!feof(fp)){fread(&stu,sizeof(stu),1,fp);if(strcmp(stu.ID,"")!=0)//檢測文件中的空字符串,如果不是空字符串則輸出{printf("學號:%s",stu.ID);printf("姓名:%s",);printf("性別:%s",stu.sex);printf("籍貫:%s",stu.nation);printf("電話:%s",stu.phone);printf("民族:%s\n",stu.nativePlace);}}fclose(fp);}/********************刪除所有記錄***************************
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 危險品倉儲危險廢物處置與管理考核試卷
- 助動車離合器拉線維護考核試卷
- 化學品生產(chǎn)過程中的成本控制與優(yōu)化考核試卷
- 塑料鞋生產(chǎn)成本分析與削減策略考核試卷
- 2025-2030全球防水屏障行業(yè)調(diào)研及趨勢分析報告
- 過河課程設計北師大版
- 2025年全球及中國自主接待機器人行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球廢舊三元催化器貴金屬回收行業(yè)調(diào)研及趨勢分析報告
- 讀寫障礙課程設計
- 高樓供水的課程設計
- DB22T 5005-2018 注塑夾芯復合保溫砌塊自保溫墻體工程技術(shù)標準
- 醫(yī)院手術(shù)室醫(yī)院感染管理質(zhì)量督查評分表
- 心內(nèi)電生理導管及器械
- 稱量與天平培訓試題及答案
- 超全的超濾與納濾概述、基本理論和應用
- 2020年醫(yī)師定期考核試題與答案(公衛(wèi)專業(yè))
- 2022年中國育齡女性生殖健康研究報告
- 各種靜脈置管固定方法
- 消防報審驗收程序及表格
- 教育金規(guī)劃ppt課件
- 呼吸機波形分析及臨床應用
評論
0/150
提交評論