18禁超污无遮挡无码网址极速_永久不封的Av毛片_91传媒蜜桃香蕉在线观看_亚洲视频小说图片_38d蜜桃臀无码中文字幕_亚洲老熟女老妇老女人_男男动漫毛片一区二区三区_日本挤奶人奶喷奶水视频_亚洲 精品 国产 韩国_а√天堂中文在线资源bt在线

軟件開發(fā)流程圖示例關于班級管理(軟件開發(fā)如何管理)

軟件開發(fā) 3691
本篇文章給大家談談軟件開發(fā)流程圖示例關于班級管理,以及軟件開發(fā)如何管理對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、用C編寫班級成績管理系統(tǒng)

本篇文章給大家談談軟件開發(fā)流程圖示例關于班級管理,以及軟件開發(fā)如何管理對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

用C編寫班級成績管理系統(tǒng)

C語言課程設計報告—班級成績管理系統(tǒng)

需要分析:

學生成績管理系統(tǒng)有13種功能。把這13個功能做成13個子函數。在主函當數中設計一個菜單對這13個子數進行管理。來實現(xiàn)對整個系統(tǒng)的操作。

根據課題的要求。每一個學生的包括姓名(char)、學號(char)、M門課程的成績(float).再加上系統(tǒng)功能上的要求每一學生的信息還要總分和名次等。所以自然的想到要用結構體來定義每一個學生的信息結構。然后用鏈表把它們組成一個有序的整體。用對鏈表的操作來實現(xiàn)對所有學生信息的統(tǒng)一管理(成績顯示、成績排序、成績修改等)。最后為了以后按照處理后的順序保存到文件中。

. 各函數的功能:

概要設計:

程序的模塊組成:

主 函 數: int main()

新建函數:STUDENT *init()

輸入函數 :STUDENT *create()

顯示函數: void print(STUDENT *head)

刪除函數: STUDENT *delete(STUDENT *head)

按名字尋找函數: void lookup(STUDENT *head)

保存函數: void save(STUDENT *head)

按總分排序函數: STUDENT *sort(STUDENT *head)

計算總分和均分函數: void computer(STUDENT *h)

修改函數: STUDENT *Modify(STUDENT *head,STUDENT *new)

按學號排序函數: STUDENT *index(STUDENT *h)

菜單函數:int menu_select()

各個函數的主要功能:

輸入函數: 隨時輸入數據。

菜單函數:顯示系統(tǒng)主菜單。

顯示函數: 顯示所有學生的信息。

尋找函數: 方便學生查找自己的成績。

刪除函數: 刪除某學生的信息。

排序函數: 按總成績排序。

按學號排序函數: 按學號排序。

插入函數: 可以插入新的信息。

保存函數: 保存好學生成績,以免丟失。

統(tǒng)計函數:

l 顯示每門課程成績最高的學生的基本信息。

l 顯示每門課程的平均成績。

l 顯示超過某門課程平均成績的學生人數。

課題的功能模塊的劃分:

開始

菜單界面

功能選擇

初始化函數

輸入學生信息

刪除學生信息

顯示學生信息

查找學生信息

按成績排序

保存到文件

從文件讀數據

插入學生成績

分類合計

退出系統(tǒng)

結束

詳細設計: 整個系統(tǒng)除了主函數外,另外還有14個函數,實現(xiàn)八大功能:輸入功能、顯示功能、查找功能、排序功能、插入功能、保存功能、讀取功能。各個函數的詳細設計說明分別如下:

主函數 main()

利用無限次循環(huán)for(;;)和swithch()實現(xiàn)各函數的調用,系統(tǒng)根據輸入的數字選項來調用相應的函數。

菜單選擇函數 int menu_select()

這是一個無參函數,主要實現(xiàn)“功能選擇”的界面,在這個界面里有顯示系統(tǒng)的九大功能,根據每個功能前面的序號進行選擇。等執(zhí)行完每一個函數功能后,返回菜單。

代碼設計: 初始化函數 STUDENT *init()

這是一個無參函數,里面只有兩個語句,它的作用是使鏈表初始化,使head的值為NULL和一個清屏語句。比如:沒有這個函數的話,在你沒有輸入任何數據的情況下,去執(zhí)行顯示功能的時候會顯示一些亂碼!

輸入記錄函數 STUDENT *create() 這是一個無參函數,用來執(zhí)行學生成績記錄的輸入,當學生為@時停止輸入,函數結束后,帶回一個鏈表頭的指針指向一下個學生的信息插在表頭。

N-S流程圖如下:

head=NULL無條件循環(huán)

指針p指向新開辟的單元

指針p是否為空

是 否

輸入學號p-num

輸出 p-num是否為@

內存 是 否

溢出 輸入姓名p-name

停止 for(i=0;i3;i++)

輸入 輸入成績

返回 p-sum=s;

菜單 p-average=(float)s/3;

顯示記錄函數 void print(STUDENT *head)

這是一個不返回值的有參函數,形參為“鏈表頭的指針”,負責對全部學生成績記錄的輸出,不足之處就是不能對學生成績進行分頁顯示。

算法:先將p結點的指針指向第一個結點,將p結點(即第一個結點)的數據輸出。然后再將p結點的指針指向p指針的的指針(即下一結點),將p結點(即第一結點)的數據輸出。重復執(zhí)行此步聚直到p指針指向NULL為止。

N-S流程圖如下:

p=head,使指向第一個結點

輸出p所指向的結點

p指向一下個結點

當p指的不是表尾

程序調試:

由于本課題中的許多知識點都沒有學過都要靠自己到課外的資料中去查找。在用的時候難免出現(xiàn)這樣那樣的錯誤。如開始設計出來的菜單不是預想的那樣,而是總個窗中出現(xiàn)混亂。解決的這個問題的辦法是調整。最后還是老師幫我?guī)臀覀冋业搅藛栴}的所在——for 循環(huán)的次超過了鏈表中結點的數量。再就是自定義函數時由于課本的概念不清楚,多寫了空格鍵,以至函數調用不出來。又如:在設計修改學生信息時的密密碼時。當用戶發(fā)現(xiàn)輸入密碼錯誤按了退格鍵后,因為“*”并沒有消去。導致用戶再次按退格鍵,又出現(xiàn)前面的情況。最終導致輸入密碼錯誤。所以用了兩次退格鍵:

在對鏈表操作時,要特別鏈表指針的移動(p=p-next)和鏈表尾的判斷 (p= =NULL)。沒有指針的移動,就很容易出現(xiàn)死循環(huán)。而在運行過程中不能控制。所以你就會認為是死機。如果沒有鏈表尾的判斷。就會在運行過程出現(xiàn)想不到的錯誤。如:在顯示鏈表信息時,后面就會出現(xiàn)亂碼。

一個系統(tǒng)的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設計的這個系統(tǒng)。在設計的調試過程中也無法順利的完成調試工作。有了一個清晰簡單的菜單和一些提示信息這后,調試過程完成的非常順利。

予我耐心解答的老師和同學,是他們?yōu)槲倚〕绦虻某晒ζ鸬搅岁P鍵性的作用,那么多個日夜,如此多的困難,同學們勤懇塌實,從開始到結束,沒有顯出一點倦意,始終熱情高漲,我感謝這種氛圍,感謝學校提供的良好條件。

回顧起此次課程設計,至今我仍感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體……通過這次課程設計之后,一定把以前所學過的知識重新溫故。

本次課程設計結束了,對于我的影響很大。我通過這次實踐學到了許多知識。學到了設計一個簡單的系統(tǒng)。要注意哪些方面。也使我知道自己哪些方面做得還不夠。

