과정 작업(데이터 구조 실현-작업 1:학생 학적 관리 절차)

11202 단어 데이터 구조
작업 1:학생 학적 관리 절차
학생 학적 관 리 는 일반적으로 데이터 베 이 스 를 바탕 으로 하 는 관리 정보 시스템(MIS)시스템 을 사용 하지만 우 리 는 데이터 베이스 기술 을 사용 하지 않 고 데이터 구조 struct 와 링크 조작 으로 관리 임 무 를 완성 하도록 요구한다.
작업 설명
데이터 구 조 를 사용 하여 학생 을 표시 하고 학생 의 관련 정 보 를 기록한다.학생 정 보 는 학 번 sno,이름 sname,나이 sage,전공 sprof,학급 sclass 를 포함한다.합 리 적 인 데이터 구 조 를 설계 하여 이 정 보 를 수용 하 십시오.
학생 들 의 추가,수정,삭제,조회 등 기본 적 인 상용 작업 을 완성 합 니 다.
링크 를 사용 하여 학생 이 있 는 반 의 대열 을 표시 하 다.
배경 지식
1.데이터 구조.
2.체인 시계.
코드 구현 은 다음 과 같 습 니 다.
간단 한 코드 를 발견 해도 쓰기 가 쉽 지 않다.
생각 을 많이 할 수록 생각 나 는 부분 이 많 습 니 다.가짜 인터페이스 니까 그렇게 하 세 요.
코드 프레임 워 크 는 다음 과 같 습 니 다:
#include <cstdio>

#include <cstring>

#include <cstdlib>

using namespace std;



class Student {

private :

	char sno[15];

	int sage;

	char sclass[15];

	char sname[15];

	char sprof[15];

	Student *next; 

	typedef Student* Stu;

	

public :

	Student() {

		//    ,      

	}

	

	void Insert(Student &stu) {

		//     

	}

	

	bool Search(char cur_sno[], Stu &res_pre) {

		//     

	}

	

	bool Delete(char Delete_sno[]) {

		//     

	}

	

	void Modify(Student &stu) {//    

		//           stu(            Modify_info )

	}

	

	//         ,          

/*---------------------------------------------------------------*/	

	void Input_Stu_Info(Student &stu) {

		//      (   sno )    

	}

	

	void Back_Or_Not(int n) {

		//           

	}

	

	void Check_back_root(char str[]) {

		//               。 

	}

	

	int Input() {//    ,     ,         

	}

		

	void Frame() {//   

	}

	

	//     ... 

/*---------------------------------------------------------------*/	

	void Add_info() {

		//          

		//      ,    Insert()   

	}

	

	void Modify_info() {

		//          

		//      ,    Modify()   

	}

	

	void Delete_info() {

		//          

		//      ,    Delete()   

	}

	

	void Search_info() {

		//          

		//      ,  Search()     

	}

	 

	void Print_All() {

		//             

	}

	//          5          

/*---------------------------------------------------------------*/	

};



int main() {

	Student StuList;

	StuList.Frame(); 

	return 0;

}




 
코드 구현 은 다음 과 같 습 니 다.
#include <cstdio>

#include <cstring>

#include <cstdlib>

using namespace std;



class Student {

private :

	char sno[15];

	int sage;

	char sclass[15];

	char sname[15];

	char sprof[15];

	Student *next; 

	typedef Student* Stu;

	

public :

	Student() {

		memset(sno, 0, sizeof(sno));

		memset(sname, 0, sizeof(sclass));

		memset(sname, 0, sizeof(sname));

		memset(sprof, 0, sizeof(sprof));

		next = NULL;

	}

	

	void Insert(Student &stu) {

		Stu p = this;

		while (p->next && strcmp(p->next->sno, stu.sno) < 0) {

			p = p->next;

		}

		Stu tmp = p->next;

		p->next = &stu;

		p = p->next;

		p->next = tmp;

	}

	

