學生選課管理系統(tǒng)c語言程序.doc_第1頁
學生選課管理系統(tǒng)c語言程序.doc_第2頁
學生選課管理系統(tǒng)c語言程序.doc_第3頁
學生選課管理系統(tǒng)c語言程序.doc_第4頁
學生選課管理系統(tǒng)c語言程序.doc_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

#include #include#includeint N1,N2;struct couse * head1;struct student * head2;struct couse/課程信息結構體 int num1;/課程編號char name120;/課程名稱char type20;/課程性質int hour;/總學時int teach;/上課學時int exp;/實驗上機學時int credit;/學分int semester;/開課學期 int nelepeo;/課程已選人數(shù)int Melepeo; /課程上限 struct couse * next;struct student/學生信息結構體 int num2;/學號 char name220;/姓名int nelenum50;/已選課程編號char nelename1020;/已選名稱 int nelen; /已選課程數(shù)量int score; /總學分int gainscore; /已獲得的學分 struct student * next;void manger();void student();void managementc();void managements();void manage();void main();void intoc() /存儲課程信息FILE * fp;struct couse * p;char filepath30;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n);printf(輸入路徑:);getchar();gets(filepath);if(fp=fopen(filepath,w)=NULL)printf(無法儲存!);exit(0);p=head1;while(p!=NULL)fprintf(fp,%d%s%s%d%d%d%d%d%d%dn,p-num1,p-name1,p-type,p-hour,p-teach,p-exp,p-credit,p-semester,p-nelepeo,p-Melepeo);p=p-next;fclose(fp);printf(已儲存入%s文件!n,filepath);void keyboardc()/錄入課程子函數(shù)(從鍵盤錄入)struct couse *p1,*p2;N1=0;p1=p2=(struct couse*) malloc(sizeof(struct couse);printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n); printf(編號名稱性質總學時上課學時實驗上機學時學分開課學期已選人數(shù)課程上限n);scanf(%d %s %s %d %d %d %d %d %d %d,&p1-num1,p1-name1,&p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo); head1=NULL;while(p1-num1!=0) N1=N1+1; if(N1=1)head1=p1; else p2-next=p1;/對這段語句有疑問 p2=p1; p1=(struct couse * )malloc(sizeof(struct couse); scanf(%d %s %s %d %d %d %d %d %d %d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo); p2-next=NULL;void filec()/錄入鍵盤子函數(shù)(從文件錄入) FILE * fp; char filepath20; struct couse *p1,*p2; N1=0;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(輸入要讀入的文件路徑:); getchar(); gets(filepath); if(fp=fopen(filepath,rb)=NULL) printf(找不到%s文件!n,filepath); exit(0); p1=p2=(struct couse*)malloc(sizeof(struct couse); fscanf(fp,%d%s%s%d%d%d%d%d%d%d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo); head1=NULL; while(!feof(fp) N1=N1+1; if(N1=1)head1=p1; else p2-next=p1; p2=p1; p1=(struct couse * )malloc(sizeof(struct couse); fscanf(fp,%d%s%s%d%d%d%d%d%d%d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo); p2-next=NULL;void inputc()/錄入課程主函數(shù) int i;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(ttt錄入課程信息n); printf(nttt1.從鍵盤錄入n); printf(ttt2.從文件錄入n); printf(ttt3.返回上一菜單n); printf(請選擇(13):); scanf(%d,&i); switch(i) case(1):system(cls);keyboardc();system(cls);inputc();break; case(2):system(cls);filec();system(cls);inputc();break; case(3):system(cls);managementc();break; void insertc(int num2)/課程管理子函數(shù)(修改課程)struct couse *p1,*p2; if(head1=NULL) printf(nttt沒有課程,無法修改!n); goto end; p1=head1; while(num2!=p1-num1 & p1-next!=NULL) p2=p1; p1=p1-next; if(num2=p1-num1) printf(ttt請重新輸入數(shù)據(jù)進行修改n);printf(課程編號課程名稱課程性質總學時上課學時實驗上機學時學分開課學期課程已選人數(shù)課程上限n);scanf(%d %s %s %d %d %d %d %d %d %d %d,&p1-num1,p1-name1,p1-type,&p1-hour,&p1-teach,&p1-exp,&p1-credit,&p1-semester,&p1-nelepeo,&p1-Melepeo);printf(ttt已修改該課程n); else printf(ttt無該編號的課程!n); end:;void delc(int num1)/課程管理子函數(shù)(刪除課程) struct couse *p1,*p2; if(head1=NULL) printf(nttt沒有課程,無法刪除!n); goto end; p1=head1; while(num1!=p1-num1 & p1-next!=NULL) p2=p1; p1=p1-next; if(num1=p1-num1) if(p1=head1) head1=p1-next; else p2-next=p1-next; printf(已刪除該編號課程!n); N1=N1-1; else printf(無該編號的課程!n); end:;void managementc()/課程管理主函數(shù) int i,num1,num2=1;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(ttt課程管理n);printf(ttt1.添加課程n); printf(ttt2.修改課程n); printf(ttt3.刪除課程n);printf(ttt4.存儲課程信息n); printf(ttt5.返回上一菜單n); printf(請選擇(15):); scanf(%d,&i); switch(i) case(1):system(cls);inputc();system(cls);break; case(2): system(cls);printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n);printf(請輸入要修改的課程編號:n);scanf(%d,&num2);insertc(num2);managementc();system(cls); break; case(3): system(cls);printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(請輸入要刪除課程的編號:n); scanf(%d,&num1); delc(num1);managementc();system(cls); break; case(4):system(cls);intoc();managementc();break; case(5):system(cls);manage();break; void intos() /存儲學生信息FILE * fp;struct student * p;char filepath30;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n);printf(請輸入路徑:);getchar();gets(filepath);if(fp=fopen(filepath,wb)=NULL)printf(n 無法儲存!);exit(0);p=head2;while(p!=NULL)fwrite(p,sizeof(struct student),1,fp);p=p-next;fclose(fp);printf(已儲存入 %s文件!n,filepath); void keyboards()/錄入學生信息子函數(shù)(從鍵盤錄入) int i; struct student *p1,*p2; N2=0; p1=p2=(struct student *)malloc(sizeof(struct student);printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(學生學號t學生姓名t總學分n); scanf(%d %s %d,&p1-num2,p1-name2,&p1-score);p1-nelen=0;p1-gainscore=0; for(i=0;inelenumi=0; head2=NULL; while(p1-num2!=0) N2=N2+1; if(N2=1)head2=p1; else p2-next=p1; p2=p1; p1=(struct student * )malloc(sizeof(struct student); scanf(%d %s %d,&p1-num2,p1-name2,&p1-score);p1-nelen=0;p1-gainscore=0; for(i=0;inelenumi=0; p2-next=NULL;void files()/錄入學生信息子函數(shù)(從文件錄入) int i=0; FILE * fp; char filepath20; struct student *p1,*p2; N2=0;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(輸入要讀入的文件路徑:); getchar(); gets(filepath); if(fp=fopen(filepath,rb)=NULL) printf(找不到%s文件!n,filepath); exit(0); p1=p2=(struct student*)malloc(sizeof(struct student); fread(p1,sizeof(struct student),1,fp); head2=NULL; while(!feof(fp) i=0; N2=N2+1; if(N2=1)head2=p1; else p2-next=p1; p2=p1; p1=(struct student * )malloc(sizeof(struct student); fread(p1,sizeof(struct student),1,fp); p2-next=NULL;void inputs()/錄入學生信息主函數(shù) int i;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(ttt錄入學生信息n); printf(nttt1.從鍵盤錄入n); printf(ttt2.從文件錄入n); printf(ttt3.返回上一菜單n); printf(請選擇(13):n); scanf(%d,&i); switch(i) case(1):system(cls);keyboards();system(cls);inputs();break; case(2):system(cls);files();inputs();break; case(3):system(cls);managements();break; void inserts(int num3)/學生信息管理子函數(shù)(修改學生信息)int i;struct student *p1,*p2; if(head2=NULL) printf(nttt沒有該學生信息,無法修改!n); goto end; p1=head2; while(num3!=p1-num2 & p1-next!=NULL) p2=p1; p1=p1-next; if(num3=p1-num2) printf(ttt重新修改數(shù)據(jù)); printf(ttt學生學號t學生姓名); scanf(%d %s %d,&p1-num2,p1-name2,&p1-score); p1-nelen=0;p1-gainscore=0; for(i=0;inelenumi=0; printf(ttt修改完畢); else printf(ttt無該學號的學生!n); end:;void dels(int num2)/學生信息管理子函數(shù)(刪除學生信息) struct student *p1,*p2; if(head2=NULL) printf(nttt沒有該學生信息,無法刪除!n); goto end; p1=head2; while(num2!=p1-num2 & p1-next!=NULL) p2=p1; p1=p1-next; if(num2=p1-num2) if(p1=head2) head2=p1-next; else p2-next=p1-next; printf(ttt已刪除該學生信息!n); N2=N2-1; else printf(ttt無該學號的學生!n); end:;void managements()/學生信息管理主函數(shù) int i,num2,num3;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n); printf(ttt學生信息管理n); printf(ttt1.添加學生信息n);printf(ttt2.修改學生信息n); printf(ttt3.刪除學生信息n);printf(ttt4.存儲學生信息n); printf(ttt5.返回上一菜單n); printf(請選擇(15):n); scanf(%d,&i); switch(i) case(1):system(cls);inputs();system(cls);break; case(2): system(cls);printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n);printf(請輸入要修改學生的學號:n); scanf(%d,&num3); inserts(num3);managements(); break; case(3): system(cls);printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n);printf(請輸入要刪除學生的學號:n); scanf(%d,&num2); dels(num2);managements(); break; case(4):system(cls);intos();managements();break; case(5):system(cls);manage();break; void manage() /信息管理函數(shù)int i;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(ttt信息管理);printf(nttt1.課程信息管理);printf(nttt2.學生信息管理);printf(nttt3.返回上一菜單);printf(n請輸入1-3:);scanf(%d,&i);switch(i)case 1:system(cls);managementc();break;case 2:system(cls);managements();break;case 3:system(cls);manger();break;void listc() /瀏覽課程信息struct couse * p;p=head1;printf(ttt*n); printf(ntttt歡迎使用此系統(tǒng)!n); printf(ttt*n);printf(課程編號 課程名稱 課程性質 總學時 授課學時 上機學時 學分 開課學期 n);while(p!=NULL)printf(num:%6dname:%13s%13s%10d%7d%7d%12d%5d%5dn,p-num1,p-name1,p-type,p-hour,p-teach,p-exp,p-credit,p-semester);p=p-next;void search1() /按學號查找學生信息int a,b;struct student *p;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(ttt請輸入學生學號);scanf(%d,&a);p=head2;printf(學號 學生姓名 所選課程編號 所選課程學分n);while(p!=NULL)if(p-num2=a)printf(%6d%13s ,p-num2,p-name2);for(b=0;p-nelenumb!=0&bnelenumb);printf(%10dn,p-nelen);p=p-next;void search2() /按課程學分查詢int b;struct couse *p;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(ttt請輸入課程學分:);scanf(%d,&b);p=head1;printf(課程號 課程名 課程性質 課程學分 選課人數(shù)n);while(p!=NULL)if(b=(p-credit)printf(%6d%13s%12s%12d%12d,p-num1,p-name1,p-type,p-credit,p-nelepeo);p=p-next;void search3() /按課程性質查詢char typ20;struct couse *p;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(請輸入要查找的課程性質:);printf(選修/必修n);scanf(%s,typ);p=head1;printf(課程編號t課程名t課程性質t學分t選課人數(shù)n);while(p!=NULL)if(strcmp(typ,(p-type)=0)printf(%6d%13s%12s%12d%12d,p-num1,p-name1,p-type,p-credit,p-nelepeo);p=p-next;void search4() /選課人數(shù)統(tǒng)計 struct couse * p;p=head1;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(課程編號t課程名t課程性質t選課人數(shù)n);while(p!=NULL)printf(%6d%13s%12s%12d ,p-num1,p-name1,p-type,p-nelepeo);p=p-next;void searchguanliyuan() /管理員信息查找函數(shù)int i;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(ttt學生信息查找);printf(nttt1.按學號查找);printf(nttt2.學分查詢);printf(nttt3.按課程性質查詢);printf(nttt4.統(tǒng)計各門課程選修人數(shù));printf(nttt5.返回上一級菜單);printf(n請輸入1-5:);scanf(%d,&i);switch(i)case 1:system(cls);search1();searchguanliyuan();break;case 2:system(cls);search2();searchguanliyuan();break;case 3:system(cls);search3();searchguanliyuan();break;case 4:system(cls);search4();searchguanliyuan();break;case 5:system(cls);manger();break;void shuru1() /管理員輸入函數(shù)char key20;char a20=l,z,j,t,u;int m;int n=1234;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n); printf(n);start1:;printf(tttt請輸入賬號:);scanf(%d,&m); start2:;printf(tttt請輸入密碼:);scanf(%s,key);if(m!=n)printf(tttt您輸入的用戶名不存在,請重新輸入n);goto start1;if(strcmp(key,a)!=0)printf(tttt你輸入的密碼不正確,請重新輸入n);goto start2;system(cls);manger();void manger() /管理員主函數(shù)int i;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(ttt1.信息維護n);printf(ttt2.信息瀏覽n);printf(ttt3.信息查詢n);printf(ttt4.各科選修人數(shù)n); printf(ttt5.返回上一級菜單);printf(n請輸入1-5:n);scanf(%d,&i);switch(i)case 1:system(cls);manage();break;case 2:system(cls);listc();manger();break;case 3:system(cls);searchguanliyuan();break; case 4:system(cls);search4();manger();break;case 5:system(cls);main();break;void elect() /學生選課struct student * s;struct couse * p;int a,i,b,j; printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n); start:;printf(請輸入您的學號:n);scanf(%d,&a);s=head2;while(s-num2)!=a&s-next!=NULL) s=s-next;if(s-num2!=a)printf(您的信息不存在,請重新輸入:n);goto start;if(s-nelen)=20)printf(您的學分已滿);goto end; start2:;printf(請輸入您要選修的課程編號:);scanf(%d,&b);p=head1;while(p-num1)!=b&p-next!=NULL) p=p-next;if(p-num1!=b)printf(您輸入的課程不存在,請重新輸入:n);goto start2;if(p-nelepeo)=(p-Melepeo)printf(此課程人數(shù)已滿,請選擇其他課程n);goto start2;for(i=0;(s-nelenumi)!=0;i+);s-nelenumi=b;(p-nelepeo)+;(s-gainscore)=(s-gainscore)+(p-credit);(s-nelen)+;for(j=0;jnelenameij)=(p-name1j);printf(選課成功n);end:;void searchstu() /學生信息查找函數(shù)int i;printf(ttt*n);printf(ntttt歡迎使用此系統(tǒng)!n);printf(ttt*n);printf(ttt學生信息查找);printf(nttt1.按學號查找);printf(nttt2.學分查詢);printf(nttt3.按課程性質查詢);printf(nttt4.統(tǒng)計各門課程選修人數(shù));printf(nttt5.返回上一級菜單);printf(n請輸入1-5:);scanf(%d,&i);switch(i)case 1:system(cls);search1();searchstu();break;case 2:system(cls);search2();searchstu();break;case 3:syst

溫馨提示

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

評論

0/150

提交評論