C語言實(shí)現(xiàn)學(xué)生選課系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)學(xué)生選課系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> typedef struct curr { char name[20]; //課程姓名 int number; //課程序號(hào) char teacher[20]; //課程教師姓名 int time; //課程課時(shí) int classroom; //課程教室 struct curr *next; //鏈表next }curr,*pcurr; typedef struct stu { int number; //學(xué)生序號(hào) char name[20]; //學(xué)生姓名 char sex[20]; //學(xué)生性別 struct curr *choices; //學(xué)生選課 struct stu *next; //鏈表next }stu,*pstu; pcurr creat_curr(pcurr curr_head); //創(chuàng)建鏈表,課程信息 pcurr find_curr(pcurr curr_head,int number); //查找鏈表, 課程信息 pcurr add_curr(pcurr curr_head,pcurr new_curr); //課程信息加入鏈表 void out_curr(pcurr curr_head); //輸出課程信息 pcurr del_curr(pcurr curr_head,pcurr del_point); //刪除課程信息 pstu creat_stu(pstu stu_head); //創(chuàng)建鏈表,學(xué)生信息 pstu find_stu(pstu stu_head,int number); //查找鏈表, 學(xué)生信息 pstu add_stu(pstu stu_head,pstu new_stu); //學(xué)生信息,加入鏈表 void out_stu(pstu stu_head); //輸出學(xué)生信息 pstu del_stu(pstu stu_head,pstu del_point); //刪除學(xué)生信息 pstu choice_curr(pstu stu_head,int number1,pcurr curr_head); //學(xué)生選課信息 void out_choice(pstu stu_head); //輸出學(xué)生選課信息 void title() { printf("\t---------歡迎使用成都信息工程大學(xué)--學(xué)生選課系統(tǒng)------------\n"); printf("\t--------- ------------\n"); printf("\t--------- 1.輸入課程信息 ------------\n"); printf("\t--------- 2.瀏覽課程信息 ------------\n"); printf("\t--------- 3.刪除課程信息 ------------\n"); printf("\t--------- 4.輸入學(xué)生信息 ------------\n"); printf("\t--------- 5.瀏覽學(xué)生信息 ------------\n"); printf("\t--------- 6.刪除學(xué)生信息 ------------\n"); printf("\t--------- 7.學(xué)生選課 ------------\n"); printf("\t--------- 8.所有學(xué)生選課信息 ------------\n"); printf("\t--------- 9.退出程序 ------------\n"); printf("\t--------- ------------\n"); printf("\t--------- 特別鳴謝:網(wǎng)絡(luò)工程專業(yè)劉尚文同學(xué) ------------\n"); } int main() { int a,n=0,i; int number=0; int number1=0; pcurr curr_head=NULL; pstu stu_head=NULL; pcurr new_curr=NULL; pstu new_stu=NULL; pcurr del_point=NULL; char choice[20]; do { system("cls"); title(); printf("請?jiān)?-9中選擇:"); scanf("%d",&a); switch(a){ case 1: system("cls"); new_curr=creat_curr(curr_head); curr_head=add_curr(curr_head,new_curr); break; case 2: system("cls"); printf("\t\t--------- 全部課程信息 ------------\n"); printf("\t課程姓名\t課程序號(hào)\t課程教師姓名\t課程課時(shí)\t課程教室\n"); out_curr(curr_head); system("pause"); break; case 3: system("cls"); printf("\t課程姓名\t課程序號(hào)\t課程教師姓名\t課程課時(shí)\t課程教室\n"); out_curr(curr_head); printf("請輸入打算刪除的課程的序號(hào):\n"); scanf("%d",&number); curr_head=del_curr(curr_head,find_curr(curr_head,number)); printf("刪除成功!\n"); system("pause"); break; case 4: system("cls"); new_stu=creat_stu(stu_head); stu_head=add_stu(stu_head,new_stu); break; case 5: system("cls"); printf("\t\t--------- 全部學(xué)生信息 ------------\n"); printf("\t學(xué)生姓名\t學(xué)生學(xué)號(hào)\t學(xué)生性別\n"); out_stu(stu_head); system("pause"); break; case 6: system("cls"); printf("請輸入打算刪除的學(xué)生的學(xué)號(hào):\n"); scanf("%d",&number); stu_head=del_stu(stu_head,find_stu(stu_head,number)); printf("刪除成功!\n"); system("pause"); break; case 7: system("cls"); printf("\t學(xué)生姓名\t學(xué)生學(xué)號(hào)\t學(xué)生性別\n"); out_stu(stu_head); printf("請輸入選課同學(xué)學(xué)號(hào):"); scanf("%d",&number1); choice_curr(stu_head,number1,curr_head); system("pause"); break; ; case 8: system("cls"); printf("\t\t\t\t--------- 全部選課信息 ------------\n"); printf("\n"); printf("\t學(xué)生姓名\t學(xué)生學(xué)號(hào)\t學(xué)生性別\t課程姓名\t課程序號(hào)\t課程教師姓名\t課程課時(shí)\t課程教室\n"); out_choice(stu_head); system("pause"); break; case 9: return 0; break; } } while(a!=0); return 0; } //創(chuàng)建鏈表,課程信息 pcurr creat_curr(pcurr curr_head) { pcurr new_curr=(pcurr)malloc(sizeof(curr)); printf("\n"); printf("\t\t--------- 輸入課程信息 ------------\n"); printf("\n"); printf("請輸入課程姓名:"); scanf("%s",new_curr->name); printf("請輸入課程序號(hào):"); scanf("%d",&new_curr->number); printf("請輸入課程教師姓名:"); scanf("%s",new_curr->teacher); printf("請輸入課程課時(shí):"); scanf("%d",&new_curr->time); printf("請輸入課程教室:"); scanf("%d",&new_curr->classroom); while (find_curr(curr_head,new_curr->number)!=NULL) { printf("此序號(hào)已經(jīng)有數(shù)據(jù),請重新輸入."); scanf("%d",&new_curr->number); } new_curr->next=NULL; return new_curr; } //查找鏈表 pcurr find_curr(pcurr curr_head,int number) { if(curr_head==NULL) return NULL; if(curr_head->number==number) return curr_head; return find_curr(curr_head->next, number); } //課程信息加入鏈表 pcurr add_curr(pcurr curr_head,pcurr new_curr) { if(curr_head==NULL) return new_curr; new_curr->next=curr_head; return new_curr; } //輸出課程信息 void out_curr(pcurr curr_head) { while(curr_head) { printf("\t%s\t\t%d\t\t%s\t\t%d\t\t%d\n",curr_head->name,curr_head->number,curr_head->teacher,curr_head->time,curr_head->classroom); curr_head=curr_head->next; } } //刪除課程信息 pcurr del_curr(pcurr curr_head,pcurr del_point) { pcurr point; if(del_point == NULL) { printf("沒有此序號(hào)信息,請重新輸入!\n"); return curr_head; } point=NULL; if(del_point == curr_head ) { point=curr_head->next; free(curr_head); return point; } point=curr_head; while(point) { if(point->next == del_point) { point->next=del_point->next; free(del_point); return curr_head; } point = point->next; } } //創(chuàng)建鏈表,學(xué)生信息 pstu creat_stu(pstu stu_head) { pstu new_stu=(pstu)malloc(sizeof(stu)); printf("\n"); printf("\t\t--------- 輸入學(xué)生信息 ------------\n"); printf("\n"); printf("請輸入學(xué)生姓名:"); scanf("%s",new_stu->name); printf("請輸入學(xué)生學(xué)號(hào):"); scanf("%d",&new_stu->number); printf("請輸入學(xué)生性別:"); scanf("%s",new_stu->sex); while (find_stu(stu_head,new_stu->number)!=NULL) { printf("此學(xué)號(hào)已經(jīng)有數(shù)據(jù),請重新輸入."); scanf("%d",&new_stu->number); } new_stu->choices=NULL; new_stu->next=NULL; return new_stu; } //查找鏈表 pstu find_stu(pstu stu_head,int number) { if(stu_head==NULL) return NULL; if(stu_head->number==number) return stu_head; return find_stu(stu_head->next, number); } //學(xué)生信息加入鏈表 pstu add_stu(pstu stu_head,pstu new_stu) { if(stu_head==NULL) return new_stu; new_stu->next=stu_head; return new_stu; } //輸出學(xué)生信息 void out_stu(pstu stu_head) { while(stu_head) { printf("\t%s\t\t%d\t\t%s\n",stu_head->name,stu_head->number,stu_head->sex); stu_head=stu_head->next; } } //刪除學(xué)生信息 pstu del_stu(pstu stu_head,pstu del_point) { pstu point; if(del_point == NULL) { printf("沒有此學(xué)號(hào)信息,請重新輸入!\n"); return stu_head; } point=NULL; if(del_point == stu_head ) { point=stu_head->next; free(stu_head); return point; } point=stu_head; while(point) { if(point->next == del_point) { point->next=del_point->next; free(del_point); return stu_head; } point = point->next; } } //學(xué)生選課 pstu choice_curr(pstu stu_head,int number1,pcurr curr_head) { int number; pcurr point=NULL,point1=NULL; pcurr choice_point=NULL; pstu stu_point=find_stu(stu_head,number1); if(stu_point!=NULL) { printf("\t課程姓名\t課程序號(hào)\t課程教師姓名\t課程課時(shí)\t課程教室\n"); out_curr(curr_head); printf("請輸入所選課程學(xué)號(hào):"); scanf("%d",&number); point=find_curr(curr_head,number); if(point!=NULL) { choice_point=(pcurr)malloc(sizeof(curr)); memcpy(choice_point,point,sizeof(curr)); choice_point->next=NULL; if(stu_point->choices==NULL) { stu_point->choices=choice_point; } else { choice_point->next=stu_point->choices; stu_point->choices=choice_point; } printf("恭喜你!選課成功!\n"); return stu_head; } else { printf("沒有所選課程序號(hào)!"); return stu_head; } } else { printf("沒有所選學(xué)生學(xué)號(hào)!"); return stu_head; } } //輸出學(xué)生選課信息 void out_choice(pstu stu_head) { pcurr point=NULL; while(stu_head) { point=stu_head->choices; printf("\t%s\t\t%d\t\t%s\n",stu_head->name,stu_head->number,stu_head->sex); while(point) { printf("\t\t\t\t\t\t\t%s\t\t%d\t\t%s\t\t%d\t\t%d\n",point->name,point->number,point->teacher,point->time,point->classroom); point=point->next; } stu_head=stu_head->next; } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:整型數(shù)據(jù)在內(nèi)存中存儲(chǔ)方式的講解
欄 目:C語言
下一篇:Dijkstra算法最短路徑的C++實(shí)現(xiàn)與輸出路徑
本文標(biāo)題:C語言實(shí)現(xiàn)學(xué)生選課系統(tǒng)
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/437.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子