• 方案介紹
  • 附件下載
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

C語言程序設(shè)計-教師信息管理系統(tǒng)

2024/08/22
1742
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

有需要資料的可了解一下.docx

共1個文件

教師信息管理系統(tǒng)

本題目設(shè)計目的是訓(xùn)練學(xué)生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、數(shù)組、文件等方面的知識。通過本程序的訓(xùn)練,使學(xué)生能對C語言的文件操作有一個更深刻的了解,掌握利用數(shù)組結(jié)構(gòu)實現(xiàn)對教師信息管理的原理,為進一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅實的基礎(chǔ)。

1、問題定義

創(chuàng)建一個教師信息管理系統(tǒng)。系統(tǒng)中包括教師的信息錄用,每個教師的總工資,教師的性別,出生年月,教師津貼等。程序的運行效果如下圖所示,選擇任任意菜單后,實現(xiàn)相應(yīng)功能。

圖1.1? 教師信息管理系統(tǒng)功能

2、系統(tǒng)設(shè)計

2.1 總體設(shè)計

采用模塊化的程序設(shè)計方法,即將較大的任務(wù)按照一定的原則分為一個個較小的任務(wù),然后分別設(shè)計各個小任務(wù)。需要注意的是劃分出來的模塊應(yīng)該相對獨立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)圖(即模塊圖)來分析其任務(wù)的劃分,一般從上到下進行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細化描述。

本教師信息管理系統(tǒng)要求采用單鏈表實現(xiàn),如圖2.1所示,它由如下五大功能模塊組成:

  1. 輸入記錄模塊。完成將數(shù)據(jù)存入單鏈表的工作。記錄可以從以二進制形式存儲的數(shù)據(jù)文件中讀入,也可從鍵盤逐個輸入教師信息記錄。教師記錄由教師的基本信息構(gòu)成。當(dāng)從數(shù)據(jù)文件中讀入記錄時,也就是把在以記錄為單位存儲的數(shù)據(jù)文件中,將記錄逐條復(fù)制到單鏈表中。
  2. 查詢記錄模塊。完成在單鏈表中查找滿足相關(guān)條件的教師記錄。在此教師信息管理系統(tǒng)中,用戶可以按照教師的工號或姓名在單鏈表中進行查找。若找到該教師的記錄,則返回指向該教師的記錄的指針。否則返回一個值為NULL的空指針,并打印出未找到該學(xué)生記錄的提示信息。
  3. 更新記錄模塊。完成對教師記錄的維護。在此教師信息管理系統(tǒng)中,它實現(xiàn)了對教師記錄的修改、刪除、插入和排序操作,并將修改后的數(shù)據(jù)存入源數(shù)據(jù)文件。
  4. 統(tǒng)計記錄模塊。完成對教師最高工資和最低工資人數(shù)的統(tǒng)計。
  5. 輸出記錄模塊。一是實現(xiàn)對教師信息記錄的存盤,即將記錄寫入數(shù)據(jù)文件中;二是實現(xiàn)將記錄信息以表格的形式在屏幕上打印出來。

2.2 詳細設(shè)計

2.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計

  1. 教師信息管理結(jié)構(gòu)體

struct data

{

int year;

int month;

int day;

};

struct teacher

{

char num[15];

char name[30];

struct data bir;

char sex;

float jbgz;

float jt;

};? 結(jié)構(gòu)體struct teacher將用于存儲教師的基本信息,它將作為單鏈表的數(shù)據(jù)域。

2.2.2 主控main()函數(shù)執(zhí)行流程

程序總體結(jié)構(gòu)圖

2.2.3函數(shù)功能描述

  1. input()

函數(shù)原型:void input()

void input()此函數(shù)功能是輸入教師信息。

struct data 函數(shù)原型:void struct data stringinput ()函數(shù)用于輸入字符串,并進行字符串

  1. Conio 函數(shù)原型:#include <conio.h>,是函數(shù)預(yù)處理。
  2. 主函數(shù)main()

整個成績管理系統(tǒng)控制部分,其詳細說明可參考圖二。

