




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、學生證管理系統(tǒng)課程設(shè)計報告C語言課程設(shè)計實驗報告課程設(shè)計題目:學生證管理系統(tǒng)姓名:學號:班級:專業(yè):指導(dǎo)教師:2014年 1 月 2 日學生證管理系統(tǒng)課程設(shè)計報告1。需求分析.根據(jù)學生證管理的需要,建一個“學生證管理系統(tǒng)",以方便對學生證信息的各項管理操作.要求完成:1.能對學生證信息進行錄入和修改2。能按照學號和班級號顯示學生證信息和更改、刪除信息。2.總體設(shè)計。根據(jù)以上分析,本系統(tǒng)主要包括:從鍵盤輸入學生證信息、從指定的文件中讀入學生證信息、按照學號和班號查詢學生證信息、刪除和修改學生證信息.(1) 主函數(shù)main():定義學生結(jié)構(gòu)體數(shù)組,輸出操作對話框,調(diào)用錄入、查詢、刪除、輸
2、出等函數(shù)對學生證信息進行處理.(2) 錄入函數(shù)enter():從鍵盤輸入學生證信息.(3) 錄入函數(shù)load():從文件輸入學生證信息。(4) 查詢函數(shù)search():按學號查找記錄信息.(5) 查詢函數(shù)display():按班級查找記錄信息。(6) 刪除函數(shù)del():刪除指定學號的學生記錄。(7) 修改函數(shù)modify():按照指定學號修改記錄.學生證管理系統(tǒng)程序功能機構(gòu)圖如下:學號查詢班級查詢鍵盤輸入文件輸入修改記錄刪除記錄3。詳細設(shè)計。本功能一共有16個函數(shù),其中一個主函數(shù),15個功能模塊,每個功能模塊都是由于主函數(shù)或其他功能模塊調(diào)用,分別說明如下:1。主函數(shù)main()。輸入操作s
3、輸入菜單開始鍵盤輸入文件輸入刪除記錄修改記錄班級查詢學號查詢繼續(xù)操作否結(jié)束YN圖1。2 主程序流程圖(2)鍵盤輸入函數(shù)。鍵盤輸入函數(shù)主要完成學生信息從屏幕輸入數(shù)據(jù),并將數(shù)據(jù)保存到文本文件中,以備后用。開始流程圖:輸入學生信息是否繼續(xù)結(jié)束YN(3)文件輸入函數(shù)。文件輸入函數(shù)主要完成學生信息從文件中讀入數(shù)據(jù)。開始打開文件結(jié)束關(guān)閉文件是否繼續(xù)讀入學生證信息YN圖1。4文件輸入流程圖(4)學號查詢函數(shù)。學號查詢函數(shù)是完成由用戶輸入需要查詢的學號,在現(xiàn)有學生信息中查詢是否有此學生信息存在,查到輸出學生全部信息,沒查到則輸出“此學生部存在”信息。流程圖如下:開始打開文件讀入學生證信息輸入查到學生信息結(jié)束關(guān)
4、閉文件輸出學生不存在信息查到否輸入查詢學號YN圖1。5 學號查詢流程圖(5)班級查詢函數(shù)。輸出查到學生信息結(jié)束關(guān)閉文件輸出此班級學生不存在信息查到否?輸入查詢班號讀入學生信息打開文件開始班級查詢函數(shù)是完成由用戶輸入需要查詢的班級,在現(xiàn)有學生信息中查詢此班級的全部學生信息,查到輸出全部信息,沒差到則輸出“此班級學生不存在"信息。YN(6)學號刪除函數(shù)。學號刪除函數(shù)是完成由用戶輸入需要刪除的學號,在現(xiàn)有學生信息中查詢是否有該學生信息存在,查到則刪除此學生全部信息,沒查到則輸出“此學生不存在”信息。程序流程圖如下:開始打開文件讀入學生信息輸入刪除學號找到否?輸入此學生不存在信息關(guān)閉文件結(jié)束
5、刪除此學生信息YN(7)修改函數(shù)。修改函數(shù)主要是完成根據(jù)學號查找到學生信息,輸出學生信息,然后修改學生信息。修改此學生信息結(jié)束關(guān)閉文件輸出此學生不存在信息找到否?輸入修改學號讀入學生學號打開文件開始程序流程如下:YN圖1.7 學號修改流程圖4測試結(jié)果。(1)程序運行主菜單 1。9 主菜單界面(2)從文件輸入并顯示結(jié)果(3)按學號查找。(4)修改測試.(5)按班號瀏覽.(6) 統(tǒng)計班級的人數(shù).(7)刪除功能測試.5。軟件操作使用說明書。本軟件采用命令行對話方式進行操作,運行后出現(xiàn)主界面如圖1。9所示,然后按菜單提示操作即可。6.總結(jié).通過本次課程設(shè)計練習,我們學會了科學分析問題解決問題的方法,從
6、問題分析下手,然后進行模塊設(shè)計,詳細設(shè)計,再進行代碼編寫和測試。在調(diào)試程序過程中,學會了分模塊進行,避免了以前那種將程序全部功能都放在main()函數(shù)中完成的弊病,使得調(diào)試過程更加順利。另外通過本次練習,在前面學習過程中碰到的諸如結(jié)構(gòu)體使用。指針使用。函數(shù)之間參數(shù)傳遞等難點問題也迎刃而解了。源代碼:/student。hinclude stdio.h>/I/O函數(shù) #include stdlib.h/標準庫函數(shù)#include <string.h/字符串函數(shù)include ctype。h>/字符操作函數(shù)define M 50/定義常數(shù)表示記錄數(shù)typedef struct/定義
7、數(shù)據(jù)結(jié)構(gòu) char no20;/學號char name20;/姓名char sex5;/性別char classes20;/班號char subject20;/學院專業(yè)STUDENTS;/以下是函數(shù)原型include”stufun。h”/student。cpp/菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項 。.。.。.。.。.。.。.int menu_select() char s80; int c;printf(”*主菜單*n"); printf(” 0。 輸入學生證信息記錄*n”); printf(" 1。 瀏覽學生證信息記錄n”); printf("* 2.
8、 按學號查找n”); printf(" 3。 按學號刪除n”); printf(”* 4。 按學號修改*n"); printf(” 5。 插入學生記錄n”); printf(”* 6。 保存記錄到文件n"); printf(" 7. 加載文件到內(nèi)存n"); printf(”* 8。 按班號瀏覽n"); printf(" 9。統(tǒng)計班級人數(shù)*n"); printf(" 10。程序退出n”); printf(”*n”); do printf(”n 輸入您的菜單選項編號(0-10):”); /提示輸入選項 sca
9、nf(”s",s);/輸入選擇項 c=atoi(s);/將輸入的字符串轉(zhuǎn)化為整型數(shù)getchar();while(c0|c10);/選擇項不在010之間重輸 return c;/返回選擇項,主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù) /輸入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值返回類型為整型表示記錄長度 .。.。.。.。.int enter(STUDENTS t) int i,n; system("cls”);printf(”n請輸入學生記錄條數(shù):n”); scanf(”d",&n);/輸入記錄數(shù) printf(”請輸入學生記錄:n"); printf(”學號 姓名
10、性別 班號 學院專業(yè)n”); printf("-n"); for (i=0;in;i+) scanf(”s",ti。no);/輸入學號scanf(”s”,);/輸入姓名scanf("%s",ti。sex);/輸入性別scanf(”s”,ti.classes);/輸入班號scanf(”%s”,ti。subject);/學院專業(yè) getchar();return n;/返回記錄條數(shù) /顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù) .。.。.。.。.。void list(STUDENTS t,int n) int i; system(”cls”)
11、;printf("n*學生清單*n"); printf(”學號 姓名 性別 班號 學院專業(yè)n”);printf("-n"); for(i=0;i<n;i+) printf(”20s%20s10s10s%10sn”,ti.no,,ti.sex,ti。classes,ti.subject); if(i+1)%10=0n%100)/判斷輸出是否達到10條記錄printf(”-n"); printf("每頁顯示10條學生記錄,按回車鍵向后翻頁。n"); getchar(); system("cls”);
12、printf("n*學生清單*n”); printf("學號 姓名 性別 班號 學院專業(yè)n”); printf(”-n”); printf(”-n”); /查找記錄 。.。.。.。.。.。.。.void search(STUDENTS t,int n) char s20;/保存待查找學號字符串 int i;/保存查找到結(jié)點的序號 system(”cls”);printf(”請輸入查找的學號:n"); scanf("%s",s);/輸入待查找學號 getchar();i=find_no(t,n,s);/調(diào)用find_no函數(shù),得到一個整數(shù) if(
13、in1)/如果整數(shù)i值大于n1,說明沒找到printf("沒有學號為s的學生!n”,s); else print(ti);/找到,調(diào)用顯示函數(shù)顯示記錄 /刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù) 。.。.。.。.。.。.。.int del(STUDENTS t,int n) char s20;/要刪除記錄的學號 int ch=0; int i; printf(”請輸入要刪除的學生學號:n”); scanf(”%s",s);/輸入學號getchar();i=find_no(t,n,s);/調(diào)用find_no函數(shù) if(i=n)printf(”沒有找到學號為s的學生!n",
14、s);elseprintf("正在刪除中!n”);for(;in;i+)/從刪除位置開始依次前移學生記錄 strcpy(,ti+1。name); strcpy(ti。no,ti+1.no); strcpy(ti.sex,ti+1。sex);strcpy(ti。classes,ti+1.classes);strcpy(ti。subject,ti+1.subject); n-;/刪除后記錄數(shù)減1printf(”刪除成功!n”);return n;/返回記錄數(shù) /插入記錄函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù) 。.。.。.。.。.。.。.。.。int add(STUDENTS t,i
15、nt n) STUDENTS temp;/新插入記錄信息 int i,j; char s20;/確定插入在哪個記錄之前 printf(”請輸入要插入的學生記錄:n"); printf(”*n”); printf(”學號 姓名 性別 班號 學院專業(yè)n"); printf("-n”); scanf("sssss”,temp。no,,temp.sex,temp.classes,temp.subject); /輸入插入信息 getchar();printf(”-n”); if(n0)printf(”請輸入插入位置的姓名,將新記錄插入在該名字前:
16、n”); scanf(”s”,s);/輸入插入位置的姓名 getchar();i=find_name(t,n,s);/調(diào)用find_name,確定插入位置 elsei=0;for(j=n1;j=i;j-)/從最后一個結(jié)點開始向后移動一條 strcpy(tj+1。no,tj.no); /當前記錄的學號拷貝到后一條 strcpy(tj+1。name,); /當前記錄的姓名拷貝到后一條 strcpy(tj+1。sex,tj。sex); /當前記錄的性別拷貝到后一條strcpy(tj+1。classes,tj。classes); /當前記錄的班號拷貝到后一條strcpy(tj+1.sub
17、ject,tj。subject); /當前記錄的學院專業(yè)拷貝到后一條 strcpy(ti。no,temp。no); /將新插入記錄的學號拷貝到第i個位置 strcpy(,); /將新插入記錄的姓名拷貝到第i個位置 strcpy(ti。sex,temp.sex); /將新插入記錄的性別拷貝到第i個位置strcpy(ti.classes,temp.classes);strcpy(ti。subject,temp.subject); /將新插入記錄的年齡拷貝到第i個位置 n+; /記錄數(shù)加1 return n; /返回記錄數(shù) /保存函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù) 。.。
18、.。.。.。.。.。void save(STUDENTS t,int n) int i; FILE *fp; /指向文件的指針 if(fp=fopen(”record.txt”,”wb")=NULL)/打開文件,并判斷打開是否正常 printf(”無法打開學生記錄文件!n");/打開失敗 exit(1); /退出 printf(”n正在保存中n”); fprintf(fp,”%d”,n); /將記錄數(shù)寫入文件 fprintf(fp,”rn"); /將換行符號寫入文件 for(i=0;i<n;i+) fprintf(fp,”20s30s-10s-10s10s”
19、,ti.no,,ti.sex,ti.classes,ti。subject);/格式寫入記錄 fprintf(fp,”rn”);/將換行符號寫入文件 fclose(fp);/關(guān)閉文件 printf("*保存成功*n”);/顯示保存成功 /讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組 .。.。.。.。.。.。.。.。int load(STUDENTS t) int i,n; FILE *fp;/指向文件的指針 if(fp=fopen(”record。txt","rb”))=NULL)/打開文件 printf(”無法打開學生記錄文件!n”);/打開失敗 exit(1);/退
20、出 fscanf(fp,”%d”,n); /讀入記錄數(shù) for(i=0;in;i+) fscanf(fp,”20s30s10s10s10s”,ti。no,,ti。sex,ti.classes,ti。subject); /按格式讀入記錄 fclose(fp); /關(guān)閉文件 printf("已經(jīng)成功加載學生記錄文件到內(nèi)存!n"); /顯示保存成功 return n; /返回記錄數(shù) /按班號顯示記錄函數(shù) .。.。.。.。.。.。.void display(STUDENTS t,int n) int i;char s20;printf(”請輸入班號:n");
21、 scanf("s",s); /輸入班號getchar();i=find_classes(t,n,s);if(in-1)printf(”沒有班號為%d的班級n",s);else printf(”n*學生清單*n"); printf("學號 姓名 性別 班號 學院專業(yè)n"); printf(”-n-”); for(i=0;in;i+)if(strcmp(s,ti.classes)=0) printf(”20s20s-10s-10s%-10sn",ti。no,,ti。sex,ti。classes,ti。subjec
22、t); printf(”-n”); /按班號統(tǒng)計人數(shù)。.void classcount(STUDENTS t,int n) int i;char s20;printf(”請輸入班號:n”); scanf(”s",s); /輸入班號getchar();i=find_classes(t,n,s);if(in1)printf(”沒有班號為%d的班級n”,s);elseint j=0; for(i=0;in;i+)if(strcmp(s,ti。classes)=0)j+; printf("該班一共有d人n”,j); /顯示指定的一條記錄 void print(STUDENTS te
23、mp) printf(”n*n”); printf(”學號 姓名 性別 班號 學院專業(yè)n”);printf(”-n”); printf("20s20s10s10s-10sn”,temp.no,,temp。sex,temp。classes,temp.subject); printf(”-n"); /按姓名查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s 。.。.。.。.。.。.int find_name(STUDENTS t,int n,char s) int i; for(i=0;in;i+) /記錄開始,直到最后一條 if(strcmp(s,)
24、=0) /記錄中的姓名和待比較的姓名是否相等 return i; /相等,則返回該記錄的下標號,程序提前結(jié)束 return i; /返回i值 /按班號查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s 。.。.。.。.。.。.。.。.。int find_classes(STUDENTS t,int n,char *s) int i; for(i=0;in;i+) /記錄開始,直到最后一條 if(strcmp(s,ti.classes)=0) /記錄中的姓名和待比較的姓名是否相等 return i; /相等,則返回該記錄的下標號,程序提前結(jié)束 return i; /返回i值 /按學號查找函數(shù),參數(shù)為記
25、錄數(shù)組和記錄條數(shù)以及學號no 。.。.。.。.。.。.。.int find_no(STUDENTS t,int n,char no) int i; for(i=0;i<n;i+) /從第一條記錄開始,直到最后一條 if(strcmp(no,ti.no)=0) /記錄中的學號和待比較的學號是否相等 return i; /相等,則返回該記錄的下標號,程序提前結(jié)束 return i; /返回i值 /修改函數(shù),按照輸入學號修改void modify(STUDENTS t,int n)char no20; /要修改記錄的學號 int ch=0; int i; printf(”請輸入要修改的學生學號:n”); scanf(”s",no);/輸入學號 getchar();i=find_no(t,n,no); /調(diào)用find_no函數(shù) if(i=n)printf(”沒有找到學號為s的學生!n",no);elseprintf(”學號為s的學生修改前:n”,no);print(ti);printf(”請輸入修改后學生記錄
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學四年級下冊班主任親子活動計劃
- 2025年年平板顯示項目發(fā)展計劃
- 2025年海水養(yǎng)殖產(chǎn)品種苗合作協(xié)議書
- 新蘇教版小學五年級英語下冊教學計劃
- 物業(yè)管理消防安全培訓計劃
- 二年級班級管理工作計劃
- 外研版四年級英語上冊教案設(shè)計計劃
- 班主任班會主題與活動計劃
- 2025-2030中國婦女衛(wèi)生護墊行業(yè)市場深度分析及前景趨勢與投資研究報告
- 小學美術(shù)學習評估與計劃方案
- 系統(tǒng)思維與系統(tǒng)決策:系統(tǒng)動力學(中央財經(jīng)大學)知到智慧樹章節(jié)答案
- 保安保潔服務(wù)方案
- 小學三年級毛筆書法教案含三維目標
- 土木工程畢業(yè)論文7篇
- 零星工程施工方案
- 2024年山東省青島市中考地理試題卷(含答案及解析)
- 隸書完整版本
- 員工招聘、入職、轉(zhuǎn)正、調(diào)動、離職管理制度
- 2022年湖北武漢中考滿分作文《護他人尊嚴燃生命之光》
- 有限空間作業(yè)氣體檢測記錄表
- 醫(yī)學課件抗痙攣體位擺放
評論
0/150
提交評論