




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C語言課程設計實驗報告PAGE2PAGE4語言課程設計實驗報告C語言課程設計實驗報告課題:學生信息管理系統(tǒng)設計報告人:阮家友方鵬飛葉成指導老師:嚴碧波孫祥娥報告日期:2014年6月23日C語言課程設計實驗報告1.設計目的:學生信息管理系統(tǒng)設計學生信息包括:學號、姓名、年齡、電話號碼、性別、出生年月、QQ、班級等。試設計一學生信息管理系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作學生信息添加功能輸入查詢功能算法按學號查詢按姓名查詢學生信息的刪除與修改學生信息整表瀏覽功能輸出2.總體設計:程序設計組成框圖主菜單主菜單學生信息錄入學生信息整表瀏覽信息查詢按學號查詢按姓名查詢信息編輯按學號修改按學號刪除case4case4case3case5case6case1case2case0結束N結束程序Y窗口展示載入鏈表判斷cmd!=0?主菜單顯示輸入選擇cmdcmd開始調(diào)用add_info()調(diào)用serch_info()調(diào)用serch_info()調(diào)用delete_info()調(diào)用delete_info()調(diào)用preview_info()3.詳細設計:1>函數(shù)入口說明menu()輸出主菜單load_info()載入函數(shù):txt轉為鏈表add_info(STU*h)增加學生信息search_info(STU*h,inttype)搜索學生信息delete_info(STU*h)刪除學生信息update_info(STU*h)修改學生信息output_info(STU*h)輸出學生信息preview_info(STU*h,inttype)預覽學生信息main()主函數(shù)2>調(diào)用關系load_info()add_info(load_info()add_info(STU*h)search_info()output_info()search_info()output_info()main()update_infomain()update_info()delete_infodelete_info()preview_infopreview_info()output_info()3>參數(shù)說明add_info(STU*h)、delete_info(STU*h)、output_info(STU*h)、preview_info(STU*h,inttype)、search_info(STU*h,inttype)、update_info(STU*h)、函數(shù)中的STU*h為傳入的鏈表節(jié)點指針,type為搜索的方式:1為輸出傳入節(jié)點指針的一條學生記錄,2為輸出所有的學生記錄。4.調(diào)試與測試:1>調(diào)用STU*load_info()函數(shù)(文件載入),讀寫出現(xiàn)亂碼解決方法:更改相應指針指向,及有關變量的初值設置。2>邊界測試解決方法:用極端的或偏門的情況來探測和驗證代碼在處理時會發(fā)生什么。3>執(zhí)行窗口執(zhí)行多次命令后顯示過多,不利于輸入指令及結果查看解決方法:調(diào)用系統(tǒng)清屏函數(shù)system("cls");。4>文件在打開和保存時有問題。解決方法:調(diào)整文件的打開方式,從原來的單純的w+修改為添加一個if語句,當沒有文件時執(zhí)行w+的操作,否則執(zhí)行r+。避免了原存儲文件被覆蓋的問題。5.源程序清單和執(zhí)行結果:#include<stdio.h>#include<stdlib.h>#include<string.h>//學生信息結構體typedefstructrecord{ charNo[10]; charname[12]; unsignedintage; charsex[4]; charbirth[10]; charqq[12]; chargrade[20]; charphone[11]; structrecord*next;}STU;//菜單函數(shù)intmenu();//載入函數(shù):txt轉為鏈表STU*load_info();//增加學生STU*add_info(STU*h);//搜索函數(shù)STU*search_info(STU*h,inttype);//刪除學生STU*delete_info(STU*h);//修改學生信息voidupdate_info(STU*h);//輸出信息voidoutput_info(STU*h);//預覽信息voidpreview_info(STU*h,inttype);voidmain(){ STU*header=NULL,*sear=NULL;intcmd=1; system("title學生信息管理系統(tǒng)"); //system("modeconcols=48lines=25"); system("date/T"); system("TIME/T"); system("color3E"); header=load_info(); //preview_info(header,2); cmd=menu(); while(cmd!=0) { switch(cmd) { case0:break; //添加信息 case1: header=add_info(header);output_info(header); break; //學號查詢 case2: sear=search_info(header,1); if(sear!=NULL) { preview_info(sear,1); } else printf("該學生不存在!\n"); sear=NULL; break; //姓名查詢 case3: sear=search_info(header,2); if(sear!=NULL) { preview_info(sear,1); } else printf("該學生不存在!\n"); sear=NULL; break; //按學號刪除 case4: header=delete_info(header); output_info(header); break; //修改 case5: update_info(header); output_info(header); break; //整表輸出 case6: preview_info(header,2); break; default: printf("無效的命令!\n請重新輸入命令!\n"); break; } if(cmd!=0) cmd=menu(); }}intmenu(){ intcmd=0; printf("\n請輸入命令:\n\t0:結束程序!\n\t1:添加記錄!\n\t2:按學號查詢!\n\t3:按姓名查詢!\n\t4:按學號刪除信息!\n\t5:按學號修改信息!\n\t6:整表瀏覽!\n"); scanf("%d",&cmd); while(cmd<0||cmd>9) { printf("無效的命令!\n請重新輸入:\n"); scanf("%d",&cmd); } returncmd;}STU*load_info(){ FILE*fp=fopen("d:\\stu.txt","r+"),*fpNew=NULL; STU*h=NULL,*q=NULL,*p=NULL;charch='0'; h=(STU*)malloc(sizeof(STU)); if(fp==NULL) { fpNew=fopen("d:\\stu.txt","w"); fclose(fpNew); returnNULL; } rewind(fp); ch=fgetc(fp); if(ch==EOF) { returnNULL; } else { rewind(fp); fscanf(fp,"%10s%12s%3d%11s%4s%10s%12s%20s",h->No,h->name,&h->age,h->phone,h->sex,h->birth,h->qq,h->grade); q=h; q->next=NULL; } ch=fgetc(fp); while(ch!=EOF) { p=(STU*)malloc(sizeof(STU)); p->next=NULL; fscanf(fp,"%10s%12s%3d%11s%4s%10s%12s%20s",p->No,p->name,&p->age,p->phone,p->sex,p->birth,p->qq,p->grade); ch=fgetc(fp); q->next=p; q=q->next; } fclose(fp); returnh;}STU*add_info(STU*h){ FILE*fpin=fopen("d:\\stu.txt","a"); STU*stu,*p; p=h; stu=(STU*)malloc(sizeof(STU)); stu->next=NULL; system("cls"); if(h==NULL) { h=stu; printf("請輸入學號:\n"); scanf("%s",h->No); printf("請輸入姓名:\n"); scanf("%s",h->name); printf("請輸入年齡:\n"); scanf("%d",&h->age); printf("請輸入手機號:\n"); scanf("%s",h->phone); printf("請輸入性別:\n"); scanf("%s",h->sex); printf("請輸入出生年月日:\n"); scanf("%s",h->birth); printf("請輸入qq:\n"); scanf("%s",h->qq); printf("請輸入班級:\n"); scanf("%s",h->grade); } else { while(p->next!=NULL) { p=p->next; } p->next=stu; printf("請輸入學號:\n"); scanf("%s",stu->No); printf("請輸入姓名:\n"); scanf("%s",stu->name); printf("請輸入年齡:\n"); scanf("%d",&stu->age); printf("請輸入手機號:\n"); scanf("%s",stu->phone); printf("請輸入性別:\n"); scanf("%s",stu->sex); printf("請輸入出生年月日:\n"); scanf("%s",stu->birth); printf("請輸入qq:\n"); scanf("%s",stu->qq); printf("請輸入班級:\n"); scanf("%s",stu->grade); } fclose(fpin); returnh;}STU*delete_info(STU*h){ STU*p,*q; charno[11]; p=h; if(p==NULL) { printf("\t目前還沒有信息記錄!\n"); returnNULL; } else { printf("請輸入一個學號:\n"); scanf("%s",no); q=p->next; if(strcmp(h->No,no)==0) { printf("該學生信息已刪除!\n"); h=h->next; } else { while(q!=NULL) { if(strcmp(q->No,no)==0) { printf("\t該學生的信息已刪除!\n"); p->next=q->next; returnh; } else { p=q; q=q->next; } } printf("該學生不存在!\n"); } returnh; }}STU*search_info(STU*h,inttype){ STU*p_temp=NULL,*q=h; p_temp=(STU*)malloc(sizeof(STU)); system("cls"); switch(type) { case1: printf("\t請輸入一個學號:\n\t"); scanf("%s",p_temp->No); while(q!=NULL) { if(strcmp(q->No,p_temp->No)==0) returnq; else q=q->next; } returnNULL; break;//按學號查詢 case2: printf("\t請輸入一個名字:\n\t"); scanf("%s",p_temp->name); while(q!=NULL) { if(strcmp(q->name,p_temp->name)==0) returnq; else q=q->next; } returnNULL; break;//按姓名查詢 default:returnNULL;break; }}voidupdate_info(STU*h){ STU*q=NULL; unsignedintcmd=1,rec=1; system("cls");while(rec!=0){ q=search_info(h,1); if(q==NULL) printf("\t該學生不存在,無法進行修改操作!\n"); else { cmd=1; while(cmd!=0) { system("cls"); preview_info(q,1); printf("\n\t0:修改完成,回主菜單!\n\t1:修改該學生姓名!\n\t2:修改該學生年齡!\n\t3:修改該學生手機號!\n\t4:修改該學生性別!\n\t5:修改該學生生日!\n\t6:修改該學生qq號!\n\t7:修改該學生班級!\n\t8:修改下一個!\n"); printf("請輸入命令:\n\t"); scanf("%d",&cmd); switch(cmd) { case0:cmd=0;rec=0;break; case1: printf("\t請輸入學生新的姓名:\n\t"); scanf("%s",q->name); break; case2: printf("\t請輸入學生新的年齡:\n\t"); scanf("%d",&q->age); break; case3: printf("\t請輸入學生新的手機號:\n\t"); scanf("%s",q->phone); break; case4: printf("\t請輸入學生新的性別:\n\t"); scanf("%s",q->sex); break; case5: printf("\t請輸入學生新的生日:\n\t"); scanf("%s",q->birth); break; case6: printf("\t請輸入學生新的qq號:\n\t"); scanf("%s",q->qq); break; case7: printf("\t請輸入學生新的班級:\n\t"); scanf("%s",q->grade); break; case8: cmd=0; break; }//switch結束 }//內(nèi)層while結束 }}//外層while結束}//函數(shù)結束voidoutput_info(STU*h){ FILE*fpin=fopen("d:\\stu.txt","w"); STU*q=NULL; q=h; if(q!=NULL) { fprintf(fpin,"%-10s%-12s%4d%11s%-4s%-8s%-11s%20s",q->No,q->name,q->age,q->phone,q->sex,q->birth,q->qq,q->grade); q=q->next; } while(NULL!=q) { fprintf(fpin,"\n%-10s%-12s%4d%11s%-4s%-8s%-11s%20s",q->No,q->name,q->age,q->phone,q->sex,q->birth,q->qq,q->grade); q=q->next; } fclose(fpin);}voidpreview_info(STU*h,inttype){ STU*p=NULL; p=h; system("cls"); switch(type) { case1: printf("================================="); printf("\n該學生的完整信息為:\n\t學號:%-10s\n\t姓名:%-12s\n\t年齡:%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 回收煙盒合同范本
- 2025至2030年中國塑料門窗焊接清角生產(chǎn)線數(shù)據(jù)監(jiān)測研究報告
- 商鋪租賃費用合同范例
- 會務發(fā)布合同范本
- 廠房搬運合同范本
- 可合并堆類算法的函數(shù)式建模及其機械化驗證研究
- led屏搬遷合同范本
- 體外模擬消化及酵解對黃芪多糖APS-Ⅱ結構和免疫活性影響的研究
- 公益林合同范本
- 商標無償使用合同范本
- 新教科版四年級上冊科學全冊重點題型練習課件(含答案)
- 防災減災地質災害防御應對講座培訓課件ppt
- 2023年天津高考英語聽力試題及原文
- 火力發(fā)電廠OVATION 與西門子控制系統(tǒng)之間通訊實現(xiàn)
- 家庭節(jié)約用水
- 電噴系統(tǒng)原理及故障維修手冊
- 電力事業(yè)部崗位職責
- 走進現(xiàn)代舞智慧樹知到答案章節(jié)測試2023年浙江大學
- 同濟大學數(shù)據(jù)庫課程期末考核試卷(A卷)
- 深基坑變形監(jiān)測方案
- 公司首件確認表
評論
0/150
提交評論