加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

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

08/22 13:16
1190
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

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

1、問題定義

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

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

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

2.1 總體設(shè)計(jì)

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

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

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

2.2 詳細(xì)設(shè)計(jì)

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

  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將用于存儲(chǔ)教師的基本信息,它將作為單鏈表的數(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ù)用于輸入字符串,并進(jìn)行字符串

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

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

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

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

3.1 編碼

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

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <conio.h>

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

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

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

//學(xué)號(hào):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. 實(shí)現(xiàn)教師信息的錄入n");

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

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

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

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

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

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

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

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

scanf("%d",&n);

while( n<1 || n>7)

{

printf("請(qǐng)重新輸入n");

scanf("%d",&n);

}

return n;

}

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

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

{

int i;

printf("n");

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

{

printf("請(qǐng)輸入教師工作號(hào):");

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

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

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

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

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

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

getchar();

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

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

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

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

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

}

}

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

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

{

int i;

printf("工作號(hào),姓名,出生日期,性別,基本工資,津貼,總工資: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("請(qǐng)輸入要查找的教師姓名:n");

getchar();

gets(name);

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

{

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

{

printf("工作號(hào),姓名,出生日期,性別,基本工資,津貼,總工資: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("工作號(hào),姓名,出生日期,性別,基本工資,津貼,總工資: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 測(cè)試與調(diào)試

3.2.1 程序測(cè)試

  1. 在主菜單中選擇1

圖3.1? 輸入教師的信息

2.在主菜單中選擇2

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

3.在主菜單中選擇3

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

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

4.在主菜單中選擇4

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

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

5.在主菜單中選擇5

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

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

6.在主菜單中選擇6

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

圖3.6? 修改教師的的信息

7.在主菜單中選擇7

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

圖3.7? 按任意鍵退出

4、系統(tǒng)維護(hù)

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

5、歸納總結(jié)

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

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

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

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

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

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

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

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

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
NX2012SA-32.768K-STD-MUB-1 1 Nihon Dempa Kogyo Co Ltd Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, ROHS COMPLIANT PACKAGE-2
$7.18 查看
AT24C256C-SSHL-B 1 Microchip Technology Inc IC EEPROM 256KBIT 1MHZ 8SOIC
$0.74 查看
LAN9303I-ABZJ 1 SMSC Ethernet Transceiver, 8 X 8 MM, ROHS COMPLIANT, QFN-56
$8.26 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