完成在上述系統(tǒng)設(shè)計后,即可著手進行系統(tǒng)實現(xiàn)的工作,開始程序代碼的編寫。

3、系統(tǒng)實現(xiàn)

3.1 編碼

3.1.1 部分實訓(xùn)原始代碼

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <conio.h>

/*函數(shù)聲明*/

void input(); // 此函數(shù)功能是輸入教師信息

int menu();//此函數(shù)是一個菜單

//學(xué)號:1352100129

struct data

{

int year;

int month;

int day;

};

struct teacher

{

char num[15];

char name[30];

struct data bir;

char sex;

float jbgz;

float jt;

};

int menu()

{

int n;

printf("1. 實現(xiàn)教師信息的錄入n");

printf("2. 求每個教師的總工資,并輸出n");

printf("3. 按總工資從高到低排序,輸出教師信息n");

printf("4. 查找指定姓名的教師信息,若不存在,給出提示信息n");

printf("5. 查找基本工資最高的教師信息n");

printf("6. 修改指定職工號的職工信息n");

printf("7. 程序結(jié)束n");

printf("************************************************n");

printf("請輸入你要執(zhí)行的操作:n");

scanf("%d",&n);

while( n<1 || n>7)

{

printf("請重新輸入n");

scanf("%d",&n);

}

return n;

}

//實現(xiàn)教師信息錄入

void input(struct teacher a[],int n)

{

int i;

printf("n");

for(i=0;i<n;i++)

{

printf("請輸入教師工作號:");

scanf("%s",a[i].num);

printf("請輸入教師姓名:");

scanf("%s",a[i].name);

printf("請輸入教師出生日期:");

scanf("%d%d%d",&a[i].bir.year,&a[i].bir.month,&a[i].bir.day);

printf("請輸入教師性別:");

getchar();

scanf("%c",&a[i].sex);

printf("請輸入教師基本工資:");

scanf("%f",&a[i].jbgz);

printf("請輸入教師津貼:");

scanf("%f",&a[i].jt);

}

}

//實現(xiàn)教師信息輸出

void output(struct teacher a[],int n)

{

int i;

printf("工作號,姓名,出生日期,性別,基本工資,津貼,總工資:n");

for(i=0;i<n;i++)

printf("%s %s %d %d %d %c %f %f %fn",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir

.day,a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);

}

//按工資從高到低排序,輸出教師信息

void sortbyzgz (struct teacher a[],int n)

{

int i,j,k;

struct teacher temp;

for(i=0;i<n-1;i++)

{

k=i;

for(j=i+1;j<n;j++)

if((a[j].jbgz+a[j].jt)>(a[i].jbgz+a[i].jt))

k=j;

if(k!=i)

{

temp=a[i];

a[i]=a[k];

a[k]=temp;

}

}

output(a,n);

}

//查找指定姓名的教師信息,若不存在,給出提示信息

void searchbyname(struct teacher a[],int n)

{

char name[20];

int flag=0;

int i;

printf("請輸入要查找的教師姓名:n");

getchar();

gets(name);

for(i=0;i<n;i++)

{

if(strcmp(name,a[i].name)==0)

{

printf("工作號,姓名,出生日期,性別,基本工資,津貼,總工資:n");

printf("%s%s%d%d%d%c%f %f %fn",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir.day,

a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);

flag=1;

}

}

if(flag==0)

printf("查無此人!n");

}

//查找基本工資最高的教師信息

void searchbyjbgz(struct teacher a[],int n)

{

struct teacher temp;

int i;

temp=a[0];

for(i=1;i<n;i++)

{

if(a[i].jbgz>temp.jbgz)

temp=a[i];

}

printf("工作號,姓名,出生日期,性別,基本工資,津貼,總工資:n");

printf("%s%s%d%d%d%c%f%f%fn",temp.num,temp.name,temp.bir.year,temp.bir.month,temp.bir.day,temp.sex,temp.jbgz,temp.jt,temp.jbgz+temp.jt);

}

void main()

