學生資訊管理系統(課程設計)
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; struct student { int id; // 學號 char name[30]; // 姓名 char sex[2]; // 性別 float gread; // 成績 }; typedef struct student DataType; // 指定struct student為DataType struct SeqList { int MAX; // 順序表中最大元素的個數 int count; // 存放線性表中元素的個數count <= MAXLENGTH DataType* element; // element[0], element[1], ..., element[n - 1]存放線性表中的元素 }; typedef struct SeqList *MySeqList; // 初始化並建立空順序表 MySeqList initSeqList(int m); // 判斷線性表是否為空 int isEmptySeqList(MySeqList mySeqList); // 在順序表中求某元素的下標 int locateSeqList(MySeqList mySeqList, int id); // 在順序表中修改值 int updateSeqList(MySeqList mySeqList, int id); // 順序表的插入(元素p之前插入) int insertPreSeqList(MySeqList mySeqList, int p, DataType x); // 順序表的插入(元素p之後插入) int insertNextSeqList(MySeqList mySeqList, int p, DataType x); // 順序表的刪除(根據下標刪除) int deleteSeqList(MySeqList mySeqList, int p); // 順序表的刪除(根據元素值刪除) int deleteSeqListByValue(MySeqList mySeqList, int id); // 將順序表表示的線性表逆置 int reverseSeqList(MySeqList mySeqList); int deleteAllVSeqList(MySeqList mySeqList, DataType x); // 求出下標為i的元素的前驅和後繼 int findPrePostSeqList(MySeqList mySeqList, int i, DataType &m, DataType &n); // 順序表實現部分:找出值為x的元素的前驅和後繼的儲存位置(即下標) int locatePrePostSeqList(MySeqList mySeqList, DataType x, int &i, int &j); // 輸出線性表的元素值 void printSeqList(MySeqList &mySeqList); // 根據學生id,輸出線性表的元素值 void printSeqListById(MySeqList &mySeqList,int id); // 在順序表中修改值 int updateSeqList(MySeqList mySeqList, int id) //學生資訊登入 { int iRc = locateSeqList(mySeqList, id); if (iRc == -1) { printf("不存在指定下標!\n"); return (0); } cout<<"學號 姓名 性別 成績 "<<endl; cin>>mySeqList->element[iRc].id>>mySeqList->element[iRc].name>>mySeqList->element[iRc].sex>>mySeqList->element[iRc].gread; return 1; } // 功能: 建立空順序表 MySeqList initSeqList(int m) { MySeqList mySeqList = (MySeqList)malloc(sizeof(struct SeqList)); // 分配記憶體空間 if (mySeqList != NULL) { mySeqList->element = (DataType*)malloc(sizeof(DataType) * m); // 為裡面的元素分配m個DataType大小的記憶體空間,相當於初始化了一個長度為m的陣列 if (mySeqList->element) { mySeqList->MAX = m; // 如果建立了元素,MAXLENGTH為最大元素的個數 mySeqList->count = 0; // 空表長度為0 return (mySeqList); } else free(mySeqList); // 記得要手動釋放空間,否則很容易產生記憶體洩漏 } printf("記憶體空間不足,請關閉一些程式,然後再試!\n"); // 儲存分配失敗,提示空間不足 return NULL; } // 功能: 判斷線性表是否為空 int isEmptySeqList(MySeqList mySeqList) { return (mySeqList->count ==0); } // 功能:在順序表中求某元素的下標,沒有查詢到,則返回-1 int locateSeqList(MySeqList mySeqList, int id) { for (int i = 0; i < mySeqList->count; ++i) if (mySeqList->element[i].id == id) // 傳入一個元素x,查詢到後返回下標i return (i); return (-1); } // 功能:順序表的pos下標前面插入,插入成功返回1,失敗返回0 int insertPreSeqList(MySeqList mySeqList, int pos, DataType x) { ++mySeqList->count; if (mySeqList->count > mySeqList->MAX) // 溢位 { --mySeqList->count; printf("表產生了溢位!\n"); return (0); } if (pos < 0 || pos >= mySeqList->count) // 不存在下標為pos的元素 { --mySeqList->count; printf("不存在指定下標!\n"); return (0); } for (int i = mySeqList->count - 1; i != pos; --i) {mySeqList->element[i] = mySeqList->element[i - 1]; // 插入位置及之後的元素均後移一個位置 mySeqList->element[i] = x; // 插入元素x return (1); } } // 功能:順序表的pos下標後面插入,插入成功返回1,失敗返回0 int insertNextSeqList(MySeqList mySeqList, int pos, DataType x) { if (pos < 0 || pos >= mySeqList->count) { printf("不存在指定下標!\n"); return (0); } ++mySeqList->count; if (mySeqList->count >= mySeqList->MAX) { --mySeqList->count; printf("表產生了溢位!\n"); return (0); } for (int i = mySeqList->count - 1; i != pos + 1; --i) {mySeqList->element[i] = mySeqList->element[i - 1]; // 同樣地,把pos+1插入位置及之後的元素均後移一個位置 mySeqList->element[i] = x; // 插入元素x return (1); } } // 功能:順序表的刪除(根據下標刪除) int deleteSeqList(MySeqList mySeqList, int pos) { if (pos < 0 || pos >= mySeqList->count) // 不存在下標為pos的元素,注意下標範圍是從0到count-1 { printf("不存在指定下標!\n"); return (0); } for (int i = pos; i < mySeqList->count - 1; ++i) mySeqList->element[i] = mySeqList->element[i + 1]; // 被刪除元素之後的元素均前移一個位置 --mySeqList->count; // 元素個數減1 return (1); } // 功能:根據元素值刪除,實現順序表的刪除 int deleteSeqListByValue(MySeqList mySeqList, int id) { int pos = locateSeqList(mySeqList, id); if (pos == -1) { printf("不存在指定下標!\n"); return (0); } deleteSeqList(mySeqList, pos); return (1); } int deleteAllSeqListByValue(MySeqList mySeqList, int x) { if (mySeqList->count == 0) { printf("該表為空!\n"); return (0); } for (int i = 0; i != mySeqList->count; ++i) { if (mySeqList->element[i].id == x ) { deleteSeqListByValue(mySeqList,x); // 刪除x,刪除後要將下標減少1 i--; } } return (1); } int deleteAllVSeqList(MySeqList mySeqList, int x) { if (mySeqList->count == 0) { printf("該表為空!\n"); return (0); } int p = 0, q = 0; while (mySeqList->element[p].id != x && p != mySeqList->count - 1) // 跳過開始不是x的元素 { ++p; ++q; } for (; p != mySeqList->count - 1; ++p) // 遍歷元素,不遍歷最後一個元素(為了防止越界) { while (mySeqList->element[p].id == x && p != mySeqList->count - 1) // 如果元素是x,則遊標p後移(用while處理多個x連續的情況) { ++p; } if (p != mySeqList->count - 1) { mySeqList->element[q] = mySeqList->element[p]; ++q; } } if (mySeqList->element[mySeqList->count - 1].id != x) { mySeqList->element[q] = mySeqList->element[mySeqList->count - 1]; ++q; } mySeqList->count = q; return (1); } // 功能:找出值為x的元素的前驅和後繼的儲存位置(即下標) int locatePrePostSeqList(MySeqList mySeqList, int x, int &i, int &j) { int k = locateSeqList(mySeqList, x); if (k == -1) return (0); if (k == 0) i = -1; else i = k - 1; if (k == mySeqList->count - 1) j = -1; else j = k + 1; return (1); } // 輸出線性表的元素值 void printSeqList(MySeqList &mySeqList) { for (int i = 0; i < mySeqList->count; ++i) // 輸出線性表的元素值 { cout<< "學號:" << mySeqList->element[i].id << ",姓名:" << mySeqList->element[i].name << ",性別:" << mySeqList->element[i].sex ; cout<< "語文:" << mySeqList->element[i].gread; cout<<endl; } cout << endl; } // 根據學生id,輸出線性表的元素值 void printSeqListById(MySeqList &mySeqList,int id) { for (int i = 0; i < mySeqList->count; ++i) // 輸出線性表的元素值 { if (id == mySeqList->element[i].id) { cout<< "學號:" << mySeqList->element[i].id << ",姓名:" << mySeqList->element[i].name << ",性別:" << mySeqList->element[i].sex ; cout<< "語文:" << mySeqList->element[i].gread; cout<<endl; break; } } } //主函式 int main(int argc, char* argv[]) { MySeqList mySeqList = initSeqList(20); // 初始化一個長20的表 L: system("cls"); cout<< " ""--------歡迎使用學生成績管理系統---------"" "<<endl; cout<<endl; cout<< "1.新增學生資訊"<<endl; cout<<"2.查詢學生資訊"<<endl; cout<< "3.刪除學生資訊"<<endl; cout<<"4.修改學生資訊"<<endl; cout<< "5.退出學生系統"<<endl; int i; cout<<"請選擇一個操作(1-5):"; cin>>i; if (i == 1) { mySeqList->count = 1; int iRc = 0; while(true&&mySeqList->count<20) { cout<<endl<<"請新增學生資訊(輸入*退出新增):"<<endl; cout<<"姓名:"; cin>>mySeqList->element[iRc].name; if (strcmp(mySeqList->element[iRc].name,"*") == 0) { mySeqList->count--; goto L; } cout<<"學號: "; cin>>mySeqList->element[iRc].id; cout<<"性別: "; cin>>mySeqList->element[iRc].sex; cout<<"成績: "; cin>>mySeqList->element[iRc].gread; cout << "成功新增學生成績資訊成績。"<<endl; printSeqList(mySeqList); mySeqList->count++; iRc++; } } else if (i == 2) { L4: cout<<"請輸入要查詢的學生學號:"<<endl; int sid;//學號 cin>>sid; if (locateSeqList(mySeqList,sid) != -1) { cout<<"成功查詢學號為"<<sid<<"的學生成績。"<<endl; printSeqListById(mySeqList,sid); } else { cout<<"查詢學生成績錯誤,可能不存在學號為"<<sid<<"的學生."<<endl; } int iopselect; cout<<endl<<"還要繼續查詢嗎?(按0返回主選單,否則繼續此操作。)"<<endl; cin>>iopselect; if (iopselect == 0) goto L ;//返回主介面 else goto L4;//重新查詢 } else if (i == 3) { L1: cout<<"請輸入要刪除的學生學號:"<<endl; int stu_id; cin>>stu_id; if (deleteSeqListByValue(mySeqList,stu_id) == 1) cout<<"成功刪除學生成績。"<<endl; else cout<<"刪除學生成績出錯。"<<endl; printSeqList(mySeqList); int iop; cout<<endl<<"還要繼續刪除嗎?(按0返回主選單,否則繼續此操作。)"<<endl; cin>>iop; if (iop == 0) goto L ; else goto L1; } else if (i == 4) { L3: cout<<"請輸入要修改的學生學號:"<<endl; int id; cin>>id; if(updateSeqList(mySeqList,id) ==1) cout << "成功修改學生成績資訊成績。"<<endl; else cout << "修改學生成績資訊成績出錯。"<<endl; printSeqList(mySeqList); int iselect; cout<<endl<<"還要繼續修改嗎?(按0返回主選單,否則繼續此操作。)"<<endl; cin>>iselect; if (iselect == 0) goto L ; else goto L3; } else if (i == 5) { system("cls"); cout<<"您已經出本系統,感謝使用."<<endl; } return 0; }
執行結果:
</pre><pre name="code" class="cpp">
相關推薦
學生資訊管理系統課程設計
/************************************************************************************************************************************** *
學生資訊管理系統(課程設計)
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; struct studen
C語言學生成績資訊管理系統課程設計報告
C語言課程設計報告 一 .設計目的 學生成績管理系統 主要功能: (1)能按學期、按班級完成對學生成績的錄入、 修改,刪除 (2)能按班級統計學生的成績,求學生的總分及 平均分,並能根據學生的平均成績進行排序 (3)能查詢學生成績,不及格科目及學生名單
java學生資訊錄入系統課程設計報告
每個人做的不一樣,下面附上與此設計報告相匹配的程式碼,詳細可見 http://blog.csdn.net/qiaoermeng/article/details/79297626(注意類名,包名要一致,若有問題可留言解答,(^▽^)) 封面(各自要求不一樣)
學生資訊管理系統資料庫課程設計
一.概述 學生資訊管理系統是學校管理的重要工具,是學校不可或缺的一部分。隨著在校人數的不斷增加,教務系統的數量也不斷的上漲。學校工作繁雜,資料眾多,人工管理資訊的難度也越來越大,顯然是不能滿足實際的需要,效率也是很低的。並且這種傳統的方式存在著眾多的弊端,如:保密性差.查詢不便.效率低,很難維
資料結構課程設計——學生資訊管理系統
/*Copyright (c)2017,煙臺大學計算機與控制工程學院 *All rights reservrd. *作者:趙楷文 *完成時間:2017年12月20日 *版本號:v1.0 *問題描述:設計一個管理學生資訊的
課程設計---學生資訊管理系統
/* *煙臺大學計算機與控制工程學院 /* *Copyright (c) 2015,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:lulu.cpp *作者:蘆亞茹 *完成日期:2015年12月31日 *版本號:v1.o *
資料結構課程設計—學生資訊管理系統
問題描述: /* * Copyright (c)2015,煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:aaaa.cbp * 作 者:張芸嘉 * 完成日期:2015年12月24日 * 版 本
資料結構課程設計-學生資訊管理系統
/* * 煙臺大學計算機與控制工程學院 *檔名稱:mian.cpp *作 者:王旭 *完成日期:2015年12月25日 *版 本 號:v1.0 *
課程設計————學生資訊管理系統(包含歷代思路和程式碼)
課程設計————學生管理系統(包含歷代思路和程式碼) 一.前言 學生資訊管理系統是我第一個獨立完成的比較長的程式碼,也算是花費了一些心血,這個系統是我一點點把它從幾百行的程式碼逐漸優化到上千行,功能從簡單到複雜。在這裡我把我的思路分享給大家,希望能給大家
C語言課程設計之學生資訊管理系統
#include"stdio.h" //標準的輸入輸出函式檔案頭部說明 #include"math.h" // 數學函式頭部說明 #include"string.h" #include"stdlib.h" //通過該函式頭部裡的
C++課程設計:學生資訊管理系統
課程設計內容 1.)學生資訊的錄入:錄入新的學生的資訊; 2.)學生資訊的新增:新增新的學生的資訊; 3.) 學生資訊的刪除:刪除不需要的學生的資訊。 4.)學生資訊的查詢:查詢你需要的學生的資訊。 5.)學生資訊的修改:修改錯誤的學生的資訊。 6.)學生資訊的顯示:顯示所
課程設計-學生資訊管理系統
#include <iostream> #include <stdio.h> #include <stdlib.h> #include<windows.h> #include<string.h> #include<string> #inc
課程設計——學生資訊管理系統(順序表 連結串列)
實驗目的 : 1 、掌握線性表的定義; 2 、掌握線性表的基本操作,如建立、查詢、插入和刪除等。 實驗內容: 定義一個包含學生資訊(學號,姓名,成績)的的 順序表和連結串列,使其具有如下功能: (1) 根據指定學生個數,逐個輸入學生資訊; (2) 逐個顯示學生表
資料結構課程設計【學生資訊管理系統(煙大版)】
/* * Copyright (c) 2016, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:student.project * 作者:李瀟 * 完成日期:2016年12月28日 * 版本號:DEVC+
Java——Web開發之MVC設計模式的學生資訊管理系統(二)
為什麼這個標題為“(二)”,其實是對於上一個特別簡單學生資訊管理系統裡功能的完善。 所謂的“(一)”在這:學生資訊管理系統(一) 系統實現的功能: 實現新增學生 顯示查詢到的學生 刪除學生 更新學生資訊 模糊查詢符合相關資訊的學生
基於WEB的學生資訊管理系統,java畢業設計專案
**基於WEB的學生資訊管理系統,java畢業設計專案** 基於WEB的學生資訊管理系統mysql資料庫建立語句 基於WEB的學生資訊管理系統oracle資料庫建立語句 基於WEB的學生資訊管理系統sqlserver資料庫建立語句 基於WEB的學生資訊管理系統spr
學生資訊管理系統之第二篇主要功能模組設計和資料庫設計
4.2系統主要功能模組設計: (1)基本資訊模組:是管理員對學生資訊進行新增操作。通過本介面管理員可以對學生資訊進行相應的修改,包括學號、姓名、出生日期等。可以通過該介面輸入學生姓名實現查詢該學生的所有資訊。管理員可以把學生的整條資訊進行刪除,同時也刪除學生的成績。
asp.net299學生成績管理系統-畢業設計
asp.net 學生 畢業設計 轉載於www.taobysj.com 作者 QQ 97095639 技術實現 開發語言:asp.net.框架:mvc.模式:B/S.數據庫:sqlserver.開發工具:vs,sqlserver.論文字數:1萬左右.
大一java圖書館管理系統課程設計
校招 seo mos rpv p2c pen tel abd deb 各位看看我編的代碼,為啥就不能動呢??? vs2017的使用 補《歡聚時代2017校招筆試題目(PHP工程師類)---錯題解析》 區間點覆蓋CaseofFugitive:CodeForces-556