時間:2023-06-29 16:41:27
序論:在您撰寫信息工程管理專業時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。
課 程 設 計
課程名稱: C 程 序 設 計 課題名稱: 職工信息管理 班 級: 計算機學院1507班 完 成 人: 姓名(學號) 指導教師: 李珊
湖南理工學院計算機學院
2016年6月27日
一、 設計要求與功能分析
定義菜單函數,主要源代碼 void menu() /*菜單函數*/ {
printf(" \n"); printf("\n"); printf("\n");
printf(" ******************職工信息管理****************\n"); printf(" 1. 錄入職工信息"); printf(" 2. 瀏覽職工信息\n"); printf(" 3. 查詢職工信息"); printf(" 4. 刪除職工信息\n"); printf(" 5. 添加職工信息"); printf(" 6. 修改職工信息\n"); printf(" 7. 查詢排序\n"); printf(" 8. 退出\n");
printf(" ********************謝謝使用******************\n"); printf("\n"); printf("\n"); }
二、 總體設計
輸出1到7數字可進入執行不同的功能的函數,并在執行結束后返回主頁面
流程圖
三、 詳細設計與程序實現
職工輸入功能:主要功能完成職工信息的輸入,主要程序
void input() /*錄入函數*/ {
int i,m;
printf("請輸入需要創建信息的職工人數(1--100):\n"); scanf("%d",&m); for (i=0;i
printf("職工號: "); srand((int)time(0));
em[i].num=rand()%10000+20000000; if(em[i].num!=em[i-1].num) printf("%8d ",em[i].num); printf("\n");
printf("請輸入姓名: "); scanf("%s",em[i].name); getchar();
printf("請輸入性別(f--女 m--男): "); scanf("%c",&em[i].sex); printf("請輸入年齡: "); scanf("%d",&em[i].age); printf("請輸入學歷: "); scanf("%s",em[i].xueli); printf("請輸入工資: "); scanf("%d",&em[i].wage); printf("請輸入住址: "); scanf("%s",em[i].addr);
printf("請輸入電話: "); scanf("%d",&em[i].tel); printf("\n"); }
printf("\n創建完畢!\n"); save(m); }
void save(int m) /*保存文件函數*/ { int i; FILE*fp;
if ((fp=fopen("employee_list","wb"))==NULL) {
/*創建文件并判斷是否能打開*/
printf ("cannot open file\n"); exit(0); }
for (i=0;i
int load() /*導入函數*/ {
FILE*fp; int i=0;
if((fp=fopen("employee_list","rb"))==NULL) {
printf ("cannot open file\n"); exit(0); } else { do {
fread(&em[i],sizeof(struct employee),1,fp); i++; }
while(feof(fp)==0); }
fclose(fp); return(i-1); }
截圖如下
瀏覽職工信息:主要功能讀取職工信息,主要代碼 void display() /*瀏覽函數*/ { int i;
int m=load();
printf("\n 職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n"); for(i=0;i
printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } 截圖
查詢職工信息:主要代碼
void search()/*查詢函數*/ {
int t,flag; do {
printf("\n按職工號查詢請按1 ; 按學歷查詢請按2 ; 按電話號碼查詢請按3, 進入主函數按4\n"); scanf("%d",&t); if(t>=1&&t
flag=1; peak; } else { flag=0;
printf("您輸入有誤,請重新選擇!"); } }
while(flag==0); while(flag==1) {
switch(t) {
case 1:printf("按職工號查詢\n");search_num();peak; case 2:printf("按學歷查詢\n");search_xueli();peak; case 3:printf("按電話號碼查詢\n");search_tel();peak; case 4:main();peak; default:peak; } } }
void search_num() {
int num; int i,t;
int m=load();
printf("請輸入要查找的職工號(20001111---20009999):\n"); scanf("%d",&num); for(i=0;i
if(num==em[i].num) {
printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); peak; }
if(i==m)
printf("\n對不起,查無此人\n"); printf("\n");
printf("返回查詢函數請按1, 繼續查詢職工號請按2\n"); scanf("%d",&t); switch(t) {
case 1:search();peak; case 2: peak; default:peak; } }
void search_xueli()
{
char xueli[30]; int i,t;
int m=load();
printf("請輸入要查找的學歷:\n"); scanf("%s",xueli); for(i=0;i
if(strcmp(em[i].xueli,xueli)==0) {
printf("\n已找到,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); }
if(i==m)
printf("\n對不起,查無此人\n"); printf("\n");
printf("返回查詢函數請按1, 繼續查詢學歷請按2\n"); scanf("%d",&t); switch(t) {
case 1:search();peak; case 2:peak; default :peak; } }
void search_tel() {
long int tel; int i, t;
int m=load();
printf("請輸入要查找的電話號碼:\n"); scanf("%ld",&tel); for(i=0;i
printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wag
e,em[i].addr,em[i].tel);
peak;
}
if(i==m)
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1, 繼續查詢電話號碼請按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();peak;
case 2:peak;
default :peak;
}
}
截
圖
刪除職工信息,主要函數
void del() /*刪除函數*/
{
int i,j,n,t,flag;
char name[20];
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
printf("請輸入要刪除的職工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf("\n確實要刪除此人信息請按1, 不刪除請按0\n");
scanf("%d",&n);
if(n==1) /*如果刪除,則其他的信息都往上移一行*/
{
for(j=i;j
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].sex=em[j+1].sex;
em[j].age=em[j+1].age;
strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;
strcpy(em[j].addr,em[j+1].addr);
em[j].tel=em[j+1].tel;
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n對不起,查無此人!\n");
printf("\n 瀏覽刪除后的所有職工信息:\n");
save(m); /*調用保存函數*/
display(); /*調用瀏覽函數*/
printf("\n繼續刪除請按1,不再刪除請按0\n");
switch(t)
{
case 1:del();peak;
case 0:peak;
default :peak;
}
}
截圖
添加職工信息,主要代碼
void add()/*添加函數*/
{
FILE*fp;
int n;
int count=0;
int i;
int m=load();
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
fp=fopen("emploee_list","a");
printf("請輸入想增加的職工數:\n");
for (i=m;i
{
printf("\n 請輸入新增加職工的信息:\n");
printf("請輸入職工號: ");
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf("%8d ",em[i].num);
printf("\n");
printf("請輸入姓名: ");
scanf("%s",em[i].name);
getchar();
printf("請輸入性別(f--女 m--男): ");
scanf("%c",&em[i].sex);
printf("請輸入年齡: ");
scanf("%d",&em[i].age);
printf("請輸入學歷: ");
scanf("%s",em[i].xueli);
printf("請輸入工資: ");
scanf("%d",&em[i].wage);
printf("請輸入住址: ");
scanf("%s",em[i].addr);
printf("請輸入電話: ");
scanf("%d",&em[i].tel);
printf("\n");
count=count+1;
printf("已增加的人數:\n");
printf("%d\n",count);
}
printf("\n添加完畢!\n");
m=m+count;
printf("\n瀏覽增加后的所有職工信息:\n");
printf("\n");
save(m);
display();
fclose(fp);
}
截圖
修改職工信息:主要源代碼
void modify() /*修改函數*/
{
int num;
char name[10];
char sex;
int age;
char xueli[30];
int wage;
char addr[30];
long int tel;
int b,c,i,n,t,flag;
int m=load(); /*導入文件內的信息*/
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
printf("請輸入要修改的職工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf("\n確實要修改此人信息請按1 ; 不修改請按0\n");
scanf("%d",&n);
if(n==1)
{
printf("\n需要進行修改的選項\n 1.職工號 2. 姓名 3. 性別 4. 年齡 5. 學歷 6. 工資 7. 住址 8. 電話\n");
printf("請輸入你想修改的那一項序號:\n");
scanf("%d",&c);
if(c>8||c
printf("\n選擇錯誤,請重新選擇!\n");
}
flag=0;
}
}
if(flag==1)
printf("\n對不起,查無此人!\n");
do
{
switch(c) /*因為當找到第i 個職工時,for 語句后i 自加了1, 所以下面的應該把改后的信息賦值給第i-1個人*/
{
case 1:printf("職工號改為: ");
scanf("%d",&num);
em[i-1].num=num;
peak;
case 2:printf("姓名改為: ");
scanf("%s",name);
strcpy(em[i-1].name,name);
peak;
case 3:printf("性別改為: ");
getchar();
scanf("%c",&sex);
em[i-1].sex=sex;
peak;
case 4:printf("年齡改為: ");
scanf("%d",&age);
em[i-1].age=age;
peak;
case 5:printf("學歷改為: ");
strcpy(em[i-1].xueli,xueli);
peak;
case 6:printf("工資改為: ");
scanf("%d",wage);
peak;
case 7:printf("住址改為: ");
scanf("%s",addr);
strcpy(em[i-1].addr,addr);
peak;
case 8:printf("電話改為: ");
scanf("%ld",&tel);
em[i-1].tel=tel;
peak;
}
printf("\n");
printf("\n是否確定所修改的信息?\n 是 請按1 ; 不, 重新修改 請按2:
scanf("%d",&b);
}
while(b==2);
printf("\n瀏覽修改后的所有職工信息:\n");
printf("\n");
save(m);
display();
printf("\n繼續修改請按1,不再修改請按0\n");
scanf("%d",&t);
switch(t)
{
case 1:modify();peak;
case 0:peak;
default :peak;
}
}
截\n"); 圖
查詢排序:主要源代碼
void sort(){/*排序*/
int i;
printf("請選擇關鍵字排列:1.工號 2. 年齡 3. 工資 ");
scanf("%d",&i);
while(i3){
printf("輸入有誤,請重新輸入:");
scanf("%d",&i);
}
switch(i)
{
case 1:
sort_num();peak;
case 2:
sort_age();peak;
case 3:
sort_wage();peak;
default:
peak;
}
}
void sort_num()
{
int len,i,j,t,m=load();
for(i=0;i
for(j=1;j
if(em[i].num>em[j].num)
{
t=em[i].num;
em[i].num=em[j].num;
em[j].num=t;
}
display();
getchar();
}
void sort_age()
{
int i,j,t,m=load();
for(i=0;i
for(j=1;j
if(em[i].age>em[j].age)
{
t=em[i].num;
em[i].num=em[j].num;
em[j].num=t;
}
display();
getchar();
}
void sort_wage()
{
int i,j,t,m=load();
for(i=0;i
for(j=1;j
if(em[i].wage>em[j].wage)
{
t=em[i].num;
em[i].num=em[j].num;
em[j].num=t;
}
display();
getchar();
}
截圖
退出系統。
四、 收獲、體會及意見
心得體會:回顧此次程序設計,感慨良多,雖然對著電腦做程序,有點累也有點熱,可是看到勞動成果時,真是別有一翻滋味在心頭,世上無難事只怕有心人,的確如此。做完這個課程設計,我們的自信一下子提高了,我們也會寫程序了;盡管對于有些人這種程序會很簡單,可對我們C 語言初學者來說,已經很不容易了。這次體驗為以后的學習計算機的我們增強了信心。享受勞動成果的滋味實在很美妙啊
五、 參考資料索引
【1】譚浩強. C語言程序設計教程[M]. 北京:清華大學出版社,2009年
【2】網上查資料
六、 程序清單
完整程序
#include
#include
#include
#define N 100
struct employee
{
int num;
char name[10];
char sex;
int age;
char xueli[30];
int wage;
char addr[30];
long int tel;
}em[100]; /*定義一個結構體*/
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_xueli();
void search_tel();
void sort();
void sort_num();
void sort_wage();
void sort_age();
void modify(); /*定義各函數*/
void menu() /*菜單函數*/
{
printf(" \n");
printf("\n");
printf("\n");
printf(" ******************職工信息管理****************\n");
printf(" 1. 錄入職工信息");
printf(" 2. 瀏覽職工信息\n");
printf(" 3. 查詢職工信息");
printf(" 4. 刪除職工信息\n");
printf(" 5. 添加職工信息");
printf(" 6. 修改職工信息\n");
printf(" 7. 查詢排序\n");
printf(" 8. 退出\n");
printf(" ********************謝謝使用******************\n");
printf("\n");
printf("\n");
}
void main()
{
menu(); /*調用菜單函數*/
int n,flag;
char a;
do
{
printf("請選擇你需要操作的步驟(1--8):\n");
scanf("%d",&n);
if(n>=1&&n
{
flag=1;
peak;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}
while(flag==0);
while(flag==1)
{
switch(n)
{
case 1:printf(" 輸入職工信息\n");printf("\n");input();peak; case 2:printf(" 瀏覽職工信息\n");printf("\n");display();peak;
case 3:printf(" 按職工號查詢職工信息\n");printf("\n");search();peak; case 4:printf(" 刪除職工信息\n");printf("\n");del();peak;
case 5:printf(" 添加職工信息\n");printf("\n");add();peak;
case 6:printf(" 修改職工信息\n");printf("\n");modify();peak; case 7:
printf(" 查詢排序\n");
printf("\n");
sort();
getchar();peak;
case 8:exit(0);peak;
default :peak;
}
getchar();
printf("\n");
printf("是否繼續進行(y or n):\n");
scanf("%c",&a);
if(a=="y")
{
flag=1;
system("cls"); /*清屏*/
menu(); /*調用菜單函數*/
printf("請再次選擇你需要操作的步驟(1--7):\n");
scanf("%d",&n);
printf("\n");
}
else
exit(0);
}
}
void input() /*錄入函數*/
{
int i,m;
printf("請輸入需要創建信息的職工人數(1--100):\n");
scanf("%d",&m);
for (i=0;i
{
printf("職工號: ");
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf("%8d ",em[i].num);
printf("\n");
printf("請輸入姓名: ");
scanf("%s",em[i].name);
getchar();
printf("請輸入性別(f--女 m--男): ");
scanf("%c",&em[i].sex);
printf("請輸入年齡: ");
scanf("%d",&em[i].age);
printf("請輸入學歷: ");
scanf("%s",em[i].xueli);
printf("請輸入工資: ");
scanf("%d",&em[i].wage);
printf("請輸入住址: ");
scanf("%s",em[i].addr);
printf("請輸入電話: ");
scanf("%d",&em[i].tel);
printf("\n");
}
printf("\n創建完畢!\n");
save(m);
}
void save(int m) /*保存文件函數*/
{
int i;
FILE*fp;
if ((fp=fopen("employee_list","wb"))==NULL) /*創建文件并判斷是否能打開*/
{
printf ("cannot open file\n");
exit(0);
}
for (i=0;i
if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int load() /*導入函數*/
{
FILE*fp;
int i=0;
if((fp=fopen("employee_list","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(&em[i],sizeof(struct employee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
void display() /*瀏覽函數*/
{
int i;
int m=load();
printf("\n 職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
for(i=0;i
printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
void del() /*刪除函數*/
{
int m=load();
int i,j,n,t,flag;
char name[20];
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
printf("請輸入要刪除的職工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf("\n確實要刪除此人信息請按1, 不刪除請按0\n");
scanf("%d",&n);
if(n==1) /*如果刪除,則其他的信息都往上移一行*/
{
for(j=i;j
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].sex=em[j+1].sex;
em[j].age=em[j+1].age;
strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;
strcpy(em[j].addr,em[j+1].addr);
em[j].tel=em[j+1].tel;
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n對不起,查無此人!\n");
printf("\n 瀏覽刪除后的所有職工信息:\n");
save(m); /*調用保存函數*/
display(); /*調用瀏覽函數*/
printf("\n繼續刪除請按1,不再刪除請按0\n");
scanf("%d",&t);
switch(t)
{
case 1:del();peak;
case 0:peak;
default :peak;
}
}
void add()/*添加函數*/
{
FILE*fp;
int n;
int count=0;
int i;
int m=load();
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
fp=fopen("emploee_list","a");
printf("請輸入想增加的職工數:\n");
scanf("%d",&n);
for (i=m;i
{
printf("\n 請輸入新增加職工的信息:\n");
printf("請輸入職工號: ");
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf("%8d ",em[i].num);
printf("\n");
printf("請輸入姓名: ");
scanf("%s",em[i].name);
getchar();
printf("請輸入性別(f--女 m--男): ");
scanf("%c",&em[i].sex);
printf("請輸入年齡: ");
scanf("%d",&em[i].age);
printf("請輸入學歷: ");
scanf("%s",em[i].xueli);
printf("請輸入工資: ");
scanf("%d",&em[i].wage);
printf("請輸入住址: ");
scanf("%s",em[i].addr);
printf("請輸入電話: ");
scanf("%d",&em[i].tel);
printf("\n");
count=count+1;
printf("已增加的人數:\n");
printf("%d\n",count);
}
printf("\n添加完畢!\n");
m=m+count;
printf("\n瀏覽增加后的所有職工信息:\n");
printf("\n");
save(m);
display();
fclose(fp);
}
void search()/*查詢函數*/
{
int t,flag;
do
{
printf("\n按職工號查詢請按1 ; 按學歷查詢請按2 ; 按電話號碼查詢請按3, 進入主函數按4\n");
scanf("%d",&t);
if(t>=1&&t
{
flag=1;
peak;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf("按職工號查詢\n");search_num();peak;
case 2:printf("按學歷查詢\n");search_xueli();peak;
case 3:printf("按電話號碼查詢\n");search_tel();peak;
case 4:main();peak;
default:peak;
}
}
}
void search_num()
{
int num;
int i,t;
int m=load();
printf("請輸入要查找的職工號(20001111---20009999):\n");
scanf("%d",&num);
for(i=0;i
if(num==em[i].num)
{
printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
peak;
}
if(i==m)
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1, 繼續查詢職工號請按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();peak;
case 2: peak;
default:peak;
}
}
void search_xueli()
{
char xueli[30];
int i,t;
int m=load();
printf("請輸入要查找的學歷:\n");
scanf("%s",xueli);
for(i=0;i
if(strcmp(em[i].xueli,xueli)==0)
{
printf("\n已找到,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
if(i==m)
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1, 繼續查詢學歷請按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();peak;
case 2:peak;
default :peak;
}
}
void search_tel()
{
long int tel;
int i, t;
int m=load();
printf("請輸入要查找的電話號碼:\n");
scanf("%ld",&tel);
for(i=0;i
if(tel==em[i].tel)
{
printf("\n已找到此人,其記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
peak;
}
if(i==m)
printf("\n對不起,查無此人\n");
printf("\n");
printf("返回查詢函數請按1, 繼續查詢電話號碼請按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();peak;
case 2:peak;
default :peak;
}
}
void sort(){/*排序*/
int i;
printf("請選擇關鍵字排列:1.工號 2. 年齡 3. 工資 ");
scanf("%d",&i);
while(i3){
printf("輸入有誤,請重新輸入:");
scanf("%d",&i);
}
switch(i)
{
case 1:
sort_num();peak;
case 2:
sort_age();peak;
case 3:
sort_wage();peak;
default:
peak;
}
}
void sort_num()
{
int len,i,j,t,m=load();
// memset((char *)&temp,0,sizeof(em));
for(i=0;i
for(j=1;j
if(em[i].num>em[j].num)
{
t=em[i].num;
em[i].num=em[j].num;
em[j].num=t;
}
display();
getchar();
}
void sort_age()
{
int i,j,t,m=load();
for(i=0;i
for(j=1;j
if(em[i].age>em[j].age)
{
t=em[i].num;
em[i].num=em[j].num;
em[j].num=t;
}
display();
getchar();
}
void sort_wage()
{
int i,j,t,m=load();
for(i=0;i
for(j=1;j
if(em[i].wage>em[j].wage)
{
t=em[i].num;
em[i].num=em[j].num;
em[j].num=t;
}
display();
getchar();
}
void modify() /*修改函數*/
{
int num;
char name[10];
char sex;
int age;
char xueli[30];
int wage;
char addr[30];
long int tel;
int b,c,i,n,t,flag;
int m=load(); /*導入文件內的信息*/
printf("\n 原來的職工信息:\n");
display(); /* 調用瀏覽函數*/
printf("\n");
printf("請輸入要修改的職工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始記錄為:\n");
printf("\n職工號\t姓名\t性別\t年齡\t學歷\t工資\t住址\t電話 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf("\n確實要修改此人信息請按1 ; 不修改請按0\n");
scanf("%d",&n);
if(n==1)
{
printf("\n需要進行修改的選項\n 1.職工號 2. 姓名 3. 性別 4. 年齡 5. 學歷 6. 工資 7. 住址 8. 電話\n");
printf("請輸入你想修改的那一項序號:\n");
scanf("%d",&c);
if(c>8||c
printf("\n選擇錯誤,請重新選擇!\n");
}
flag=0;
}
}
if(flag==1)
printf("\n對不起,查無此人!\n");
do
{
switch(c) /*因為當找到第i 個職工時,for 語句后i 自加了1, 所以下面的應該把改后的信息賦值給第i-1個人*/
{
case 1:printf("職工號改為: ");
scanf("%d",&num);
em[i-1].num=num;
peak;
case 2:printf("姓名改為: ");
scanf("%s",name);
strcpy(em[i-1].name,name);
peak;
case 3:printf("性別改為: ");
getchar();
scanf("%c",&sex);
em[i-1].sex=sex;
peak;
case 4:printf("年齡改為: ");
scanf("%d",&age);
em[i-1].age=age;
peak;
case 5:printf("學歷改為: ");
scanf("%s",xueli);
strcpy(em[i-1].xueli,xueli);
peak;
case 6:printf("工資改為: ");
scanf("%d",wage);
peak;
case 7:printf("住址改為: ");
scanf("%s",addr);
strcpy(em[i-1].addr,addr);
peak;
case 8:printf("電話改為: ");
scanf("%ld",&tel);
em[i-1].tel=tel;
peak;
}
printf("\n");
printf("\n是否確定所修改的信息?\n 是 請按1 ; 不, 重新修改 請按2: \n");
scanf("%d",&b);
}
while(b==2);
printf("\n瀏覽修改后的所有職工信息:\n");
printf("\n");
save(m);
display();
printf("\n繼續修改請按1,不再修改請按0\n");
scanf("%d",&t);
switch(t)
{
case 1:modify();peak;
case 0:peak;
default :peak;
1.1加強學生創新精神和創新意識的培養
傳統的教學模式使學生機械記憶、被動模仿,這抑制了學生的創新精神,要倡導以學生為主體的教學方法,改變填鴨式的上課方式,多采用靈活的、開放式、啟發式教學模式,如研討課、講座課、案例分析課等,并多采取現場教學、情景教學等教學方式。利用現代教學設備增大課堂教學的信息量,提高教學效果,通過網絡多媒體實現資源共享,通過雙語教學推進高等工程教育國際化;改革傳統的教學實踐內容,增強實踐環節,培養學生運用經驗與直觀判斷來解決工程問題的實踐能力,加強創新精神和創新意識的培養,讓大學生自己有機會去深入學習與思考。美國加州理工學院的瑪·卡門教授有句名言:科學家研究已有的世界,工程師創造未來的世界??梢?工程師的重要品質在于其創造和創新能力。在大工程的背景下,創造和創新能力更是成為工程管理教育的關鍵所在。因此,在課程設置和教學改革方面,應更加重視學生的個性化選擇,以使學生能夠在自身個性和興趣的基礎上,構建自身的知識結構,發展創造性和創新能力。
1.2加強工程管理專業學生的人文素質教育
管理學科是一門邊緣交叉學科,在實際工作中,需要融合多學科的成果。因為面對復雜的現代工程系統,工程師不可避免地涉及政治、經濟、文化等多方面的因素,這不是僅有狹窄的技術知識背景就能勝任的,解決現代工程問題要求工程師能夠打破學科壁壘,把被學科割裂開來的工程再還原為一個整體。這就要求高等工程教育在課程設置上要充分考慮學科的交叉與融合,要為學生提供綜合知識背景,以有利于復雜工程問題的解決。將工程倫理學,工程社會學,工程哲學等課程整合到工程教育的課程體系中來,加強學生的人文素質教育。有效地培養現代工程技術人才的組織管理能力、語言文字表達能力、協調能力等。因此,在工程管理教育的課程改革中要實現人文類課程,經濟類課程,法律類課程在工程教育課程體系中占有一定比例,而且應該將工程倫理、工程史學、經濟管理、生物學、哲學、法律等課程納入到必修課程體系中,在授課過程中要能夠與工程課程相整合,與工程技術相聯系。同時在課程改革過程中,也要注意不能矯枉過正,因為復合型人才是以專業知識、技能為基礎的復合,不能過分強調通才的培養而忽略專業知識的傳授。工程管理教育的目標仍應是培養專業人才,但要擴大適應面,以適應社會需要及應付各種變化的需要,實現從單一型專業人才到復合型通才的轉變。
1.3改革課程體系,培養學生的工程意識
工程管理在某種意義上本身就意味著實踐,工程管理教育所培養的人都是要去解決實踐問題的。但長期以來,在科學主義的影響下,工程管理教育也走上了學科化、學術化的道路。不能否認,工程管理教育的科學化使過去以經驗為基礎的工程管理教育向前管理邁進了一步,但是,這并不意味著工程管理教育可以忽視工程管理實踐。正是在這種意義上說,工程管理教育需要回歸工程的本來涵義。這就要求課程設置和教學改革要面向工程更加重視學生工程管理實踐能力的培養。對于那些過于注重課程自成體系,求全,求深,忽視基本原理的實際應用等傾向要加以認真改革,防止工程教育中理論與實踐相脫離的傾向,面向工程,回歸工程,重視學生的主動性和創造性,加強工程意識、工程實踐能力的培養,要在課程改革過程中重塑教育觀念,要面向工程對各類學科進行有機的重組,進行跨學科教育。只有這樣工程管理專業教育的整個過程才能實現全面質量管理,也才能使培養出來的學生滿足工程界乃至社會的需求。
1.4“習而學”教學模式
理論知識是實踐活動的準備和基礎,學習遵循從理性認識到感性認識的過程和規律。但是,從工程學科的特點來說,人的認知規律卻并不絕對服從于這個次序,因為工程實踐活動本身具有不依附于科學知識的獨立性。對于工程學科的學習來說“,情境化”的認知方式更符合學習者的特點。對這個問題,我國著名工程學家茅以升先生早在上世紀50年代就提出了著名的“習而學”模式。所謂“習”,是指在現場作業,其主要任務為修習技能及培養工程意識,但同時也要學習相關理論;所謂“學”,是指在課堂作業,其主要任務是修學理論,但同時也要修習相關技能。他認為“:學的對象是理論,習的對象是實踐。因此在學習里應求其統一。“習而學”是對“學而習”傳統模式的徹底改革。工程管理教育的理論課程教學與實踐課程教學如何進行?理論課與實踐課、基礎課與專業課的設置順序如何安排?這都是工程管理教育教學中非常重要也非常實際的問題。茅以升先生的“習而學”教學模式,是一種有異于人們慣常思維的課程設計思想,即主張:為了遵從工程教學的特性,實踐教學可以放在理論教學的前面,專業課程也可以在基礎課程前面設置。它的精髓在于理論與實際的緊密結合,其本質特征是強調實踐基礎上的理論化:先習后學,再習再學,實習與理論相結合。“習而學”模式的一個重要指導思想是強調習學交替,“習而學”模式給我們打破傳統的課程論思想、以新的視角重新審視教學改革和設置課程提供了方法論上的依據,提供了新的對策與思路,為從根本上解決我國高等工程管理教育長期存在的理論與實際脫節、科學與生產脫節的問題提供了一個獨特的解決路徑。
1.1加強學生創新精神和創新意識的培養
傳統的教學模式使學生機械記憶、被動模仿,這抑制了學生的創新精神,要倡導以學生為主體的教學方法,改變填鴨式的上課方式,多采用靈活的、開放式、啟發式教學模式,如研討課、講座課、案例分析課等,并多采取現場教學、情景教學等教學方式。利用現代教學設備增大課堂教學的信息量,提高教學效果,通過網絡多媒體實現資源共享,通過雙語教學推進高等工程教育國際化;改革傳統的教學實踐內容,增強實踐環節,培養學生運用經驗與直觀判斷來解決工程問題的實踐能力,加強創新精神和創新意識的培養,讓大學生自己有機會去深入學習與思考。美國加州理工學院的瑪·卡門教授有句名言:科學家研究已有的世界,工程師創造未來的世界??梢?,工程師的重要品質在于其創造和創新能力。在大工程的背景下,創造和創新能力更是成為工程管理教育的關鍵所在。因此,在課程設置和教學改革方面,應更加重視學生的個性化選擇,以使學生能夠在自身個性和興趣的基礎上,構建自身的知識結構,發展創造性和創新能力。
1.2加強工程管理專業學生的人文素質教育
管理學科是一門邊緣交叉學科,在實際工作中,需要融合多學科的成果。因為面對復雜的現代工程系統,工程師不可避免地涉及政治、經濟、文化等多方面的因素,這不是僅有狹窄的技術知識背景就能勝任的,解決現代工程問題要求工程師能夠打破學科壁壘,把被學科割裂開來的工程再還原為一個整體。這就要求高等工程教育在課程設置上要充分考慮學科的交叉與融合,要為學生提供綜合知識背景,以有利于復雜工程問題的解決。將工程倫理學,工程社會學,工程哲學等課程整合到工程教育的課程體系中來,加強學生的人文素質教育。有效地培養現代工程技術人才的組織管理能力、語言文字表達能力、協調能力等。因此,在工程管理教育的課程改革中要實現人文類課程,經濟類課程,法律類課程在工程教育課程體系中占有一定比例,而且應該將工程倫理、工程史學、經濟管理、生物學、哲學、法律等課程納入到必修課程體系中,在授課過程中要能夠與工程課程相整合,與工程技術相聯系。同時在課程改革過程中,也要注意不能矯枉過正,因為復合型人才是以專業知識、技能為基礎的復合,不能過分強調通才的培養而忽略專業知識的傳授。工程管理教育的目標仍應是培養專業人才,但要擴大適應面,以適應社會需要及應付各種變化的需要,實現從單一型專業人才到復合型通才的轉變。
1.3改革課程體系,培養學生的工程意識
工程管理在某種意義上本身就意味著實踐,工程管理教育所培養的人都是要去解決實踐問題的。但長期以來,在科學主義的影響下,工程管理教育也走上了學科化、學術化的道路。不能否認,工程管理教育的科學化使過去以經驗為基礎的工程管理教育向前管理邁進了一步,但是,這并不意味著工程管理教育可以忽視工程管理實踐。正是在這種意義上說,工程管理教育需要回歸工程的本來涵義。這就要求課程設置和教學改革要面向工程更加重視學生工程管理實踐能力的培養。對于那些過于注重課程自成體系,求全,求深,忽視基本原理的實際應用等傾向要加以認真改革,防止工程教育中理論與實踐相脫離的傾向,面向工程,回歸工程,重視學生的主動性和創造性,加強工程意識、工程實踐能力的培養,要在課程改革過程中重塑教育觀念,要面向工程對各類學科進行有機的重組,進行跨學科教育。只有這樣工程管理專業教育的整個過程才能實現全面質量管理,也才能使培養出來的學生滿足工程界乃至社會的需求。
1.4“習而學”教學模式
理論知識是實踐活動的準備和基礎,學習遵循從理性認識到感性認識的過程和規律。但是,從工程學科的特點來說,人的認知規律卻并不絕對服從于這個次序,因為工程實踐活動本身具有不依附于科學知識的獨立性。對于工程學科的學習來說“,情境化”的認知方式更符合學習者的特點。對這個問題,我國著名工程學家茅以升先生早在上世紀50年代就提出了著名的“習而學”模式。所謂“習”,是指在現場作業,其主要任務為修習技能及培養工程意識,但同時也要學習相關理論;所謂“學”,是指在課堂作業,其主要任務是修學理論,但同時也要修習相關技能。他認為“:學的對象是理論,習的對象是實踐。因此在學習里應求其統一。“習而學”是對“學而習”傳統模式的徹底改革。工程管理教育的理論課程教學與實踐課程教學如何進行?理論課與實踐課、基礎課與專業課的設置順序如何安排?這都是工程管理教育教學中非常重要也非常實際的問題。茅以升先生的“習而學”教學模式,是一種有異于人們慣常思維的課程設計思想,即主張:為了遵從工程教學的特性,實踐教學可以放在理論教學的前面,專業課程也可以在基礎課程前面設置。它的精髓在于理論與實際的緊密結合,其本質特征是強調實踐基礎上的理論化:先習后學,再習再學,實習與理論相結合?!傲暥鴮W”模式的一個重要指導思想是強調習學交替,“習而學”模式給我們打破傳統的課程論思想、以新的視角重新審視教學改革和設置課程提供了方法論上的依據,提供了新的對策與思路,為從根本上解決我國高等工程管理教育長期存在的理論與實際脫節、科學與生產脫節的問題提供了一個獨特的解決路徑。
2結束語
【關鍵詞】工業工程;管理信息系統;教學改革
一、工業工程專業特點及學生就業去向
工業工程專業是以生產過程為對象,以提高勞動生產率、保證質量和降低成本為目標,特別注重研究人的因素,充分發揮投入資源的作用。近年來,物流工程、虛擬制造、企業資源計劃、人力資源管理等成為該領域的熱點。工業工程專業培養的學生具有經濟、管理和系統工程的理論與方法,同時具備扎實的專業工程技術,是從事工業工程和管理的高級專業技術和管理人才。
其課程設置包括經濟管理類和工業技術類兩大部分。學生畢業后主要從事工業工程師等與工業工程有關的工作,在跨國公司、外資企業、國有、民營企業等從事管理工作,以提高生產率、降低成本。
二、《管理信息系統》課程的地位和作用
從工業工程專業的特性來看,管理信息系統雖然不是該專業的主干課程,但是隨著信息技術在各行各業的應用,通過各類管理信息系統的實施,有效提高了企業的管理水平和經濟效益。因此,管理信息系統已成為工業工程能夠在實際中充分發揮作用的有力支撐工具。
三、《管理信息系統》課程教學現狀及存在的問題
工業工程專業授課一般應結合實際案例,并經常讓學生到跨國公司、外資企業實習,參與實際工業項目的運作和管理。但由于時間和條件的限制,學生無法真正到企業調研并解決企業信息化課題。
課堂使用的教材的內容一般都比較理論化,有些概念、方法或理論看起來似乎很簡單,其實其真正的內涵只有通過信息系統的開發、實施的實踐經歷才能透徹地理解和把握;只有通過實踐才能了解不同管理信息系統的差別,掌握管理信息系統的實質。但對于工業工程的非計算機類學生,很多高校并未開設程序設計語言課程,致使《管理信息系統》的教學僅限于理論學習,紙上談兵,嚴重影響了學生學習興致和效果。
四、《管理信息系統》課程教學改革辦法
1.在教學體系上進行改革。管理信息系統是一門與管理學、計算機科學、系統科學、經濟學等多學科密切相關的綜合叉學科,是現代化管理觀念、方法與信息技術的結合體。它有一個重要的特性就是對相關知識的有序性要求比較高。因此,學生只有先具備了一定的背景知識,才有可能充分理解和掌握它的思想和方法。然而,目前我國高等院校管理信息系統課程開設的隨意性比較大,未能充分考慮學生的知識準備。有些高校在該課程設置上存在著該課程所必須的基礎知識明顯滯后的問題。這種現狀造成的結果是:一是給教師的課程講授帶來了較大難度,有的教師為了能讓學生順利地學習這門課,不得不花大量時間對相關知識進行補充和說明;二是不利于學生對知識的理解吸收,學生理解起來比較困難,難以學到該課程的實質內容。
由于管理信息系統學科的綜合交叉性較強,應該找準它在學生所學專業整個課程體系中的定位。開設該課程必須要考慮該學科對知識有序性的要求,有充分的先行課程作為基礎。
2.在教學理念上進行改革。管理信息系統對不同的專業的學生,要求是不一樣的,從工業工程專業的特性可以看出,對工業工程的專業人才來說,既要掌握一定的管理信息系統開發技術,又要掌握管理信息系統在實際應用中與管理相結合的運用方法。但是工業工程人員不同于專業的管理信息系統開發人員,不需要對系統的開發技術有深入的掌握,在實際工作中,主要是結合企業實際管理的需要,擔任管理信息系統的設計者、規劃者的角色,指導管理信息系統的開發和實施,以符合企業的管理實際。
所以,在教學過程當中,應當重點突出,主次分明,合理分配時間。
3.在教學方法和手段上進行改革。①課堂教學方法改革。管理學教學中很重要的方法是案例教學法。案例教學法不拘泥于嚴格的概念定義和精確的推理,采用以事實說話的方法收集現實的例子來說明問題,同時給學生在學習中以更大的自。許多學校的管理學教學,特別是工商管理碩士(MBA)教學的成功,證明案例教學是一種生動、有效的教學方法。但在管理信息系統的教學中,案例教學法并未得到廣泛的應用。
管理信息系統從本質上屬于管理學科,具有管理學科鮮明的實踐性特征,教學中要充分利用管理學教學中普遍應用的案例教學法。教師要精心組織或挑選適用授課對象特征的案例。通過師生互動和模擬教學,使學生全方位地參與系統開發的過程。
②加強課程設計環節,做到理論和實踐的有機結合。管理信息系統是一門實踐性很強的課程,學生動手能力的培養非常重要。必須安排充足的實驗課時,每次實驗要安排好實驗課題,安排學生進行指定的項目開發操作,最后組織學生進行總結。有條件的學校應該盡量安排學生深入企業調研和分析,并邀請有關工程技術、管理人員給予精心指導,為學生的生產實踐技能的提高和素質培養打下良好的基礎。
參考文獻:
[關鍵詞] 管理信息系統; 教學研究; 教學改革
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 09. 077
[中圖分類號] G642 [文獻標識碼] A [文章編號] 1673 - 0194(2012)09- 0123- 01
在經濟全球化、信息化的強烈沖擊下,社會經濟運行模式和企業管理方式都發生了根本的變革,信息和知識已經成為創造社會財富的戰略資源,信息系統在組織中的戰略地位和作用空前提高。信息系統不僅僅是支持組織日常管理的工具,也是進行組織改革、制度創新和知識創新的戰略舉措。因此掌握管理信息系統的基本原理和系統建設的基本方法,就成為現代管理者知識體系中的重要組成部分。管理信息系統課程正是為了滿足社會對管理信息系統專門人才的需求而設置的[1]。
隨著科學技術的發展,教育改革的深化,管理信息系統在概念、內容、體系上都發生了重大的變化,因此對管理信息系統課程的教學也提出了新的要求。因此有必要針對該課程的教學管理現狀進行分析,找出存在的問題,并進行行之有效的教學改革。
1 管理信息系統課程教學中存在的問題
(1) 課程體系復雜,學生知識儲備不足。管理信息系統是一門綜合管理科學、信息科學、系統科學、行為科學、計算機科學和通信技術的交叉性的邊緣學科,具有復雜性、理論性和實踐性相結合的特點。因此要求學生具備相應的知識儲備,而作為工商管理專業的學生,經濟和管理知識是他們特長,計算機知識相對薄弱,因此部分同學感覺課程內容深奧而難以理解,因此喪失了學習的興趣,表現為被動、應付式的學習,甚至產生厭煩心理,難以實現預期教學效果。
(2) 教材內容相似,缺乏針對性。管理信息系統作為一門管理類課程,而非技術類課程,具有兩層含義:面向管理的信息系統和信息系統的管理,兩方面均表明了管理信息系統應側重管理而非信息技術本身[2]。因此針對工商管理專業的學生,其授課內容和重點也應有所區別。而國內大部分教材的內容、體系大致相似,知識陳舊,在內容安排和案例設計上缺少針對性和創新性,此外教材內容的相對穩定性和知識更新的快速性也構成了教學過程的主要矛盾。
(3) 理論教學和實踐教學難融合。從教學方法來看,該門課程主要以講授法為主,案例分析法、討論法和實踐法結合為輔。由于學生缺乏對企業實際生產運營管理的了解,因此在學習過程中,總是由于缺乏感性知識,而被動地接受新知識,不能很好地理解管理信息系統是如何在企業中發揮支持決策作用的。例如在介紹MRP的基本思想、原理以及如何利用信息技術改變傳統的生產方式和競爭戰略時,由于學生不了解制造業的生產流程,所以在講授該部分內容時,就需要教師傳遞大量相關信息輔助學生理解。究其原因,就是由于理論教學和實踐教學難融合。
2 管理信息系統教學改革思路
針對以上問題,我們結合管理信息系統課程的特點提出了教學改革思路。
2.1 合理設置先導課程,教師加強引導
由于管理信息系統課程對相關知識的有序性要求比較高,因此該課程一般設置在第六或第七學期開課較為合理,這樣才能保證學生在學習過程中將相關知識進行綜合,充分理解該學科的基本思想和脈絡。
在授課過程中,教師要適當地引導學生,采用多種教學手段和教學方法,培養學生的學習興趣,及時地對課堂教學內容進行總結、反饋。例如通過課前回顧上次課程的重點內容,課中對相關知識點進行串聯,選擇恰當合理的案例進行分組討論,課后安排閱讀資料和案例鞏固學習內容等方式來調動學生的學習主動性,并根據學生的反饋意見及時調整自己的教學方案和進度。此外,授課教師還可以根據授課效果向學生推薦參考書目、學術期刊和相關網站輔助學生課后擴大視野,真正做到以人為本,提高教學效果。
2.2 選擇符合專業培養要求的教材
根據工商管理專業培養目標所選用的教材,內容應側重于管理信息系統的基本概念、基本理論,并初步掌握系統分析、設計、實施和評價的方法以及開發過程的管理,并適當增加管理信息系統如何將先進的管理思想、方法、手段與現代信息技術相結合,以及如何對企業的決策起支持作用等相關內容。
管理信息系統是信息技術和管理理論緊密結合的科學,隨著計算機技術和管理理論的發展,要求教師應該將相關理論的發展前沿和趨勢納入到課程教學過程中,如:新的網絡技術、通信技術、開發工具、柔性制造思想、供應鏈思想等。
2.3 完善實踐教學體系
管理信息系統的課程特點要求理論和實踐相結合,加強理論教學效果和培養學生的實際操作能力。通過組織學生到實際企業進行調研,了解企業生產經營的基本流程,以及管理信息系統是如何提供信息支持組織內的各級管理者進行決策[3]。例如通過安排學生上機操作了解ERP系統中的財務子系統、采購子系統、銷售子系統、生產子系統等功能模塊,通過實際操作了解企業相應的業務流程,企業的管理功能如何利用信息系統加以實現等內容。
本文通過對工商管理專業管理信息系統課程教學現狀的深入分析,揭示了目前該課程在教學過程中所存在的諸多問題,并針對各個具體問題提出了教學改革的思路,旨在克服目前教學過程中存在的弊端,提高教學效果,實現教學目標。
主要參考文獻
[1] 黃梯云,李一軍. 管理信息系統[M]. 第4版. 北京:高等教育出版社,2009.
一、管理信息系統課程的理論基礎與體系結構
從系統的角度,管理科學為基礎,信息技術及計算機技術優化管理工作。遵從軟件工程的原則,開發運行穩定、質量可靠、互動性好的MIS軟件系統,配置合適的硬件環境,構建新的管理信息系統,涉及硬件技術、軟件技術、網絡技術、數據庫技術和管理開發過程的項目管理、質量管理和網絡技術。
項目管理包括配置管理、質量管理和人力資源管理等。規劃階段進行可行性研究,涉及技術經濟學方面的指示,如投資分析。分析階段,涉及管理信息系統、系統論、管理學、組織行為學等方面的知識;設計階段涉及管理信息系統、系統論、管理學和通信網絡技術;實施階段涉及軟件技術、數據庫技術、網絡技術和配置管理、測試管理。管理信息系統與其他學科之間的關系如下圖所示。
■
二、工商管理類專業管理信息系統課程教學體系
結合管理信息系統課程的理論基礎和體系結構,結合現有文獻提出的管理信息系統改革方法,提出以下改革建議。根據工商管理類專業的特點,減少MIS開發方法和開發過程所占的比例,添加MIS與企業競爭優勢、MIS管理、經管領域MIS應用等知識模塊。工商管理類專業MIS理論教學內容主要包括以下四部分:
(一)管理信息系統基礎理論篇
1.管理信息系統基本概念:信息、系統、信息系統以及管理信息系統的概念,管理信息系統的發展歷程。
2.管理信息系統理論基礎:管理理論、信息論、系統論、控制論、行為科學、數學以及運籌學等基礎理論學科的把握。
3.管理信息系統的分類:基于管理層次的分類、基于管理職能結構的分類、信息資源的空間分類以及技術架構分類。
4.管理信息系統的系統結構:概念結構、層次結構、功能結構、軟件結構和硬件結構。
(二)管理信息系統的開發基礎篇
1.管理信息系統的技術基礎:計算機硬件系統、計算機軟件系統。
2.管理信息系統的開發條件:企業業務流程分析與企業業務改革,領導的支持與參與。
3.系統的開發方法:結構化開發方法、原型法、面向對象的開發方法和計算機輔助工程。
4.數據庫技術基礎:概念模型、關系模型、概念模型和關系模型的轉換、關系模型的規范化。
5.通信與網絡:數據通信與計算機網絡。
(三)系統開發與管理篇
1.管理信息系統規劃:管理信息系統規劃的必要性、目標、內容與組織管理,管理信息系統規劃模型,系統規劃的主要方法。
2.管理信息系統的分析:系統分析的目標、任務及步驟,系統詳細調查與分析,新系統邏輯方案的建立。
3.管理信息系統的設計:系統設計的任務與原則,系統功能結構設計、系統配置方案設計、系統流程設計、代碼設計、數據庫設計。
(四)典型應用篇
1.生產管理信息系統:生產管理系統的發展、物料需求計劃、制造資源計劃、企業資源計劃。
2.決策支持系統:決策支持系統的概述,決策支持系統的發展歷程,決策支持系統功能與支持,智能決策支持系統,群體決策支持系統。
3.電子商務:電子商務的概念、分類,電子商務的應用框架,電子商務中的支付,電子商務的安全問題。
三、工商管理類專業管理信息系統課程教學改革建議
課程教學改革尤其是教學內容改革具有必要性和迫切性。一些文獻分析了管理信息系統教學中存在的問題,并從不同角度提出了教學改革的措施和方法,如梁妍和王知強針對信息管理系統學科的特點,對管理信息系統的教材、實踐教學、教學方法、教師素質等方面進行了改革研究。
關于教學方法已有較多研究,如討論法、案例法、項目驅動法、自主實驗法等。管理信息系統是管理科學、系統科學、應用數學、計算機科學和通訊技術等多學科綜合發展起來的邊緣學科,它既具有較深和較寬的理論基礎,又是一門實踐性很強的學科。在教學過程中,應結合學生的特點,在教學內容上避免以純理論和純技術的觀點描述信息系統,而應將信息技術、管理方法和組織行為有機地結合起來,從管理和應用的角度介紹信息系統。在教學手段上應多采用課堂討論、案例分析、實際系統調查等加強對信息系統的整體認識,結合上述教學內容提出一種專題討論和案例啟發相結合的教學法。
(一)并非課程全部內容均適合采用這種教學方法,可根據教學實際從上述四部分內容中選取一些作為案例討論的專題。如管理信息系統對管理的影響,管理信息系統與企業競爭優勢、企業信息安全、管理信息系統成敗的因果等。
(二)建議對學生分組,如每組4-5人,小組式任務安排可使任務量合理化,學生間團結協作。
(三)針對專題內容,選擇有針對性。本土化的新穎案例可由教師指定或由學生小組自行確定。
(四)為保障教學效果,要求學生課前認真準備。
如,講解管理信息系統成敗原因分析這一專題時,安排學生準備企業管理信息系統建設成功或失敗的案例。學生分小組準備資料和課后在課堂討論互動,教師引導和啟發學生思考:通過成功案例總結管理信息系統成功的經驗有哪些?通過失敗案例分析失敗的教訓是什么?如何準確把握企業信息系統的需求?如何確定信息系統的開發策略?如何分析和選擇軟件供應商等,最終由教師總結歸納管理信息系統成功的關鍵因素。這種教學方法注重營造開放、互動的課堂氣氛,引導和鼓勵學生主動思考,激發學生學習的積極性和能動性,培養信息化環境下自主學習的能力,有助于提高學生的綜合素質,培養團結協作精神。
四、結論
如果對于案例教學的方法沒有深入的了解和研究,很多人會將案例教學當做是教師講述理論概念后的故事舉例,進而總結結論,再要求學生提交閱讀案例的心得,而實際上,案例教學是以具體問題為學習和討論的焦點,選擇貼近現實的問題要求學生分析并提出解決方案的學習過程。在案例教學中,學了什么并不重要,重要的是學生在尋求解決方案的過程中認知能力和解決問題能力得到提升,學生挖掘隱含在案例之內的知識點的過程更是一個深化知識理解和掌握的過程,希望以上的探討能起到拋磚引玉的作用。
參考文獻:
[1]鄧三鴻,許鑫,王昊,等.案例教學在管理信息系統課程中的實踐探討[J].現代教育技術,2012(22):120-125.
[2]徐生菊,徐升華.經管類專業《管理信息系統》課程教學改革研究[J].圖書館學研究,2012(1):7-11.
【關鍵詞】應用技術型本科 管理信息系統 教學改革
管理信息系統能夠幫助企業提高效率和效益,幫助企業獲得戰略資源,企業管理信息系統建設已經成為衡量企業信息化的重要標志之一[1]。隨著我國信息化的推進,我國企業需要大量既懂信息系統又懂行業知識的復合型人才。因此,以應用技術型高校人才培養目標為中心,在新的人才培養理念的基礎上,進行管理信息系統課程教學改革,對于實現教學目標,滿足企業人才需求具有重要意義。
一、應用技術型本科
《現代職業教育體系建設規劃(2014~2020年)》中指出,應用技術類型本科是直接服務區域經濟社會發展,以舉辦本科職業教育為重點,融職業教育、高等教育和繼續教育于一體的新型大學。應用技術型本科是近年來我國為了適應經濟發展、科學進步、產業升級,高等教育大眾化發展需要建立起來的,是相對于傳統“理論型”和“學術型”人才培養模式而言的,具有創新性、職業性、應用性等特征[2]。應用技術型本科定位于培養高層次應用技術類人才,培養符合經濟社會需要的技術技能人才。
二、管理信息系統課程教學現狀
從培養高層次應用技術型人才的角度分析傳統管理信息系統課程教學,可以發現其中存在很多問題,這些問題主要表現在:
(一)課程內容缺乏針對性與職業需求不匹配
隨著信息技術的飛速發展和管理理念不斷創新,管理信息系統在概念、內容、體系上都發生了重大的變化,但是管理信息系統教材更新比較慢,且不同的專業,講授基本相同的知識,課程內容與專業結合不緊密,缺乏必要的針對性,無法滿足職業需求。
(二)先修課程教多,學生的知識儲備不足,實踐環節薄弱
管理信息系統是一門集管理科學、計算機科學、系統科學等為一體的綜合性、交叉性課程。工程管理類專業學生對行業管理知識了解較多,但是計算機知識較為薄弱。學生知識儲備不足,開展實踐教學困難,對很多知識的掌握會僅僅停留在對概念的理解上,很難學以致用。
(三)師資缺乏
復合型人才培養要求管理信息系統教師應具備多學科知識,然而一般來說高校教師只具備單一的專業背景,而且大部分教師信息系統開發經驗較少,“雙師型”教師短缺直接影響管理信息系統課程教學質量。
傳統的教學模式無法滿足高層次應用技術型人才培養的需求,應用技術型本科管理信息系統課程教學改革勢在必行。
三、高層次應用技術型人才培養新要求
近年來,隨著高等教育結構調整,很多本科院校向應用技術型轉型。應用技術型本科在人才培養過程中要求課程內容與職業標準對接,教學過程與生產過程對接。應用技術型高校的很多工程管理類專業將管理信息系統作為專業核心課程列入培養方案,滿足了企業對復合型管理信息系統人才的需求,但是也對管理信息系統課程教學提出了新的要求。
(一)教學內容和職業需求相匹配、與行業知識相結合
隨著我國產業結構不斷優化,就業形式也在不斷發生變化。傳統行業就業人數減少,高端產業和新興產業就業人數增加,對勞動力素質要求更高,對于動手能力高超、創造能力突出、適應能力極強的高技能型人才需求極大。因此,管理信息系統教學內容的設置要注重培養學生的動手能力、創造能力和適應能力。
(二)教學方法和崗位實踐、職業培訓相對接
高層次應用技術型人才要求具備更多的專用性人力資本。專用性人力資本的積累大多來自于崗位實踐和職業培訓。高校教育培養的更多的是通用性人力資本。目前,我國高等教育比較容易使學生出現通用性人力資本過剩,但專用性人力資本缺乏的現象[3]。因此,在管理信息系統教學過程中,應該引入崗位實踐和職業培訓,使人才培養與產業升級過程中人才需求相適應。
四、高層次應用技術型人才培養觀念下管理信息系統課程教學改革思路
針對管理信息系統教學現狀以及高層次應用技術性人才要求,可以從教學理念、教學內容、教學方法等方面開展教學改革。
(一)改善師資水平,引入協同教學理念
所謂協同教學(team teaching),就是多位教師組成教學團隊,共同策劃和執行某門課程教學的教學形式。可以由不同專業的教師和企業的高級專業技術人員共同組成教學團隊,改變一位教師負責的狀況,可以發揮教學團隊的優勢,提高教學質量[4]。管理信息系統課程教學團隊可以包括具有行業背景的教師、計算機專業背景的教師和企業中系統開發人員(外聘)組成。在教學中培養學生的同時,鍛煉教師隊伍。
(二)整合教學內容
針對專業特色,制定教學內容。例如交通運輸專業的學生管理信息系統課程,側重點應該以物流管理系統、道路實時監測系統等作為案例。重視先修課程的開設,設置課程組,壓縮各課程理論教學學時,注重實踐環節。
(三)引入“項目驅動”式教學方法
項目驅動教學方法是指師生共同完成一個具有實際意義的項目,該方法能夠將理論知識與實踐結合起來,加深對理論知識的理解,激發學生學習興趣。在管理信息系統教學過程中引入一個典型的、完整的、具有使用價值的項目,讓學生分組由導師帶領實際進行系統調查、系統分析、系統設計等環節,實踐過程中的需求驅動理論知識學習,培養學生的實踐能力。
五、總結
高層次應用技術型人才培養要求使得管理信息系統課程教學改革勢在必行,通過引入“協同教學”的教學理念和“項目驅動”的教學方法、針對專業特色整合教學內容可以提高學生的學習興趣、實踐能力、創新能力,夯實學生的理論知識。從而使學生能夠適應社會發展帶來的產業升級、行業變化,滿足用人單位對復合型管理信息系統人才的需求。
參考文獻
[1]薛華成.管理信息系統[M].北京:清華大學出版社,2011.
[2]張典兵.應用技術型高校創新人才培養的問題審思[J].教育與職業:研究與探索,2015(16):18-21.