	bool Search(char cur_sno[], Stu &res_pre) {

		Stu p = this;

		while (p->next) {

			if (strcmp(p->next->sno, cur_sno) == 0) {

				res_pre = p;//res          

				//printf("%s--
", res_pre->next->sno); return true; } p = p->next; } return false; } bool Delete(char Delete_sno[]) { Stu res_pre = this; if (Search(Delete_sno, res_pre)) { Stu res = res_pre->next; res_pre->next = res->next; delete(res); puts("\t "); return true; } else { puts("\t , !"); return false; } } void Modify(Student &stu) { printf("\t %s :", stu.sno); puts("\t \t \t \t "); printf("\t%s\t%d\t%s\t%s
", stu.sname, stu.sage, stu.sprof, stu.sclass); printf("\t ( ):
"); Input_Stu_Info(stu); } /*----------------------------------------------------------------------------*/ void Input_Stu_Info(Student &stu) { printf("\t"); scanf("%s", stu.sname); Check_back_root(stu.sname); printf("\t"); int check_age = Input(); if (check_age >= 0 && check_age <= 100) { stu.sage = check_age; } printf("\t"); scanf("%s", stu.sprof); Check_back_root(stu.sprof); printf("\t"); scanf("%s", stu.sclass); Check_back_root(stu.sclass); printf("
"); } void Back_Or_Not(int n) { puts(" ═════ 0, 1 ═════
"); int check_in = Input(); while (!(check_in >= 0 && check_in <= 1)) { printf(" , : "); check_in = Input(); }// if (check_in == 0) { switch(n) { case 1: Add_info(); break; case 2: Modify_info(); break; case 3: Delete_info(); break; case 4: Search_info(); break; default : break; } } else { Frame(); } } void Check_back_root(char str[]) { if (strcmp(str, "250") == 0) { Frame(); } } int Input() {// , int i, k = 0; char stmp[110], str[110]; scanf("%s", str); Check_back_root(str); for (i = 0; str[i]; i++) { if (!(str[i] >= '0' && str[i] <= '9')) { return -1; } else { stmp[k++] = str[i]; } } int r = 1, sum = 0; for (i = k - 1; i >= 0; i--, r *= 10) { sum += (str[i] - '0') * r; } return sum; } void Frame() { system("cls"); puts("╓************************** **************************╖"); puts("║ ║"); puts("║ Author info -- class: abcdefgh name: XXX stu.no: 33333333 ║"); puts("╠════════════════╦═════════════════╣"); puts("║ ║ ║"); puts("║ 1: ║ 2: ║"); puts("║ ║ ║"); puts("╠════════════════╬═════════════════╣"); puts("║ ║ ║"); puts("║ 3: ║ 4: ║"); puts("║ ║ ║"); puts("╠════════════════╬═════════════════╣"); puts("║ ║ Notice: ║"); puts("║ 5: ║ ( 250) ║"); puts("║ ║ 250 ║"); puts("╚════════════════╩═════════════════╝"); // , , 。。 printf(" :"); int check_in = Input(); while (!(check_in >= 1 && check_in <= 6)) { printf(" , : "); check_in = Input(); }// switch(check_in) {// case 1: Add_info(); case 2: Modify_info(); break; case 3: Delete_info(); break; case 4: Search_info(); break; case 5: Print_All(); break; default :break; } } /*----------------------------------------------------------------------------*/ void Add_info() { system("cls"); puts("╓******************** ************************╖
"); puts(" Notice: 250
"); puts("\t ( )
"); puts("\t \t \t \t \t
"); Student stu, *res_pre = this; char stmp[110], str[110]; bool flag, OK = false; int i, k = 0; while (!OK) { printf("\t"); scanf("%s", str); Check_back_root(str); flag = false; while (!flag) { flag = true; k = 0; for (i = 0; str[i]; i++) { if (!(str[i] >= '0' && str[i] <= '9')) { flag = false; break; } else { stmp[k++] = str[i]; } } } stmp[k] = 0; if (Search(str, res_pre)) { puts("\t , , 。"); } else { OK = true; } } strcpy(stu.sno, stmp); Input_Stu_Info(stu); Insert(stu); puts(" congratulation! !
"); Back_Or_Not(1); } void Modify_info() { char str[110]; Stu res_pre = this; system("cls"); puts("╓******************** ************************╖
"); puts(" Notice: 250
"); printf("\t :
\t"); scanf("%s", str); Check_back_root(str); while (!Search(str, res_pre)) { puts("\t , "); printf("\t"); scanf("%s", str); Check_back_root(str); } Modify(*(res_pre->next)); puts(" congratulation! !
"); Back_Or_Not(2); } void Delete_info() { system("cls"); char str[110]; puts("╓********************** **********************╖
"); puts(" Notice: 250
"); printf("\t :
\t"); scanf("%s", str); Check_back_root(str); while (!Delete(str)) { //puts("\t , :");Delete printf("\t"); scanf("%s", str); Check_back_root(str); } Back_Or_Not(3); } void Search_info() { system("cls"); char str[110]; Stu res_pre = this; puts("╓********************** **********************╖
"); puts(" Notice: 250
"); printf("\t :
\t"); scanf("%s", str); Check_back_root(str); while (!Search(str, res_pre)) { puts("\t , :"); printf("\t"); scanf("%s", str); Check_back_root(str); } Student stu = *(res_pre->next); printf(" :"); puts("\t \t \t \t \t
"); printf("\t%s\t%s\t%d\t%s\t%s
", stu.sno, stu.sname, stu.sage, stu.sprof, stu.sclass); Back_Or_Not(4); } void Print_All() { system("cls"); Stu p = this; Student stu; puts("╓********************* **********************╖
"); puts(" Notice: 250
"); if (!p->next) { puts("\t !"); } puts("\t \t \t \t \t
"); for ( ; p->next; p = p->next) { stu = *p->next; printf("\t%s\t%s\t%d\t%s\t%s
", stu.sno, stu.sname, stu.sage, stu.sprof, stu.sclass); } system("pause"); Frame(); system("cls"); } }; int main() { Student StuList; StuList.Frame(); return 0; }

오리지널 글 은 전재 할 때 다음 과 같이 명시 해 주 십시오. { 잊어버리다 }
본문 주소:  http://www.cnblogs.com/slave_wc

좋은 웹페이지 즐겨찾기