但我出總結出了一點點的經驗如下:

1、要對系統(tǒng)的功能和要求做出詳細的分析,并合理分解任務。

2、把分解出來的子任務,做給一個相對獨立的模塊。

3、在設計一個模塊之前,要簡單構想一下總界面的顯視情況。

4、針對構想出來的界面進行程序的編寫。

最后,感謝老師您對我的指導和從百忙中抽空看我的設計,謝謝!

附件:

源程序:

#include "stdio.h" /*I/O函數*/

#include "stdlib.h" /*其它說明*/

#include "string.h" /*字符串函數*/

#include "conio.h" /*屏幕操作函數*/

#include "mem.h" /*內存操作函數*/

#include "ctype.h" /*字符操作函數*/

#include "alloc.h" /*動態(tài)地址分配函數*/

#include "dos.h"

#define N 4 /*定義常數*/

typedef struct z1 /*定義數據結構*/

{

char no[12];

char name[20];

int score[N];

float sum;

float average;

int order;

struct z1 *next;

}STUDENT;

/*以下是函數原型*/

STUDENT *init(); /*初始化函數*/

STUDENT *create(); /*創(chuàng)建鏈表*/

STUDENT *delete(STUDENT *h); /*刪除記錄*/

void print(STUDENT *h); /* 顯示所有記錄*/

void lookup(STUDENT *h); /*查找*/

void save(STUDENT *h); /*保存*/

STUDENT *load(); /*讀入記錄*/

void computer(STUDENT *h); /*計算總分和均分*/

STUDENT *Modify(STUDENT *h); /*修改記錄*/

void append(); /*追加記錄*/

STUDENT *sort(STUDENT *h); /*按總分排序*/

STUDENT *index(STUDENT *h); /*按學號排序*/

int menu_select(); /*菜單函數*/

/******主函數開始*******/

main()

{

int i;

STUDENT *head; /*鏈表定義頭指針*/

printf("\n\n\n\n\n\n\n\n\n");

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

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

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

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

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

printf("\n");

printf("\n");

printf("\n");

sleep(2);

head=init(); /*初始化鏈表*/

clrscr(); /*清屏*/

for(;;) /*無限循環(huán)*/

{

switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/

{ /*值不同,執(zhí)行的函數不同,break 不能省略*/

case 0:head=init();break; /*執(zhí)行初始化*/

case 1:head=create();break; /*創(chuàng)建鏈表*/

case 2:print(head);break; /*顯示全部記錄*/

case 3:head=delete(head);break; /*刪除記錄*/

case 4:lookup(head);break; /*按名字查找記錄*/

case 5:save(head);break; /*保存文件*/

case 6:head=load(); break; /*讀文件*/

case 7:computer(head);break; /*計算總分和均分*/

case 8:head=Modify(head); break; /*修改記錄,一般會插在表尾*/

case 9:head=sort(head);break; /*按部分排序*/

case 10:append();break; /*追加記錄*/

case 11:head=index(head);break; /*按學號排序*/

case 12: exit(0); /*如菜單返回值為14程序結束*/

}

}

}

/*菜單函數,返回值為整數*/

menu_select()

{

char *menu[]={"***************MENU***************", /*定義菜單字符串數組*/

" 00. init list", /*初始化*/

" 01. Enter list", /*輸入記錄*/

" 02. print list ", /*顯示單鏈表中所有記錄*/

" 03. Delete a record from list", /*從表中刪除記錄*/

" 04. Search record on name", /*按照姓名查找記錄*/

" 05. Save the file", /*將單鏈表中記錄保存到文件中*/

" 06. Load the file", /*從文件中讀入記錄*/

" 07. compute the score", /*計算所有學生的總分和均分*/

" 08. Modify an information ", /*修改某學號的信息*/

" 09. sort to make new file", /*排序*/

" 10. append record to file", /*追加記錄到文件中*/

" 11. index on nomber", /*按學號排序*/

" 12. Quit"}; /*退出*/

char s[3]; /*以字符形式保存選擇號*/

int c,i; /*定義整形變量*/

gotoxy(1,1); /*移動光標*/

textcolor(YELLOW); /*設置文本顯示顏色為黃色*/

textbackground(BLUE); /*設置背景顏色為藍色*/

gotoxy(10,2); /*移動光標*/

putch(0xc9); /*輸出左上角邊框┏*/

for(i=1;i44;i++)

putch(0xcd); /*輸出上邊框水平線*/

putch(0xbb); /*輸出右上角邊框 ┓*/

for(i=3;i20;i++)

{

gotoxy(10,i);putch(0xba); /*輸出左垂直線*/

gotoxy(54,i);putch(0xba);

} /*輸出右垂直線*/

gotoxy(10,20);putch(0xc8); /*輸出左上角邊框┗*/

for(i=1;i44;i++)

putch(0xcd); /*輸出下邊框水平線*/

putch(0xbc); /*輸出右下角邊框┛*/

window(11,3,53,19); /* 制作顯示菜單的窗口,大小根據菜單條數設計*/

clrscr(); /*清屏*/

for(i=0;i16;i++) /*輸出主菜單數組*/

{

gotoxy(10,i+1);

cprintf("%s",menu[i]);

}

textbackground(BLACK); /*設置背景顏色為黑色*/

window(1,1,80,25); /*恢復原窗口大小*/

gotoxy(10,21); /*移動光標*/

do{printf("\n make by wenwei");

printf("\n Enter you choice(0~13):"); /*在菜單窗口外顯示提示信息*/

scanf("%s",s); /*輸入選擇項*/

c=atoi(s); /*將輸入的字符串轉化為整形數*/

}while(c0||c14); /*選擇項不在0~14之間重輸*/

return c; /*返回選擇項,主程序根據該數調用相應的函數*/

}

STUDENT *init()

{ clrscr();

return NULL;

}

/*創(chuàng)建鏈表*/

STUDENT *create()

{

int i; int s;

STUDENT *h=NULL,*info; /* STUDENT指向結構體的指針*/

clrscr();

for(;;)

{

info=(STUDENT *)malloc(sizeof(STUDENT)); /*申請空間*/

if(!info) /*如果指針info為空*/

{

printf("\nout of memory"); /*輸出內存溢出*/

return NULL; /*返回空指針*/

}

inputs("enter no:",info-no,11); /*輸入學號并校驗*/

if(info-no[0]=='@') { clrscr();break; } /*如果學號首字符為@則結束輸入,清屏后返回*/

inputs("enter name:",info-name,15); /*輸入姓名,并進行校驗*/

printf("please input %d score \n",N); /*提示開始輸入成績*/

s=0; /*計算每個學生的總分,初值為0*/

for(i=0;iN;i++) /*N門課程循環(huán)N次*/

{

do{

printf("score%d:",i+1); /*提示輸入第幾門課程*/

scanf("%d",info-score[i]); /*輸入成績*/

if(info-score[i]100||info-score[i]0) /*確保成績在0~100之間*/

printf("bad data,repeat input\n"); /*出錯提示信息*/

}while(info-score[i]100||info-score[i]0);

s=s+info-score[i]; /*累加各門課程成績*/

}

info-sum=s; /*將總分保存*/

info-average=(float)s/N; /*求出平均值*/

info-order=0; /*未排序前此值為0*/

info-next=h; /*將頭結點做為新輸入結點的后繼結點*/

h=info; /*新輸入結點為新的頭結點*/

clrscr();

}

return(h); /*返回頭指針*/

}

/*輸入字符串,并進行長度驗證*/

inputs(char *prompt, char *s, int count)

