C++學生資訊管理系統
平臺:Window,Linux都可
語言:C++
完成日期:2017.1.17
功能:能開啟程式時,自動載入已經在檔案中的資料,那檔案就相當於資料庫,當關閉程式時,自動儲存資料到檔案中。
當然增加,刪除,修改,排序,清空等也是必不可少的。但這個學生資訊有點少,我就寫了名字和號碼。其他成績什麼的就不加進去了,儘量顯得簡單。
#include<iostream> #include<fstream> #include<string.h> using namespace std; /*學生資訊結點*/ class Student { public: char name[20]; int num; Student *next; void input(); void ReadFile(ifstream &in); }; /*往結點輸入資訊*/ void Student::input() { cout<<"please enter student's name:"; cin>>name; cout<<"please enter student's num:"; cin>>num; return ; } /*從文件中讀取值到結點*/ void Student::ReadFile(ifstream &in) { in>>name>>num; } /*學生資訊結點連結串列*/ class StudentMessage { public: StudentMessage(); ~StudentMessage(); /*關於學生資訊這個類所用到的函式*/ void Show_Menu(); void Add_Node(); void Del_node(); void Display(); void Find(); void Modify(); void Load(); void Save(); void Clean(); void Swap_node(Student *q,Student*p); void Sort(); private: /*StudentMessage類可以看作是以Studet類為結點的連結串列*/ Student *head; //連結串列頭 Student *end; //連結串列尾 ifstream in; ofstream out; }; /*建構函式*/ /*這個建構函式可以在開啟程式時,就自動載入原有的學生資訊*/ StudentMessage::StudentMessage() { /*初始化,頭尾結點*/ head = new Student; head->next = new Student; end = head->next; ifstream in("file.txt"); //原有的學生資訊是放在檔案file.txt中的 /*Important Part!*/ /*下面很關鍵,不這樣做的話達不到效果。首先要先向檔案讀一下,才能判斷 檔案是否為空,因為eof()不能用來判斷檔案是否為空,eof()是根據檔案的狀態標識 來判斷檔案是否為空的,當讀取檔案時,遇到結尾時,系統會改變檔案的狀態標識 ,這時候才會返回EOF,才能用eof()判斷。不先讀一下的話,in.eof()是不會返回 正值的,即使檔案為空*/ char ch = in.get(); if(in.eof()) { cout<<"file is empty"<<endl; } /*若檔案非空*/ while(!in.eof()) { end->ReadFile(in); if(end->name[0]=='\0')break; //這裡也是比較關鍵的,不加這一句的話 //程式會把檔案最後結束的標記也都出來 end->next = new Student; end = end->next; } } /*解構函式*/ StudentMessage::~StudentMessage() { Save(); //當正常退出程式的時候,儲存資料到file.txt中 Student *pos = head->next; Student *temp; while(pos!=end) { temp = pos; pos = pos->next; delete temp; } delete head,end; } /* /*增加結點*/ void StudentMessage::Add_Node() { char quit; while(1) { end->input(); end->next = new Student; end = end->next; cout<<"continue or not?,Y/N"<<endl; cin>>quit; switch(quit) { case'Y': case'y':break; case'n': case'N':return;break; default:cout<<"error input,again,please..Y/N"; cin>>quit; } } cout<<"add node success!"<<endl; system("pause"); } /*修改結點*/ void StudentMessage::Modify() { char name[20]; cout<<"enter the name you want to modify:"; cin>>name; Student *pos = head->next; for(pos;pos!=end;pos=pos->next) { if(strcmp(name,pos->name)==0) { pos->input(); break; } } cout<<"Modify success!..."<<endl; system("pause"); } /*刪除結點*/ void StudentMessage::Del_node() { int del_flag = 0; char name[20]; if(head->next == end) {cout<<"Empty...."<<endl;return;} cout<<"please enter the name you want to delete:"; cin>>name; Student *p = head->next; Student *q = head; for(p;p!=end;p->next) { if(strcmp(p->name,name)==0) { del_flag = 1; q->next = p->next; delete p; break; } else { q=q->next; p=p->next; } } if(del_flag == 0) {cout<<"Can not Find the name you want."<<endl;} cout<<"del node success!"<<endl; system("pause"); } /*查詢學生資訊*/ void StudentMessage::Find() { char name[20]; cout<<"please enter name you want to find:"; cin>>name; Student *pos = head->next; if(pos==end) { cout<<"Student Message is Empty..."<<endl; return ; } for(pos;pos!=end;pos=pos->next) { if(strcmp(pos->name,name)==0) { cout<<"Find it!"<<endl; cout<<"name:"<<pos->name<<endl; cout<<"num:"<<pos->num<<endl; return; } } cout<<"Can not Find the name..."; } /*儲存學生資訊*/ void StudentMessage::Save() { out.open("file.txt"); Student *pos = head->next; if(head->next== end) { cout<<"StudentMessage List is Empty...."<<endl; return ; } else { for(pos;pos!=end;pos=pos->next) { out<<'\t'<<pos->name<<'\t'<<pos->num;//格式最好這樣寫 //因為一開始會把檔案讀一下,以判斷 //檔案是否為空,所以前面最後用‘\t’ //來增加幾個空格,給他讀一個空格, //以不讀到正常資料,後面就不要有空格 //以為當程式從file.txt讀資訊時,可能 //會把空格也當是一個數據結點讀程序序 } } out.close(); cout<<"Save node success!"<<endl; } /*顯示結點*/ void StudentMessage::Display() { if(head->next==end) {cout<<"Empty..."<<endl;} Student *pos; pos = head->next; for(pos;pos!=end;pos=pos->next) { cout<<endl; cout<<pos->name<<endl; cout<<pos->num<<endl; cout<<endl; } system("pause"); } /*結點交換*/ void StudentMessage::Swap_node(Student *q,Student *p) { char Tname[20]; int Tnum; strcpy(Tname,p->name); Tnum = p->num; strcpy(p->name,q->name); p->num = q->num; strcpy(q->name,Tname); q->num = Tnum; } /*以num位準排序*/ void StudentMessage::Sort() { Student *p,*q; p=head->next; /*氣泡排序*/ for(p;p!=end;p=p->next) { for(q=p->next;q!=end;q=q->next) { if(q->num > p->num) { Swap_node(q,p); } } } cout<<"sort success!"<<endl; system("pause"); } /*清空文件*/ void StudentMessage::Clean() { ofstream out("file.txt",ios::trunc); out.close(); exit(0);//用exit使程式退出程式的時候,不呼叫StudentMessage類的解構函式, //否則又會把記憶體的資料寫到file.txt檔案中 } /*顯示選單*/ void StudentMessage::Show_Menu() { cout<<"0.退出程式"<<endl; cout<<"1.增加結點"<<endl; cout<<"2.刪除結點"<<endl; cout<<"3.顯示所有學生資訊"<<endl; cout<<"4.修改學生資訊"<<endl; cout<<"5.查詢學生資訊"<<endl; cout<<"6.清空文件"<<endl; cout<<"7.排序"<<endl; } int main() { StudentMessage sm; //建立類物件,並呼叫其建構函式 //把file.txt中的學生資訊資料讀到記憶體中 int choice; while(1) { sm.Show_Menu(); cout<<"please enter your choice:"; cin>>choice; switch(choice) { case 0:return 0;break; case 1:sm.Add_Node();break; case 2:sm.Del_node();break; case 3:sm.Display();break; case 4:sm.Modify();break; case 5:sm.Find();break; case 6:sm.Clean();break; case 7:sm.Sort();break; } system("cls"); } return 0; }
相關推薦
程式閱讀 簡單C 學生資訊管理系統
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
C++學生資訊管理系統
平臺:Window,Linux都可 語言:C++ 完成日期:2017.1.17 功能:能開啟程式時,自動載入已經在檔案中的資料,那檔案就相當於資料庫,當關閉程式時,自動儲存資料到檔案中。 當然增加,刪除,修改,排序,清空等也是必不可少的。但這個學生資訊有
C++課設案例 學生資訊管理系統
#include <iostream> #include <string> #include <windows.h> #include <iostream> #include <fstream> #include <conio.h&g
c#簡易學生資訊管理系統
在近期的學習中,我們學習了泛型及泛型集合的概念和使用,泛型是c#中的一個重要概念,為了鞏固我們學習的成果,我們可以使用一個例項來進行練習 題目及要求 要求使用Windows窗體應用程式,製作出如上圖的介面,並實現增刪改查的功能 StuInfo類的編寫 同往常一樣,在編寫窗體的程式碼前,我們需要先編
C語言陣列實現學生資訊管理系統
概述 單純只用多個數組管理學生成績資訊,不使用結構體,該程式最主要的難點是依據學號或總成績對學生資訊進行排序,藉助了臨時陣列來標記排好序的下標。 執行結果如下: 輸入資料: 列印資料: 根據
c語言學生資訊管理系統(連結串列、檔案)
#include<stdio.h> /*呼叫標頭檔案*/ #include<stdlib.h> #include<string.h> #inclu
學生資訊管理系統c++
一個簡單的c語言學生資訊管理系統,是控制檯程式。 執行介面如下,功能已經全部實現 void function();//所有操作在該函式下進行 void init();//歡迎介面 void menu(
C語言實現一個列表式的學生資訊管理系統(完善)
http://blog.csdn.net/morixinguan/article/details/77489633上節,我們實現了學生資訊管理系統的大多數功能,但還有兩個功能沒有實現,就是學生資訊修改還有學生資訊刪除了。當然,程式中依然存在諸多的BUG,比如,scanf和ge
順序表構建學生資訊管理系統(C++)
順序表構建學生資訊管理系統–C++樣例 對於本文的任何建議和問題都可留言,我們共同探討,進步和提高。 上次編寫了根據單鏈表進行構建學生管理系統的C++樣例,本次使用順序表進行構建。單鏈表與順序表各有利弊,順序表能夠快速的進行定位,但是必須事先指定表的
學生資訊管理系統(c++)
學生資訊管理系統(c++) 該課程設計含有兩個模組: (1)教師許可權模組 (2)學生許可權模組 學生許可權模組含有1)增加2)顯示3)追加4)查詢 學生資訊功能 教師許可權模組含有1)增加2)顯示3)追加4)查詢 5)修改 6)刪除 學生資訊功能 用到的主要知識 (1)類
用c++實現學生資訊管理系統
#include #include #include<string.h> using namespace std; #define MAXSIZE 20 class aclass; class student { private: long no;
C語言 學生資訊管理系統
前文是樓主的一些經歷,給大家分享一下,希望能夠幫到大家。文中有不足的地方還請指出,我們一同探討,或者可以直接看正文(恩~第一次在這兒發帖確實有點小激動O(∩_∩)O~)。 |前文| 我是一名職高學生,入校選擇專業時毫不猶豫選擇了計算機,只因對此擁有濃厚
C語言《學生資訊管理系統》連結串列+檔案操作
今天帶來的是一個連結串列版本的《學生資訊管理系統》,功能包括:新增、顯示、查詢、刪除、儲存、讀取,等功能模組,連結串列是C語言的進階內容,希望大家好好學習,這裡的程式碼可能會有一些瑕疵,希望大家提供意見或建議 主介面 顯示功能: 查詢功能: 這裡只展示了學號查
C語言小專案(學生資訊管理系統)
/* 執行環境:我是在linux裡面用gcc編譯的,在windows裡應該也能執行,用的一些檔案庫函式都是c標準庫,沒有用linux的系統呼叫(糾正一下:system("clear")這個系統呼叫是linux的,windows裡面用system("cls") )
學生資訊管理系統(c語言)
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #define LEN sizeof(STD) typedef st
C語言課程設計之學生資訊管理系統
#include"stdio.h" //標準的輸入輸出函式檔案頭部說明 #include"math.h" // 數學函式頭部說明 #include"string.h" #include"stdlib.h" //通過該函式頭部裡的
C++課程設計:學生資訊管理系統
課程設計內容 1.)學生資訊的錄入:錄入新的學生的資訊; 2.)學生資訊的新增:新增新的學生的資訊; 3.) 學生資訊的刪除:刪除不需要的學生的資訊。 4.)學生資訊的查詢:查詢你需要的學生的資訊。 5.)學生資訊的修改:修改錯誤的學生的資訊。 6.)學生資訊的顯示:顯示所
linux下使用C語言實現簡易的學生資訊管理系統
該專案資料儲存方式使用的是動態陣列,所以需要用到動態陣列庫,具體庫檔案參考->我的動態陣列庫<-上的兩個檔案 ArrayLib.h 和 ArrayLib.c 學生管理系統的檔案有三個 main.c、stuSystem.h 和 stuSystem.c,
Android核心技術-day05-03-學生資訊管理系統小練習
package com.gaozewen.studentsystem.db; import android.content.ContentValues; import android.content.Context; import android.database.Curso
學生資訊管理系統資料庫課程設計
一.概述 學生資訊管理系統是學校管理的重要工具,是學校不可或缺的一部分。隨著在校人數的不斷增加,教務系統的數量也不斷的上漲。學校工作繁雜,資料眾多,人工管理資訊的難度也越來越大,顯然是不能滿足實際的需要,效率也是很低的。並且這種傳統的方式存在著眾多的弊端,如:保密性差.查詢不便.效率低,很難維