C語(yǔ)言課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng)

上傳人:仙*** 文檔編號(hào):28790549 上傳時(shí)間:2021-09-12 格式:DOC 頁(yè)數(shù):13 大小:86.63KB
收藏 版權(quán)申訴 舉報(bào) 下載
C語(yǔ)言課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng)_第1頁(yè)
第1頁(yè) / 共13頁(yè)
C語(yǔ)言課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng)_第2頁(yè)
第2頁(yè) / 共13頁(yè)
C語(yǔ)言課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng)_第3頁(yè)
第3頁(yè) / 共13頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《C語(yǔ)言課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語(yǔ)言課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng)(13頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 C語(yǔ)言課程設(shè)計(jì) 實(shí)驗(yàn)題目 學(xué)生信息管理系統(tǒng) 一、引言 1.熟練掌握C語(yǔ)言編程的應(yīng)用的相關(guān)操作。 2.綜合應(yīng)用C語(yǔ)言的知識(shí),實(shí)現(xiàn)一個(gè)完整的系統(tǒng),提高編程能力,體會(huì)軟件程序的開發(fā)過程。 3. 培養(yǎng)學(xué)生獨(dú)立完成C語(yǔ)言程序課程設(shè)計(jì)的能力 4.運(yùn)用結(jié)構(gòu)體和鏈表編輯一個(gè)簡(jiǎn)單的學(xué)生基本信息管理系統(tǒng),使之能夠完成學(xué)生基本信息的創(chuàng)建、修改、添加、查詢、刪除、排序、輸出、退出操作。 5.執(zhí)行編譯操作,并根據(jù)提示調(diào)試此程序,排除所有的錯(cuò)誤和警告。直到編譯成功為止。 6.執(zhí)行運(yùn)行操作,逐一對(duì)每個(gè)模塊進(jìn)行調(diào)試。直到全部程序運(yùn)行成功為止。

2、 二、 需求分析 1.該學(xué)生信息管理系統(tǒng),完成學(xué)生基本信息的錄入、修改、添加、查詢、刪除、排序、輸出、退出操作。 每個(gè)模塊的功能如下: A、錄入模塊能夠完成學(xué)生姓名、性別、學(xué)號(hào)、年齡、出生年月、入學(xué)年月的輸入。 B、更新模塊中可以對(duì)學(xué)生信息進(jìn)行添加、刪除、修改。 C、打印模塊可以輸出以保存的所有學(xué)生信息。 D、查詢模塊能按學(xué)號(hào)或姓名查詢一個(gè)學(xué)生的全部信息,并能顯示該學(xué)生的全部信息,可以查詢所有已經(jīng)錄入的學(xué)生信息。 E、排序模塊將按照學(xué)生學(xué)號(hào)的順序進(jìn)行所有學(xué)生基本信息的排序并顯示。 F、退出模塊可直接退出此程序,結(jié)束操作。 2.創(chuàng)建

3、該學(xué)生信息管理系統(tǒng)目的就是能夠?qū)W(xué)生基本信息進(jìn)行創(chuàng)建、修改、添加、查詢、刪除、排序等功能,這樣可以簡(jiǎn)化許多人工做起來很復(fù)雜的問題,它還可以重復(fù)使用,方便、快捷。 三、概要設(shè)計(jì) 1. 設(shè)計(jì)方案 主 函 數(shù) 錄入模塊 查詢模塊 輸出(打?。┠K 添加模塊 排序模塊 修改模塊 刪除模塊 2、模塊功能說明 (1)錄入模塊:對(duì)定義的學(xué)生信息結(jié)構(gòu)體變量,利用循環(huán),將鍵入的學(xué)生 保存至指定文件,其中,學(xué)號(hào)、姓名、性別定義

4、為字符型,年齡、出生年月,入學(xué)年月都定義為整型。 (2)添加模塊:選擇添加信息選項(xiàng),按系統(tǒng)提示依次輸入基本信息,完畢后,將詢問是否繼續(xù)。 (3)修改模塊:選擇修改選項(xiàng),輸入要修改學(xué)生的姓名,利用循環(huán)、判斷語(yǔ)句,找到對(duì)應(yīng)的信息,可對(duì)任意一項(xiàng)進(jìn)行修改,完畢后,詢問是夠繼續(xù)。 (4)刪除模塊:選擇刪除選項(xiàng),可繼續(xù)選擇按學(xué)號(hào)或按姓名刪除。選擇后,將打印出其基本信息,詢問是否確認(rèn)刪除。利用覆蓋刪除法,刪除所選的項(xiàng)目。 (5)輸出模塊:利用讀函數(shù),讀取鍵入的信息,出入編輯好的表格及所有學(xué)生信息。 (6)查詢模塊:此模塊有2種查詢方式:按姓名查詢、按學(xué)號(hào)查詢。它

5、也是通過循環(huán)判斷查找,如果找到則顯示該學(xué)生的全部信息,否則,將輸出沒有查到該學(xué)生信息,,給以提示。 (7)排序模塊:對(duì)學(xué)生的學(xué)號(hào)進(jìn)行排序。利用選擇排序法排序,最后保存結(jié)果。 四、詳細(xì)設(shè)計(jì)及運(yùn)行結(jié)果 流程圖 錄入模塊 輸入學(xué)生基本信息 輸入完畢 返回主菜單 否 是 主 函 數(shù) 錄入模塊函數(shù) 查詢模塊函數(shù) 輸出模塊函數(shù) 添加模塊函數(shù) 排序模塊函數(shù) 修改模塊函數(shù) 刪除模塊函數(shù) 按姓名查詢 按學(xué)號(hào)查詢 按學(xué)號(hào)刪除 按所選項(xiàng)修改

6、 添加模塊 輸入要添加人的學(xué)號(hào) 輸入添加學(xué)生的全部信息 返回主菜單 繼續(xù)? 是 否 刪除模塊 按姓名刪除 按學(xué)號(hào)刪除 返回上一級(jí)菜單 顯 示刪除人 的信 息 返回菜單 確認(rèn)刪除 修改模塊 輸入修改學(xué)生學(xué)號(hào) 顯示學(xué)生基本信息 查詢 信息存在 不存在 學(xué)號(hào) 姓名 性別 年齡 入學(xué)年月 選擇修改項(xiàng) 顯示修改后信息 返回主菜單 是否繼續(xù) 是 否

7、 排序模塊 排序方式 按學(xué)號(hào)排序 顯示排序結(jié)果 返回主界面 查 詢 模 塊 按 姓 名 查 詢 按 學(xué) 號(hào) 查 詢 輸出所查詢的學(xué)生信息 返回主界面 六.調(diào)試情況,設(shè)計(jì)技巧及體會(huì) 1.調(diào)試: 輸入學(xué)生信息的情況,按照編寫的程序進(jìn)行進(jìn)行調(diào)試,輸出學(xué)生信息情況、添加、刪除、查詢(1按學(xué)號(hào)or2按姓名)、排序、修改等學(xué)生信息的管理的情況,退出程序。 2.設(shè)計(jì)技巧: 通過運(yùn)用C語(yǔ)言的語(yǔ)法規(guī)則,結(jié)構(gòu)體和鏈表編寫簡(jiǎn)單的 學(xué)生信息管理系統(tǒng)。運(yùn)用模塊,編寫各

8、個(gè)小程序是指連接成一個(gè)完整的學(xué)生信息管理系統(tǒng),使程序更加嚴(yán)謹(jǐn),簡(jiǎn)潔,清晰,實(shí)用。 3.體會(huì): 我對(duì)自己這次的實(shí)驗(yàn)設(shè)計(jì)完成的還比較滿意,這個(gè)學(xué)生管數(shù)組知識(shí)運(yùn)用C++編寫完成。此程序的不足之處是學(xué)生基本信息方面還不夠完善,譬如沒有家庭住址,電話號(hào)碼等相關(guān)的學(xué)生基本信息。課程設(shè)計(jì)看似簡(jiǎn)單,實(shí)則不然。 它花費(fèi)了近一周的時(shí)間寫程序,以后的大多數(shù)時(shí)間就在調(diào)程序,從構(gòu)思到結(jié)構(gòu)大體框架再到細(xì)節(jié)。這讓我明白“宏觀主宰全局,細(xì)節(jié)決定成敗”的道理,即使是小到一個(gè)分號(hào)也有可能使你的程序無法運(yùn)行。寫程序的時(shí)候必須很認(rèn)真,欲速則不達(dá)。在實(shí)習(xí)中,我深刻體會(huì)到老師發(fā)揮的重要作用:C語(yǔ)言程序?qū)ξ覀儊碚f比較難,在