{

char p[255];

do{

printf(prompt); /*顯示提示信息*/

scanf("%s",p); /*輸入字符串*/

if(strlen(p)count)printf("\n too long! \n"); /*進行長度校驗,超過count值重輸入*/

}while(strlen(p)count);

strcpy(s,p); /*將輸入的字符串拷貝到字符串s中*/

}

/*輸出鏈表中結點信息*/

void print(STUDENT *h)

{

int i=0; /* 統(tǒng)計記錄條數*/

STUDENT *p; /*移動指針*/

clrscr(); /*清屏*/

p=h; /*初值為頭指針*/

printf("\n\n\n*********************************STUDENT************************************\n");

printf("|rec|nO | name | sc1| sc2| sc3| sc4| sum | ave |order|\n");

printf("|---|----------|---------------|----|----|----|----|--------|--------|-----|\n");

while(p!=NULL) /*只要p不是尾結點,就輸出記錄*/

{

i++;

printf("|%3d|%-10s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6.2f | %3d |\n", i, p-no,p-name,p-score[0],p-score[1],p-score[2],p-score[3],p-sum,p-average,p-order);

p=p-next;

}

printf("***********************************end**************************************\n");

getch(); /*輸入任一鍵返回主菜單*/

clrscr(); /*清屏*/

}

/*刪除記錄*/

STUDENT *delete(STUDENT *h)