{

int num;

struct teacher tea[3];

while(num=menu())

{

switch(num)

{

case 1: input(tea,3); break;

case 2: output(tea,3);break;

case 3: sortbyzgz(tea,3);break;

case 4: searchbyname(tea,3);break;

case 5: searchbyjbgz(tea,3);break;

case 6: repeat(tea,3);break;

case 7: exit(0);

}

getch();? //按任意鍵繼續(xù)

system("cls");? //清屏

}

3.2 測試與調(diào)試

3.2.1 程序測試

  1. 在主菜單中選擇1

圖3.1? 輸入教師的信息

2.在主菜單中選擇2

圖3.2? 查找教師的基本信息

3.在主菜單中選擇3

當(dāng)用戶輸入3并按回車鍵后,即可進入記錄查找界面。其查找記錄過程如圖3.3所示,可按工號或姓名進行查找。

圖3.3? 查找指定的教師信息

4.在主菜單中選擇4

當(dāng)用戶輸入4并按回車鍵后,即可進入記錄修改界面。其修改記錄過程如圖3.4所示,查找指定姓名的教師信息,入部存在則退出。

圖3.4? 查找指定姓名的教師信息

5.在主菜單中選擇5

當(dāng)用戶輸入5并按回車鍵后,即可進入記錄插入界面。其插入記錄過程如圖3.5所示,這里是查找教師最高的教師基本信息記錄。

圖3.5? 查找工資最高的教師記錄

6.在主菜單中選擇6

當(dāng)用戶輸入6并按回車鍵后,即可進入記錄統(tǒng)計界面。其統(tǒng)計結(jié)果如圖3.6所示,查找不到教職工本人信息。

圖3.6? 修改教師的的信息

7.在主菜單中選擇7

當(dāng)用戶輸入7并按回車鍵后,即可執(zhí)行退出管理程序的操作,返回操作系統(tǒng)。其操作結(jié)果提示信息如圖3.7所示。

圖3.7? 按任意鍵退出

4、系統(tǒng)維護

通過程序調(diào)試成功后,結(jié)果很快就完成了,這時可以交付軟件供用戶使用,但是在軟件的使用過程中還會面臨更加漫長的工作,即軟件維護。一般維護的工作有:更改使用中發(fā)現(xiàn)的錯誤;為適應(yīng)實際環(huán)境而對程序進行修改;為滿足新的需求而對程序作必要的改進等等。所以我認為程序的編寫與調(diào)試及其重要,必須要牢固掌握。

5、歸納總結(jié)

5.1 開發(fā)經(jīng)驗

用C語言編寫具有以下功能的程序:

1 錄入教師信息,并將信息保存在teachers.txt文件中。

2 教師信息的瀏覽功能(輸出)。

3 教師信息的查詢功能,應(yīng)分別能夠按照工資和學(xué)歷查詢。

4 教師信息包括教師號、姓名、性別、年齡、學(xué)歷、工資、電話等(教師號不重復(fù))。

5.2 實訓(xùn)中遇到的問題及解決方法

在這次的實訓(xùn)中,主要遇到的問題是編譯環(huán)境的不同對程序也不同。本來我們的程序是不支持在VC++里面編譯的,因此一直都處在編譯失敗,該函數(shù)未定義的錯誤中。后來經(jīng)過自己反復(fù)的程序調(diào)試,終于找到了根源,就是把“clrscr()”改為“system("cls")”就可以了。

  • 有需要資料的可了解一下.docx
    下載

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
BT121-A-V2-IAP 1 Silicon Laboratories Inc Telecom Circuit, 1-Func, MODULE-33

ECAD模型

下載ECAD模型
$26.57 查看
NX5032GA-8.000M-STD-CSU-1 1 Nihon Dempa Kogyo Co Ltd Parallel - Fundamental Quartz Crystal, 8MHz Nom, ROHS COMPLIANT PACKAGE-2
暫無數(shù)據(jù) 查看
ASDMB-24.000MHZ-XY-T 1 Abracon Corporation MEMS OSC XO 24.0000MHZ LVCMOS
$3.25 查看

相關(guān)推薦