9、匆忙的學(xué)習(xí)中更是難上加難,但在老師的幫助下我學(xué)會(huì)了如何調(diào)試,如何查找系統(tǒng)沒有提示的錯(cuò)誤,最后終于排除萬難把程序搞定,體會(huì)到原來編程也挺有意思的。 七、源程序(略,詳見電子版實(shí)驗(yàn)報(bào)告) #include"stdio.h" #include"stdlib.h" #include"string.h" #define MAX 100 #define N 3 struct day_type /*日期結(jié)構(gòu)體類型*/ { int year; int month; }; struct student_type { char num[8]; /*學(xué)號(hào)*/ ch

10、ar name[20]; /*姓名*/ char sex[1]; /*性別*/ int age; /*年齡*/ struct day_type birthday; /*出生年月*/ struct day_type comingday; /*入學(xué)年月*/ }; int number; int read_file(struct student_type students[]) { FILE *fp; int i=0; if((fp=fopen("student.txt","

11、rt"))==NULL) {printf("\n 庫(kù)存文件不存在,請(qǐng)創(chuàng)建!\n"); return 0; } while(!feof(fp)) { fread(&students[i],sizeof(struct student_type),1,fp); if(students[i].num==0) break; else i++; } fclose(fp); return i; } void save_file(struct student_type students[],int sum) { FILE *fp

12、; int i; if((fp=fopen("student.txt","wt"))==NULL) { printf("讀文件錯(cuò)誤\n"); return; } for(i=0;i

13、m("cls"); printf("\n請(qǐng)輸入要錄入的學(xué)生的個(gè)數(shù)(最多%d個(gè)):\n",MAX); scanf("%d",&number); printf("\n\n 錄入學(xué)生信息 (最多錄入%d個(gè))\n",number); printf(" ---------------------------------------\n"); while(i

14、m); if( students[i].num==0) break; printf("\n 學(xué)生姓名:"); scanf("%s",students[i].name); printf("\n 學(xué)生性別(男為m,女為w):"); scanf("%s",students[i].sex); printf("\n 學(xué)生年齡:"); scanf("%d",&students[i].age); printf("\n 學(xué)生出生年月(yyyy-mm):"); scanf("%d-%d",

15、&students[i].birthday.year,&students[i].birthday.month); printf("\n 學(xué)生入學(xué)年月(yyyy-mm):"); scanf("%d-%d",&students[i].comingday.year,&students[i].comingday.month); i++; } printf("\n %d個(gè)學(xué)生信息錄入完畢!\n",i); getchar(); printf("\n 按回車鍵返回主菜單!"); getchar(); return i; } /*輸出模

16、塊*/ void output(struct student_type students[],int sum) { FILE *fp; int i=0; system("cls"); fp=fopen("student.txt","rt"); printf("\n ----學(xué)生信息表---- \n\n"); printf("學(xué)生學(xué)號(hào)--學(xué)生姓名--學(xué)生性別--學(xué)生年齡--出生年月(yyyy-mm)--入學(xué)年月(yyyy-mm)\n"); printf("----------------------------

17、------------------------------------------------\n"); do { fread(&students[i],sizeof(struct student_type),1,fp); if(students[i].num!=0) { printf("%6s %8s %3s %4d %10d-%2d %10d-%2d\n",students[i].num,students[i].name,students[i].sex,students[i].age,students[i].birthday.year,studen

18、ts[i].birthday.month,students[i].comingday.year,students[i].comingday.month); printf("----------------------------------------------------------------------------\n"); i++; } }while(i

19、ype students[],int sum) /*修改模塊*/ { int i=0,choice,flag; char modify_num[8]; do { system("cls"); printf("\n 輸入要修改的學(xué)生的學(xué)號(hào):"); scanf("%s",modify_num); for(i=0;i

20、; printf("學(xué)生學(xué)號(hào)--學(xué)生姓名--學(xué)生性別--學(xué)生年齡--出生年月(yyyy-mm)--入學(xué)年月(yyyy-mm)\n"); printf("----------------------------------------------------------------------------\n"); printf("%6s %8s %3s %4d %10d-%2d %10d-%2d\n",students[i].num,students[i].name,students[i].sex,st

21、udents[i].age,students[i].birthday.year,students[i].birthday.month,students[i].comingday.year,students[i].comingday.month); printf("1.學(xué)生學(xué)號(hào) 2.學(xué)生姓名 3.學(xué)生性別 4.學(xué)生年齡 5.出生年月(yyyy-mm) 6.入學(xué)年月(yyyy-mm)\n"); printf("請(qǐng)輸入要修改項(xiàng)的編號(hào)(選擇1-6):"); scanf("%d",&choice); switch(choice) {

22、case 1: printf("\n 輸入修改后的學(xué)生學(xué)號(hào):"); scanf("%s",students[i].num); break; case 2: printf("\n 輸入修改后的學(xué)生姓名:"); scanf("%s",students[i].name); break; case 3: printf("\n 輸入修改后的學(xué)生性別:"); scanf("%s",students[i].sex); break; case 4: printf("\n 輸入修改后的學(xué)生年齡

23、:"); scanf("%d",&students[i].age); break; case 5: printf("\n 輸入修改后的學(xué)生出生年月(yyyy-mm):"); scanf("%d-%d",&students[i].birthday.year,&students[i].birthday.month); break; case 6: printf("\n 輸入修改后的學(xué)生入學(xué)年月(yyyy-mm):"); scanf("%d-%d",&students[i].comingday.year,&

24、students[i].comingday.month); break; } printf("\n ----學(xué)生信息----(修改后) \n "); printf("學(xué)生學(xué)號(hào)--學(xué)生姓名--學(xué)生性別--學(xué)生年齡--出生年月(yyyy-mm)--入學(xué)年月(yyyy-mm)\n"); printf("----------------------------------------------------------------------------\n"); printf("%6s %8s %3s

25、 %4d %10d-%2d %10d-%2d\n",students[i].num,students[i].name,students[i].sex,students[i].age,students[i].birthday.year,students[i].birthday.month,students[i].comingday.year,students[i].comingday.month); getchar(); break; } if(i==sum) {printf("\n 該學(xué)生不存在"); getchar();}

26、 save_file(students,sum); printf("\n\n 繼續(xù)修改嗎?( Y/N(選擇N則返回主菜單) )"); choice=getchar(); if(choice==Y||choice==y) { flag=1; printf("\n 繼續(xù)修改!\n"); } else flag=0; }while(flag==1); printf("\n"); } void reserch(struct student_type students[],int sum) /*查詢模塊*/ { int i=0,ch

27、oice,flag; char reserch[8]; do { system("cls"); printf("\n 請(qǐng)選擇查詢方式(1或2): 1.按學(xué)號(hào) 2.按姓名\n"); scanf("%d",&choice); switch(choice) { case 1: printf("\n 請(qǐng)輸入要查詢的學(xué)生的學(xué)號(hào):"); scanf("%s",reserch); for(i=0;i

28、dents[i].num,reserch)) { printf("\n ----學(xué)生信息---- \n "); printf("學(xué)生學(xué)號(hào)--學(xué)生姓名--學(xué)生性別--學(xué)生年齡--出生年月(yyyy-mm)--入學(xué)年月(yyyy-mm)\n"); printf("----------------------------------------------------------------------------\n") ;

29、 printf("%6s %8s %3s %4d %10d-%2d %10d-%2d\n",students[i].num,students[i].name,students[i].sex,students[i].age,students[i].birthday.year,students[i].birthday.month,students[i].comingday.year,students[i].comingday.month); getchar(); break;

30、 }break; case 2: printf("\n 請(qǐng)輸入要查詢的學(xué)生的姓名:"); scanf("%s",reserch); for(i=0;i

31、月(yyyy-mm)\n"); printf("----------------------------------------------------------------------------\n"); printf("%6s %8s %3s %4d %10d-%2d %10d-%2d\n",students[i].num,students[i].name,students[i].sex,students[i].age,students[i].birthday.year,students[i].

32、birthday.month,students[i].comingday.year,students[i].comingday.month); getchar(); break; }break; } if(i==sum) {printf("\n 該學(xué)生不存在"); getchar();} printf("\n\n 繼續(xù)查詢嗎?( Y/N(選擇N則返回主菜單) )"); choice=getchar(); if(choice==Y||choice==y) { flag=1; printf("\n 繼續(xù)修改!\n");

33、 } else flag=0; }while(flag==1); printf("\n"); } void sort(struct student_type students[],int sum) /*排序模塊*/ { int i,j; struct student_type t; system("cls"); for(i=0;i0) { t=students[i];

34、 students[i]=students[j]; students[j]=t; } } printf("\n按學(xué)號(hào)排序:\n\n"); printf("\n ----學(xué)生信息表---- \n\n"); printf("學(xué)生學(xué)號(hào)--學(xué)生姓名--學(xué)生性別--學(xué)生年齡--出生年月(yyyy-mm)--入學(xué)年月(yyyy-mm)\n"); printf("----------------------------------------------------------------------------\n

35、"); for(i=0;i

36、------------------------------------------------------\n"); } getchar(); printf("\n 按回車鍵返回主菜單!"); getchar(); } int del(struct student_type students[],int sum) /*刪除模塊*/ { int i,j,k=0; char del_num[8]; system("cls"); printf("請(qǐng)輸入需要?jiǎng)h除的學(xué)生信息的學(xué)號(hào)\n\n"); scanf("%s",del_num);

37、 for(i=0;i

38、intf("刪除成功:\n"); getchar(); printf("\n 按回車鍵返回主菜單!"); getchar(); return(sum-1); } } /*添加模塊*/ void add(struct student_type students[],int *sum) { int i,flag; char choice; system("cls"); i=(*sum); do {if(i

39、:"); scanf("%s",students[i].num); if(students[i].num==0) break; printf("\n 學(xué)生姓名:"); scanf("%s",students[i].name); printf("\n 學(xué)生性別(男為m,女為w):"); scanf("%s",students[i].sex); printf("\n 學(xué)生年齡:"); scanf("%d",&students[i].age); printf("\n 學(xué)生出生年

40、月(yyyy-mm):"); scanf("%d-%d",&students[i].birthday.year,&students[i].birthday.month); printf("\n 學(xué)生入學(xué)年月(yyyy-mm):"); scanf("%d-%d",&students[i].comingday.year,&students[i].comingday.month); (*sum)++; i=(*sum); getchar(); printf("\n 成功添加一個(gè)學(xué)生的信息!\

41、n"); getchar(); printf("\n 是否繼續(xù)添加??( Y/N(選擇N則返回主菜單) )\n"); choice=getchar(); if(choice==Y||choice==y) { flag=1; printf("\n 繼續(xù)添加!\n"); } else flag=0; } else { printf("\n 返回主菜單\n"); break;} }while(flag==1); } void main() { int choice,sum; /

42、/system("color ") struct student_type students[MAX]; sum=read_file(students)-1; if(sum==0) { printf("按回車鍵開始錄入基本庫(kù)存信息!"); getchar(); sum=input(students); save_file(students,sum); } do { system("cls"); printf("\n *************學(xué)生信息管理系統(tǒng)*************\n\n")

43、; printf(" 1.重新錄入學(xué)生信息 \n\n"); printf(" 2.查詢學(xué)生信息 \n\n"); printf(" 3.輸出學(xué)生信息 \n\n"); printf(" 4.添加學(xué)生信息 \n\n"); printf(" 5.排序?qū)W生信息 \n

44、\n"); printf(" 6.修改學(xué)生信息 \n\n"); printf(" 7.刪除學(xué)生信息 \n\n"); printf(" 0.退出系統(tǒng) \n\n"); printf(" 請(qǐng)選擇您要執(zhí)行的操作(0-7)\n"); scanf("%d",&choice); switch(choice) { case 1: sum=input

45、(students); save_file(students,sum); break; case 2: reserch(students,sum); break; case 3: save_file(students,sum); output(students,sum); break; case 4: add(students,&sum); save_file(students,sum); break; case 5: sort(students,sum); break; case 6: modify(students,sum); save_file(students,sum); break; case 7: sum=del(students,sum); save_file(students,sum); break; case 0: break; } }while(choice!=0); save_file(students,sum); } 八、參考文獻(xiàn) 王曙燕.《C語(yǔ)言程序設(shè)計(jì)》.北京:科技出版社.2008

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!