{

STUDENT *p,*q; /*p為查找到要刪除的結點指針,q為其前驅指針*/

char s[12]; /*存放學號*/

char *pass="wenwei28";

char a[20],b=NULL;

int i=0;

clrscr();

printf("Input your password:");

while((i20)(b!='\r'))

{ b=getch(); /*無回顯輸入*/

if(b==8)

{ if(i0)

{a[--i]=NULL;

putchar(8); /*退格鍵*/

putchar(' '); /*以空格代替*/

putchar(8);

}

else putchar(7); /*沒有任何字符的退格,響鈴警告*/

}

else if(b!='\r')

{ a[i++]=b; /*只要不是退格和回車就接受*/

putchar('*');

}

else

{a[i]=NULL; break; /*密碼輸入完了,記得加個NULL到后面*/

}

}

if(strcmp(a,pass)!=0)

{clrscr();

printf("Password is mistake Tow seconds to return!");

sleep(2);clrscr();return h;

}

else {printf("Password is OK! Welcome to come!"); sleep(3);

}

clrscr(); /*清屏*/

printf("please deleted no\n"); /*顯示提示信息*/

scanf("%s",s); /*輸入要刪除記錄的學號*/

q=p=h; /*給q和p賦初值頭指針*/

while(strcmp(p-no,s)p!=NULL) /*當記錄的學號不是要找的,或指針不為空時*/

{

q=p; /*將p指針值賦給q作為p的前驅指針*/

p=p-next; /*將p指針指向下一條記錄*/

}

if(p==NULL) /*如果p為空,說明鏈表中沒有該結點*/

{ printf("\nlist no %s student\n",s);sleep(2);clrscr();return h;}

else /*p不為空,顯示找到的記錄信息*/

{

printf("*********************************have found********************************\n");

printf("|no | name | sc1| sc2| sc3| sc4| sum | ave |order|\n");

printf("|------------|---------------|----|----|----|----|--------|--------|-----|\n");

printf("|%-12s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6-5.2f | %3d |\n", p-no,

p-name,p-score[0],p-score[1],p-score[ q=p; /*保存當前結點的指針,作為下一結點的前驅*/

p=p-next; /*指針后移,新讀入數據鏈到當前表尾*/

}

q-next=NULL; /*最后一個結點的后繼指針為空*/

fclose(fp); /*關閉文件*/

printf("---You have success read data from file!!!---\n");

getch(); /*按任意鍵返回主菜單*/

clrscr();

return h; /*返回頭指針*/

}

/*成績統(tǒng)計*/

void computer(STUDENT *h)

{

STUDENT *p,*t,*q; /*定義移動指針*/

float saverage[N]={0}; /*均分初值為0*/

int i;

clrscr();

for (i=0;iN;i++)

{ int n=0,j=0; /*保存記錄條數初值為0*/

long s=0; /*總分初值為0*/

p=h; /*從頭指針開始*/

while(p!=NULL) /*當p不為空時處理*/

{

s+=p-score[i]; /*累加總分*/

j++; /*統(tǒng)計記錄條數*/

p=p-next; /*指針后移*/

h; /*返回頭指針

VB數據流程圖

目錄

摘要

ABSTRACT

前言

第一章 為什么要開發(fā)一個學生檔案管理系統(tǒng)?

第二章 計算機已經成為我們學習和工作的得力助手

1.1 在中小學中用計算機管理學生檔案的意義

1.2 為將來學校上網做好準備

1.4 學生檔案的設計分析

第三章 怎樣開發(fā)一個學生檔案管理系統(tǒng)?

2.1 編程環(huán)境的選擇

2.2 關系型數據庫的實現(xiàn)

2.3 二者的結合(DBA)

第四章 Windows下的Visual Basic 編程環(huán)境簡介

3.1 告別“hello world”的年代

3.2 面對對象的編程

3.3 實現(xiàn)菜單選項

3.4 實現(xiàn)工具欄

3.5 幫助

3.6關于系統(tǒng)

第五章 使用Access2000 實現(xiàn)關系型數據庫

4.1 數據庫的概念

4.2 新建一個數據庫

4.3 修改已建的數據庫

4.4 實現(xiàn)數據庫之間的聯(lián)系

第五章 系統(tǒng)總體規(guī)劃

5.1 系統(tǒng)功能

5.2 流程圖

第六章 系統(tǒng)具體實現(xiàn)

6.1 用戶界面的實現(xiàn)

6.1.1 封面

6.1.2 主界面

6.1.3 幫助系統(tǒng)

6.2 數據庫的實現(xiàn)

6.2.1 學籍數據庫

6.2.2 學生成績庫

6.2.3 課程庫

6.3 與VB的連接

第七章 結束語

第八章 主要參考文獻

附錄

--------------摘要--------------

學生檔案管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數據庫的建立和維護以及前端應用程序的開發(fā)兩個方面。對于前者要求建立起數據一致性和完整性強、數據安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。

經過分析,我們使用 MICROSOFT公司的 VISUAL BASIC開發(fā)工具,利用其提供的各種面向對象的開發(fā)工具,尤其是數據窗口這一能方便而簡潔操縱數據庫的智能化對象,首先在短時間內建立系統(tǒng)應用原型,然后,對初始原型系統(tǒng)進行需求迭代,不斷修正和改進,直到形成用戶滿意的可行系統(tǒng)。

關鍵字:控件、窗體、域。

--------------ABSTRACT--------------

The system of managing student file is a typical application of managing information system (know as MIS),which mainly includes building up data-base of back-end and developing the application interface of front-end. The former required consistency and integrality and security of data. The later should make the application powerful and easily used.

By looking up lots of datum, we selected Visual Basic presented by Microsoft because of its objective tools in Win32. VB offered a series of ActiveX operating a data-base. It can give you a short-cut to build up a proto無效 of system application. The proto無效 could be modified and developed till users are satisfied with it.

Keywords: ActiveX , Form , Field .

--------------前言--------------

學生檔案管理系統(tǒng)是一個教育單位不可缺少的部分,它的內容對于學校的決策者和管理者來說都至關重要,所以學生檔案管理系統(tǒng)應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點,如:效率低、保密性差,另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少的困難。

隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。

作為計算機應用的一部分,使用計算機對學生檔案信息進行管理,具有著手工管理所無法比擬的優(yōu)點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高學生檔案管理的效率,也是企業(yè)的科學化、正規(guī)化管理,與世界接軌的重要條件。

因此,開發(fā)這樣一套管理軟件成為很有必要的事情,在下面的各章中我們將以開發(fā)一套學生檔案管理系統(tǒng)為例,談談其開發(fā)過程和所涉及到的問題及解決方法。

--------------------下面就讓我們開始正文的介紹

第一章

為什么要開發(fā)一個學生檔案管理系統(tǒng)?

計算機已經成為我們學習和工作的得力助手:

今天,計算機的價格已經十分低廉,性能卻有了長足的進步。它已經被應用于許多領域,計算機之所以如此流行的原因主要有以下幾個方面:

首先,計算機可以代替人工進行許多繁雜的勞動;

其次,計算機可以節(jié)省許多資源;

第三,計算機可以大大的提高人們的工作效率;

第四,計算機可以使敏感文檔更加安全,等等。

在中小學中用計算機管理學生檔案的意義

現(xiàn)在我國的中小學校中檔案的管理水平還停留在紙介質的基礎上,這樣的機制已經不能適應時代的發(fā)展,因為它浪費了許多人力和物力,在信息時代這種傳統(tǒng)的管理方法必然被計算機為基礎的信息管理所取代。

我作為一個計算機應用的本科生,希望可以在這方面有所貢獻。改革的總設計師鄧小平同志說過“科學技術是第一生產力”,我希望能用我四年的所學編制出一個實用的程序來幫助中小學進行更有效的學籍管理。

歸納起來,好處大約有以下幾點:

1. 可以存儲歷屆的學生檔案,安全、高效;

2. 只需一到二名檔案錄入員即可操作系統(tǒng),節(jié)省大量人力;

3. 可以迅速查到所需信息。

為將來學校上網做好準備

跟據1999年中國電信的調查報告顯示我國的上網人數已達到890萬,互聯(lián)網已經十分普及,學校往界的畢業(yè)生希望能在世界的任何一個角落查到自己校友的信息,本系統(tǒng)為學校將來的上網作了先期工作,比如數據庫的建立。

學生檔案的設計分析

根據實際情況,我們使用原型法(Rapid Prototyping)即以少量代價快速地構造一個可執(zhí)行的軟件系統(tǒng)模型。使用戶和開發(fā)人員可以較快地確定需求,然后采用循環(huán)進化的開發(fā)方式,對系統(tǒng)模型作連續(xù)的精化,將系統(tǒng)需具備的性質逐漸增加上去,直到所有的性質全部滿足。此時模塊也發(fā)展成為最終產品了。

第二章

怎樣開發(fā)一個學生檔案管理系統(tǒng)?

編程環(huán)境的選擇

微軟公司的Visual Basic 6.0是Windows應用程序開發(fā)工具,使目前最為廣泛的、易學易用的面向對象的開發(fā)工具。Visual Basic提供了大量的控件,這些控件可用于設計界面和實現(xiàn)各種功能,減少了編程人員的工作量,也簡化了界面設計過程,從而有效的提高了應用程序的運行效率和可靠性。故而,實現(xiàn)本系統(tǒng)VB是一個相對較好的選擇。

關系型數據庫的實現(xiàn)

Access2000 就是關系數據庫開發(fā)工具,數據庫能匯集各種信息以供查詢、存儲和檢索。Access 的優(yōu)點在于它能使用數據表示圖或自定義窗體收集信息。數據表示圖提供了一種類似于 Excel 的電子表格,可以使數據庫一目了然。另外,Access 允許創(chuàng)建自定義報表用于打印或輸出數據庫中的信息。Access也提供了數據存儲庫,可以使用桌面數據庫文件把數據庫文件置于網絡文件服務器,與其他網絡用戶共享數據庫。Access 是一種關系數據庫工具,關系數據庫是已開發(fā)的最通用的數據庫之一。如上所述,Access 作為關系數據庫開發(fā)具備了許多優(yōu)點,可以在一個數據包中同時擁有桌面數據庫的便利和關系數據庫的強大功能。

二者的結合(DBA)

微軟的JET數據庫引擎提供了與數據庫打交道的途徑,我們是通過它以及Visual Basic 來訪問數據庫并對其進行各種操作。Visual Basic、Access以及其他微軟的軟件產品都是通過共用JET數據庫引擎,從而給用戶提供了豐富的數據類型。

DATA 控件在數據庫中的信息與將信息顯示給用戶看的Visual Basic程序之間架起了一座橋梁。我們可以設置DATA控件的各個屬性,告訴它要調用那個數據庫的哪個部分。缺省情況下,DATA控件根據數據庫中的一個或多個數據表建立一個dynaset-無效(動態(tài)集合)類型的記錄集合。一個記錄集合是動態(tài)的也就意味著,當原來的數據表中的容改變了以后,該記錄集合中的記錄也會隨之改變。DATA控件還提供了用來瀏覽不同記錄的各種跳轉按鈕。將DATA控件放置在窗體中之后,我們還必須在該控件與要處理的數據庫之間建立聯(lián)系。

第三章

Windows下的Visual?????????????

?????????????????????????????

?????????????????

?????????????????????????????????????????????????)。 Visual Basic應用程序基本的構建塊是用戶所創(chuàng)建的對象,每一個對象都具有一些特性和行為(屬性、事件和 方法)。開發(fā)人員可以最有效利用所創(chuàng)建的每一個對象。使用應用程序具有可通用性可說擴展性和強有力的功能。

Visual Basic應用由一系列對象組成,包括有函數、菜單、函數、結構和數據窗口、用戶對象、用戶事件等等,對象中又包含若干控件如命令按鈕、單行編輯器等這些對象和控件都可在許多應用中重復使用。

實現(xiàn)菜單選項

菜單是程序最重要的特性之一,大多數程序都依賴一個定義良好的菜單使程序易于使用和維護,Visual Basic也提供了強大的創(chuàng)建菜單功能是程序更加標準。

您可以使用Visual Basic的Application Wizard也可以使用Visual Basic 的菜單編輯器建立菜單或者修改已經存在的菜單。

實現(xiàn)工具欄

CoolBar控件與Office97種看到的CoolBar是類似的。CoolBar就是一個可以在窗體上浮動的工具,同時也是其他ActiveX的容器。通過在CoolBar中遷入其他空間你局可以向用戶提供更好的靈活性和義用性。

Toolbar 是工具條控件,是實現(xiàn)工具條的主體。其中的按鈕可以顯示圖像和標題,并按功能分組或加入分隔符,還可以圍棋設置鼠標停留在其上顯示的提示字符。Toolbar也是一個控件容器且具有Style屬性,并可以為其增加下拉按鈕和平滑按鈕等。

選擇“工程”下拉菜單中的“部件”選項,顯示“部件”對話框。在“控件”選項卡列表中選擇“Microsoft Windows Common Controls 6.0”后工具相中增加改控件。其屬性及對象如下:

1. Align屬性定義工具條在窗體中的位置

2. ToolTipText屬性是字符串類型,定義控件的提示字符

3. Style屬性定義按鈕外觀。

4. ImageList屬性定義與數據條對應的ImageList控件名,該控件定義工具條按鈕顯示的圖像。

5. HotImangeList屬性設置一個ImageList控件名,該控件定義按鈕獲得熱點時顯示的圖像。

6. DisabledImageList屬性定義工具條按鈕無效時顯示的圖像。

創(chuàng)建工具條包括ImageList和Toolbar控件

ImageList用于為其他控件提供圖像庫,將ImageList控件加入到工具箱的操作于前述Toolbar控件相同。

幫助

專業(yè)水平的軟件通常都帶有聯(lián)機幫助功能。無論寫出來的程序是要給大量的用戶使用,還是僅僅局限于公司內部有限的使用者,我們都應該為用戶提供詳細的、易于理解的聯(lián)機幫助文檔。微軟的Help Workshop4.0 是一套獨立于Visual Basic 的用來協(xié)助我們創(chuàng)建、運行于32位Windows 操作系統(tǒng)下的幫助文件的工具。使用它我們可以為我們編寫的應用程序生成一組幫助文件。

關于版本

為了是程序顯得更具有專業(yè)風格,首先可以在其中加入通常的應用程序信息。這些信息包括公司名稱、版本號、修訂號以及其他類似信息。Visual Basic允許你使用APP對象來保存這些信息,APP對象是一個預定義對象,不需要在程序中創(chuàng)建它。APP對象的大多數屬性被應用程序用來提供常規(guī)的信息,通過使用這些APP提供的屬性,可以在應用程序和用戶之間交流重要信息,在項目屬性框中可以設置它的屬性。

第四章

使用Access2000 實現(xiàn)關系型數據庫

數據庫的概念

數據庫是一種存儲數據并對數據進行操作的工具。數據庫的作用在于組織和表達信息,簡而言之,數據庫就是信息的集合。計算機的數據庫可以分為兩類:非關系數據庫(flat-file)和關系數據庫(relational)。關系數據庫中包含了多個數據表的信息,數據庫含有各個不同部分的術語,象記錄、域等。

新建一個數據庫

創(chuàng)建任何一個數據庫的第一步是仔細的規(guī)劃數據庫,設計必須是靈活的、有邏輯的。創(chuàng)建一個數據庫結構的過程被認為是數據模型設計。

1. 標識需要的數據;

2. 收集被標識的字段到表中;

3. 標識主關鍵字字段;

4. 繪制一個簡單的數據圖表;

5. 規(guī)范數據;

6. 標識指定字段的信息;

7. 創(chuàng)建物理表。

修改已建的數據庫

數據庫的修改分為:添加、編輯和刪除記錄。這三種操作均可由Visual Basic 創(chuàng)建的程序來完成,下面的章節(jié)將詳細描述實現(xiàn)的具體方法。

實現(xiàn)數據庫之間的聯(lián)系

數據庫之間的關系指明兩個庫之間共享一個共同的關鍵字值。一個連接是指一種虛擬的表,這種表是在當用戶要求從相互關聯(lián)的各個不同的表中獲取信息時建立的,關鍵字段用于在相互連接的不同表中查找匹配的記錄。一個更高級的連接形式稱為自連接。這種連接是指一個表被連接到它自己的一個字段,或在不同的紀錄中由重復數據的組合字段。數據庫中有三種不同類型的關鍵字:主關鍵字、組合關鍵字和外關鍵字。在表中使用的關鍵字類型用于描述庫表示什么以及在數據庫中如何與其它的庫建立關系。

第五章

系統(tǒng)總體規(guī)劃

系統(tǒng)功能

1. 可以進行文本操作;

2. 添加一個數據庫項目;

3. 刪除一個數據庫項目;

4. 修改一個數據庫項目;

5. 查詢信息;

6. 察看課程表。

流程圖

第六章

系統(tǒng)具體實現(xiàn)

用戶界面的實現(xiàn)

6.1.1 封面

具體實現(xiàn)見 圖_6.1.1

圖_6.1.1

6.1.2 主界面

具體實現(xiàn)見.圖_6.1.2

圖_6.1.2

主界面包含三方面的內容,以下一一介紹:

1.記錄操作

打開記錄操作,進入記錄操作菜單項分別由文件、視圖及幫助三個選項。

1.1文件包括:新建

打開

打開寫字板---------如圖6.1.4 (源程序見附錄清單6.1 )

保存

另存

打印

退出

圖6.1.4

1.2視圖包括:狀態(tài)條

工具欄

背景顏色

顯示

課程表---------如圖6.1.5

文本編輯器

網絡瀏覽

圖6.1.5

1. 3幫助包括:內容

關于幫助

2.記錄操作

打開記錄操作進入記錄操作選項頁分別由瀏覽記錄、查找等三個選項組成。

2.1瀏覽記錄:

學生學籍庫

課程庫

成績庫

2.2查找記錄

2.3備注

3.系統(tǒng)信息

打開系統(tǒng)信息進入選項頁分別由系統(tǒng)信息、信息采集等組成。

6.1.3 幫助系統(tǒng)

具體實現(xiàn)見6.1.3

圖6.1.3

數據庫的實現(xiàn)

6.2.1學籍數據庫

學籍數據庫里存儲了學生的檔案包括:學號、姓名、年齡等 表如6.2.6

列名(中文)列名(英文)數據類型寬度小數點位數是否為空姓名Name Date8No學號CodeInteger6No性別SexDate2No年齡AgeDate6No民族NationDate6No政治面貌Visage...Date2...Yes...家庭住址AddressDate10No備注RecordDate15No 表6.2.6

學籍模塊:

該模塊主要完成學生基本信息的錄入、刪除 、更新等功能。在此模塊中定義了八個域名來進行學生的信息存儲。如果用戶修改某一紀錄中的某一項,可單添加按鈕進行學生記錄的編輯,此窗口使用數據窗口的FREEDOM風格(典型的錄入界面)。該種風格特點是列標題緊挨著數據列在此窗口還可以增加新學生紀錄。

6.2.2成績數據庫

成績數據庫里存儲了學生的成績包括:學號、成績、等如表6.2.7

列名(中文)列名(英文)數據類型寬度小數點位數是否為空姓名Name Date8No學號CodeInteger6No成績ScoreDate10No備注RecordDate15No 表6.2.7

成績模塊:

該模塊主要完成學生成績的基本信息的錄入、刪除 、更新等功能。在此模塊中定義了四個域名來進行學生的信息存儲。

6.2.3課程數據庫

課程數據庫利存儲了課程的信息:課程名、作者、出版社等如表6.2.8

列名(中文)列名(英文)數據類型寬度小數點位數是否為空課程IDCourseDate8No課程名NameDate15No出版社PublisherDate20No作者ScoreDate18No備注RecordDate15No 表6.2.8

課程模塊:

該模塊主要完成存儲課程的所有信息及錄入、刪除 、更新等功能

與VB的連接

Visual Basic提供了與底層數據庫系統(tǒng)緊密的連接。Visual Basic 支持不同的關系數據庫管理系統(tǒng)并充分發(fā)揮每一個數據庫的特長。生成獨立應用或脫離服務器運行的服務以上的應用,Visual Basic連接數據庫的方式有兩種:

·通過使用Visual Basic的 DATA控件。

·通過使用由Visual Basic提供的專用的直接與數據庫相連的接口

第七章

結束語

經過三個多月的設計和開發(fā),中小學檔案管理系統(tǒng)基本開發(fā)完畢。其功能基本符合用戶需求,能夠完成學生學籍的存儲和成績的查詢以及各類相關報表的打印。并提供部分系統(tǒng)維護功能,使用戶方便進行數據備份和恢復、數據刪除。,對于數據的一致性的問題也通過程序進行了有效的解決。

但是由于畢業(yè)設計時間較短,所以該系統(tǒng)還有許多不盡如人意的地方,比如聯(lián)機文檔比較少,用戶界面不夠美觀,出錯處理不夠等多方面問題。這些都有待進一步改善。

致謝

在本次畢業(yè)設計中,我從指導老師雷震甲老師身上學到了很多東西。雷老師認真負責的工作態(tài)度,嚴謹的治學精神和深厚的理論水平都使我收益匪淺。他無論在理論上還是在實踐中,都給與我很大的幫助,使我得到不少的提高這對于我以后的工作和學習都有一種巨大的幫助,感謝他耐心的輔導。

另外,在系統(tǒng)開發(fā)過程中雷老師的助手張彥明老師也給于我很大的幫助,幫助解決了不少的難點,使得系統(tǒng)能及時開發(fā)完成,還有同組的同學同樣給與我不少幫助,這里一并表示感謝。

第八章

主要參考文獻

[1] Visual Basic 6.0 使用指南

作者:Bob Reselman , Richard Peasley , Wayne Pruchniak.

出版社:電子工業(yè)出版社

[2] 中文版Microsoft Office 97 自學通

作者:Ned Snell

出版社:機械工業(yè)出版社

[3] Visual Basic 6.0 中文版控件大全

作者:Microsoft

出版社;電子工業(yè)出版社

[4] 中文Access 2000 24學時教程

作者:Craig Eddy ,Timothy Buchanan

出版社:機械工業(yè)出版社

附錄程序清單及注釋

程序清單6.1

Option Explicit

Dim FileName As String '文件名,用于打開、保存文件

Dim UndoString As String '用于 Undo 操作

Dim UndoNew As String '用于 Undo 操作

Private Sub ImgUndoDisable()

'禁用“Undo”按鈕

UndoString = ""

UndoNew = ""

ImgUndo.Enabled = False

ImgUndo.Picture = ImageDisable.ListImages("Undo").Picture

End Sub

Private Sub ImgUndoEnable()

'有效“Undo”按鈕

ImgUndo.Enabled = True

ImgUndo.Picture = ImageUp.ListImages("Undo").Picture

End Sub

Private Sub Check_ImgPaste()

'設置粘貼按鈕

If Len(Clipboard.GetText) 0 Then

ImgPaste.Enabled = True

ImgPaste.Picture = ImageUp.ListImages("Paste").Picture

Else

ImgPaste.Enabled = False

ImgPaste.Picture = ImageDisable.ListImages("Paste").Picture

End If

End Sub

Private Sub Check_ImgCutCopy()

'設置剪切、復制按鈕

If Text1.SelLength 0 Then

ImgCut.Enabled = True

ImgCut.Picture = ImageUp.ListImages("Cut").Picture

ImgCopy.Enabled = True

ImgCopy.Picture = ImageUp.ListImages("Copy").Picture

Else

ImgCut.Enabled = False

ImgCut.Picture = ImageDisable.ListImages("Cut").Picture

ImgCopy.Enabled = False

ImgCopy.Picture = ImageDisable.ListImages("Copy").Picture

End If

End Sub

Private Sub BackColor_Click()

CommonDialog1.ShowColor

Text1.BackColor = CommonDialog1.Color

End Sub

Private Sub Box_Click()

'顯停工具欄

If Box.Checked Then

'將停顯工具欄

Box.Checked = False

CoolBar1.Visible = False

Else

Box.Checked = True

CoolBar1.Visible = True

End If

Form_Resize '重新調整控件位置

End Sub

Private Sub Close_Click()

Dim FileNum As Integer

If Len(FileName) 0 Then

'有輸入文件名

FileNum = FreeFile() '獲得可用文件號

Open FileName For Output As FileNum '打開輸出文件

'如果無指定文件,則創(chuàng)建新文件

Print #FileNum, Text1.Text '輸出文本

Close FileNum '關閉文件

End If

Text1.Text = ""

FileName = ""

End Sub

Private Sub ComboSize_Click()

Text1.FontSize = Val(ComboSize.Text)

End Sub

Private Sub ComboFont_Click()

Text1.FontName = ComboFont.Text

End Sub

Private Sub Copy_Click()

Clipboard.SetText Text1.SelText '復制文本到剪裁板

End Sub

Private Sub Cut_Click()

Clipboard.SetText Text1.SelText '復制文本到剪裁板

Text1.SelText = "" '清選擇的文本

End Sub

Private Sub DataTime_Click()

Text1.SelText = Now

End Sub

Private Sub 刪除_Click()

Text1.SelText = "" '清選擇的文本

End Sub

Private Sub Edit_Click()

'當程序顯示“編輯”子菜單前,觸發(fā)該程序

If Text1.SelLength 0 Then

'文本框中有選中的文本

Cut.Enabled = True

Copy.Enabled = True

刪除.Enabled = True

Else

Cut.Enabled = False

Copy.Enabled = False

刪除.Enabled = False

End If

If Len(Clipboard.GetText()) 0 Then

'剪裁板中有文本數據

Paste.Enabled = True

Else

'沒有可粘貼的文本

Paste.Enabled = False

End If

End Sub

Private Sub Exit_Click()

Unload Me

End Sub

Private Sub FindText_KeyPress(KeyAscii As Integer)

Dim BeginPos As Long

If KeyAscii = 13 Then

BeginPos = InStr(1, Text1.Text, FindText.Text, vbTextCompare)

If BeginPos 0 Then

Text1.SelStart = BeginPos - 1

Text1.SelLength = Len(FindText.Text)

End If

End If

End Sub

Private Sub Fontcolor_Click()

CommonDialog1.ShowColor

Text1.ForeColor = CommonDialog1.Color

End Sub

Private Sub Form_Load()

Dim i As Integer

'加載圖像

ImgNew.Picture = ImageUp.ListImages("New").Picture

ImgOpen.Picture = ImageUp.ListImages("Open").Picture

ImgSave.Picture = ImageUp.ListImages("Save").Picture

ImgUndo.Picture = ImageDisable.ListImages("Undo").Picture

Check_ImgPaste

Check_ImgCutCopy

'加載系統(tǒng)字體

For i = 0 To Screen.FontCount - 1

ComboFont.AddItem Screen.Fonts(i)

Next i

End Sub

Private Sub Form_Resize()

Dim TextTop As Long

'修改工具條大小

CoolBar1.Top = Me.ScaleTop

?????????????????????????????

??????????????????????????????????

???????????

????????????????????????????

??????????

????????????????????????????????????????????

????????

???????????????????

??????????

?????????????????????????????????????

???????????????? Me.ScaleLeft

Text1.Width = Me.ScaleWidth

If Me.ScaleHeight CoolBar1.Height Then

Text1.Height = Me.ScaleHeight - TextTop

Else

Text1.Height = 0

End If

End Sub

Private Sub ImgCopy_Click()

Copy_Click '復制

Check_ImgPaste

Check_ImgCutCopy

End Sub

Private Sub ImgCopy_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

'“按下”按鈕

If Button = 1 Then

ImgCopy.Picture = ImageDown.ListImages("Copy").Picture

End If

End Sub

Private Sub ImgCopy_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Label1 = "將選擇的文本復制到剪裁板"

'判斷鼠標位置,顯示不同圖像

If Button = 1 And (X 0 And X ImgNew.Width And Y 0 And Y ImgNew.Height) Then

ImgCopy.Picture = ImageDown.ListImages("Copy").Picture

ElseIf Button = 1 Then

ImgCopy.Picture = ImageUp.ListImages("Copy").Picture

End If

End Sub

Private Sub ImgCopy_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then

'“抬起”按鈕

ImgCopy.Picture = ImageUp.ListImages("Copy").Picture

End If

End Sub

Private Sub ImgCut_Click()

'If Text1.SelLength 0 Then

Cut_Click '剪切

Check_ImgPaste

Check_ImgCutCopy

'End If

End Sub

Private Sub ImgCut_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then

'“按下”按鈕

ImgCut.Picture = ImageDown.ListImages("Cut").Picture

End If

End Sub

Private Sub ImgCut_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Label1 = "剪切選擇的文字到剪裁板"

'判斷鼠標位置,顯示不同圖像

If Button = 1 And (X 0 And X ImgNew.Width And Y 0 And Y ImgNew.Height) Then

ImgCut.Picture = ImageDown.ListImages("Cut").Picture

ElseIf Button = 1 Then

ImgCut.Picture = ImageUp.ListImages("Cut").Picture

End If

End Sub

Private Sub ImgCut_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then

'“抬起”按鈕

ImgCut.Picture = ImageUp.ListImages("C

C語言程序設計:班級電話本管理程序

/* 電話簿程序 */

/******頭文件(.h)***********/

#include "stdio.h" /*I/O函數*/

#include "stdlib.h" /*標準庫函數*/

#include "string.h"/*字符串函數*/

#include "ctype.h" /*字符操作函數*/

#define M 50 /*定義常數表示記錄數*/

struct unit/*定義數據結構*/

{

char name[20]; /*姓名*/

char units[30]; /*單位*/

char tele[10]; /*電話*/

};

typedef struct unit ADDRESS;

/******以下是函數原型*******/

int enter(ADDRESS t[]); /*輸入記錄*/

void list(ADDRESS t[],int n); /*顯示記錄*/

void search(ADDRESS t[],int n); /*按姓名查找顯示記錄*/

int delete(ADDRESS t[],int n); /*刪除記錄*/

int add(ADDRESS t[],int n); /*插入記錄*/

void save(ADDRESS t[],int n); /*記錄保存為文件*/

int load(ADDRESS t[]); /*從文件中讀記錄*/

void display(ADDRESS t[]); /*按序號查找顯示記錄*/

void sort(ADDRESS t[],int n); /*按姓名排序*/

void qseek(ADDRESS t[],int n); /*快速查找記錄*/

void copy(); /*文件復制*/

void print(ADDRESS temp); /*顯示單條記錄*/

int find(ADDRESS t[],int n,char *s) ; /*查找函數*/

int menu_select(); /*主菜單函數*/

/******主函數開始*******/

main()

{

int i;

ADDRESS adr[M]; /*定義結構體數組*/

int length; /*保存記錄長度*/

clrscr(); /*清屏*/

for(;;)/*無限循環(huán)*/

{

switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/

{

case 0:length=enter(adr);break;/*輸入記錄*/

case 1:list(adr,length);break; /*顯示全部記錄*/

case 2:search(adr,length);break; /*查找記錄*/

case 3:length=delete(adr,length);break; /*刪除記錄*/

case 4:length=add(adr,length); break; /*插入記錄*/

case 5:save(adr,length);break; /*保存文件*/

case 6:length=load(adr); break; /*讀文件*/

case 7:display(adr);break; /*按序號顯示記錄*/

case 8:sort(adr,length);break; /*按姓名排序*/

case 9:qseek(adr,length);break; /*快速查找記錄*/

case 10:copy();break; /*復制文件*/

case 11:exit(0); /*如返回值為11則程序結束*/

}

}

}

/*菜單函數,函數返回值為整數,代表所選的菜單項*/

menu_select()

{

char s[80];

int c;

gotoxy(1,25);/*將光標定為在第25行,第1列*/

printf("press any key enter menu......\n");/*提示壓任意鍵繼續(xù)*/

getch(); /*讀入任意字符*/

clrscr(); /*清屏*/

gotoxy(1,1);

printf("********************MENU*********************\n\n");

printf(" 0. Enter record\n");

printf(" 1. List the file\n");

printf(" 2. Search record on name\n");

printf(" 3. Delete a record\n");

printf(" 4. add record \n");

printf(" 5. Save the file\n");

printf(" 6. Load the file\n");

printf(" 7. display record on order\n");

printf(" 8. sort to make new file\n");

printf(" 9. Quick seek record\n");

printf(" 10. copy the file to new file\n");

printf(" 11. Quit\n");

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

do{

printf("\n Enter you choice(0~11):"); /*提示輸入選項*/

scanf("%s",s); /*輸入選擇項*/

c=atoi(s); /*將輸入的字符串轉化為整型數*/

}while(c0||c11); /*選擇項不在0~11之間重輸*/

return c; /*返回選擇項,主程序根據該數調用相應的函數*/

}

/***輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/

int enter(ADDRESS t[])

{

int i,n;

char *s;

clrscr(); /*清屏*/

printf("\nplease input num \n"); /*提示信息*/

scanf("%d",n); /*輸入記錄數*/

printf("please input record \n"); /*提示輸入記錄*/

printf("name unit telephone\n");

printf("------------------------------------------------\n");

for(i=0;in;i++)

{

scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*輸入記錄*/

printf("----------------------------------------------\n");

}

return n; /*返回記錄條數*/

}

/*顯示記錄,參數為記錄數組和記錄條數*/

void list(ADDRESS t[],int n)

{

int i;

clrscr();

printf("\n\n*******************ADDRESS******************\n");

printf("name unit telephone\n");

printf("------------------------------------------------\n");

for(i=0;in;i++)

printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);

if((i+1)%10==0) /*判斷輸出是否達到10條記錄*/

{

printf("Press any key continue...\n"); /*提示信息*/

getch(); /*壓任意鍵繼續(xù)*/

}

printf("************************end*******************\n");

}

/*查找記錄*/

void search(ADDRESS t[],int n)

{

char s[20]; /*保存待查找姓名字符串*/

int i; /*保存查找到結點的序號*/

clrscr(); /*清屏*/

printf("please search name\n");

scanf("%s",s); /*輸入待查找姓名*/

i=find(t,n,s); /*調用find函數,得到一個整數*/

if(in-1) /*如果整數i值大于n-1,說明沒找到*/

printf("not found\n");

else

print(t[i]); /*找到,調用顯示函數顯示記錄*/

}

/*顯示指定的一條記錄*/

void print(ADDRESS temp)

{

clrscr();

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

printf("name unit telephone\n");

printf("------------------------------------------------\n");

printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);

printf("**********************end***********************\n");

}

/*查找函數,參數為記錄數組和記錄條數以及姓名s */

int find(ADDRESS t[],int n,char *s)

{

int i;

for(i=0;in;i++)/*從第一條記錄開始,直到最后一條*/

{

if(strcmp(s,t[i].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/

return i; /*相等,則返回該記錄的下標號,程序提前結結束*/

}

return i; /*返回i值*/

}

/*刪除函數,參數為記錄數組和記錄條數*/

int delete(ADDRESS t[],int n)

{

char s[20]; /*要刪除記錄的姓名*/

int ch=0;

int i,j;

printf("please deleted name\n"); /*提示信息*/

scanf("%s",s);/*輸入姓名*/

i=find(t,n,s); /*調用find函數*/

if(in-1) /*如果in-1超過了數組的長度*/

printf("no found not deleted\n"); /*顯示沒找到要刪除的記錄*/

else

{

print(t[i]); /*調用輸出函數顯示該條記錄信息*/

printf("Are you sure delete it(1/0)\n"); /*確認是否要刪除*/

scanf("%d",ch); /*輸入一個整數0或1*/

if(ch==1) /*如果確認刪除整數為1*/

{

for(j=i+1;jn;j++) /*刪除該記錄,實際后續(xù)記錄前移*/

{

strcpy(t[j-1].name,t[j].name); /*將后一條記錄的姓名拷貝到前一條*/

strcpy(t[j-1].units,t[j].units); /*將后一條記錄的單位拷貝到前一條*/

strcpy(t[j-1].tele,t[j].tele); /*將后一條記錄的電話拷貝到前一條*/

}

n--; /*記錄數減1*/

}

}

return n; /*返回記錄數*/

}

/*插入記錄函數,參數為結構體數組和記錄數*/

int add(ADDRESS t[],int n)/*插入函數,參數為結構體數組和記錄數*/

{

ADDRESS temp; /*新插入記錄信息*/

int i,j;

char s[20]; /*確定插入在哪個記錄之前*/

printf("please input record\n");

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

printf("name unit telephone\n");

printf("--------------------------------------------------\n");

scanf("%s%s%s",temp.name,temp.units,temp.tele); /*輸入插入信息*/

printf("------------------------------------------------\n");

printf("please input locate name \n");

scanf("%s",s); /*輸入插入位置的姓名*/

i=find(t,n,s); /*調用find,確定插入位置*/

for(j=n-1;j=i;j--) /*從最后一個結點開始向后移動一條*/

{

strcpy(t[j+1].name,t[j].name); /*當前記錄的姓名拷貝到后一條*/

strcpy(t[j+1].units,t[j].units); /*當前記錄的單位拷貝到后一條*/

strcpy(t[j+1].tele,t[j].tele); /*當前記錄的電話拷貝到后一條*/

}

strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個位置*/

strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個位置*/

strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個位置*/

n++; /*記錄數加1*/

return n; /*返回記錄數*/

}

/*保存函數,參數為結構體數組和記錄數*/

void save(ADDRESS t[],int n)

{

int i;

FILE *fp; /*指向文件的指針*/

if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,并判斷打開是否正常*/

{

printf("can not open file\n");/*沒打開*/

exit(1); /*退出*/

}

printf("\nSaving file\n"); /*輸出提示信息*/

fprintf(fp,"%d",n); /*將記錄數寫入文件*/

fprintf(fp,"\r\n"); /*將換行符號寫入文件*/

for(i=0;in;i++)

{

fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式寫入記錄*/

fprintf(fp,"\r\n"); /*將換行符號寫入文件*/

}

fclose(fp);/*關閉文件*/

printf("****save success***\n"); /*顯示保存成功*/

}

/*讀入函數,參數為結構體數組*/

int load(ADDRESS t[])

{

int i,n;

FILE *fp; /*指向文件的指針*/

if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/

{

printf("can not open file\n"); /*不能打開*/

exit(1); /*退出*/

}

fscanf(fp,"%d",n); /*讀入記錄數*/

for(i=0;in;i++)

fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele); /*按格式讀入記錄*/

fclose(fp); /*關閉文件*/

printf("You have success read data from file!!!\n"); /*顯示保存成功*/

return n; /*返回記錄數*/

}

/*按序號顯示記錄函數*/

void display(ADDRESS t[])

{

int id,n;

FILE *fp; /*指向文件的指針*/

if((fp=fopen("record.txt","rb"))==NULL) /*打開文件*/

{

printf("can not open file\n"); /*不能打開文件*/

exit(1); /*退出*/

}

printf("Enter order number...\n"); /*顯示信息*/

scanf("%d",id); /*輸入序號*/

fscanf(fp,"%d",n); /*從文件讀入記錄數*/

if(id=0idn) /*判斷序號是否在記錄范圍內*/

{

fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移動文件指針到該記錄位置*/

print(t[id]); /*調用輸出函數顯示該記錄*/

printf("\r\n");

}

else

printf("no %d number record!!!\n ",id); /*如果序號不合理顯示信息*/

fclose(fp); /*關閉文件*/

}

/*排序函數,參數為結構體數組和記錄數*/

void sort(ADDRESS t[],int n)

{

int i,j,flag;

ADDRESS temp; /*臨時變量做交換數據用*/

for(i=0;in;i++)

{

flag=0; /*設標志判斷是否發(fā)生過交換*/

for(j=0;jn-1;j++)

if((strcmp(t[j].name,t[j+1].name))0) /*比較大小*/

{

flag=1;

strcpy(temp.name,t[j].name); /*交換記錄*/

strcpy(temp.units,t[j].units);

strcpy(temp.tele,t[j].tele);

strcpy(t[j].name,t[j+1].name);

strcpy(t[j].units,t[j+1].units);

strcpy(t[j].tele,t[j+1].tele);

strcpy(t[j+1].name,temp.name);

strcpy(t[j+1].units,temp.units);

strcpy(t[j+1].tele,temp.tele);

}

if(flag==0)break; /*如果標志為0,說明沒有發(fā)生過交換循環(huán)結束*/

}

printf("sort sucess!!!\n"); /*顯示排序成功*/

}

/*快速查找,參數為結構體數組和記錄數*/

void qseek(ADDRESS t[],int n)

{

char s[20];

int l,r,m;

printf("\nPlease sort before qseek!\n"); /*提示確認在查找之前,記錄是否已排序*/

printf("please enter name for qseek\n"); /*提示輸入*/

scanf("%s",s); /*輸入待查找的姓名*/

l=0;r=n-1; /*設置左邊界與右邊界的初值*/

while(l=r) /*當左邊界=右邊界時*/

{

m=(l+r)/2; /*計算中間位置*/

if(strcmp(t[m].name,s)==0) /*與中間結點姓名字段做比較判是否相等*/

{

print(t[m]); /*如果相等,則調用print函數顯示記錄信息*/

return ; /*返回*/

}

if(strcmp(t[m].name,s)0) /*如果中間結點小*/

l=m+1; /*修改左邊界*/

else

r=m-1; /*否則,中間結點大,修改右邊界*/

}

if(lr) /*如果左邊界大于右邊界時*/

printf("not found\n"); /*顯示沒找到*/

}

/*復制文件*/

void copy()

{

char outfile[20]; /*目標文件名*/

int i,n;

ADDRESS temp[M]; /*定義臨時變量*/

FILE *sfp,*tfp; /*定義指向文件的指針*/

clrscr();/*清屏*/

if((sfp=fopen("record.txt","rb"))==NULL) /*打開記錄文件*/

{

printf("can not open file\n"); /*顯示不能打開文件信息*/

exit(1); /*退出*/

}

printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示信息*/

scanf("%s",outfile); /*輸入目標文件名*/

if((tfp=fopen(outfile,"wb"))==NULL) /*打開目標文件*/

{

printf("can not open file\n"); /*顯示不能打開文件信息*/

exit(1); /*退出*/

}

fscanf(sfp,"%d",n); /*讀出文件記錄數*/

fprintf(tfp,"%d",n);/*寫入目標文件數*/

fprintf(tfp,"\r\n"); /*寫入換行符*/

for(i=0;in;i++)

{

fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units,

temp[i].tele); /*讀入記錄*/

fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,

temp[i].units,temp[i].tele); /*寫入記錄*/

fprintf(tfp,"\r\n"); /*寫入換行符*/

}

fclose(sfp); /*關閉源文件*/

fclose(tfp); /*關閉目標文件*/

printf("you have success copy file!!!\n"); /*顯示復制成功*/

}

關于班級管理的流程圖

(1)任命班長

(2)授予班長挑選副班長以及其他班委員的權力,

(3)授予班委任命、管理小組長的權力

(4)授予小組長管理組員的權力

結束!

軟件開發(fā)流程圖示例關于班級管理的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于軟件開發(fā)如何管理、軟件開發(fā)流程圖示例關于班級管理的信息別忘了在本站進行查找喔。

掃碼二維碼