當前位置:首頁 » 編程語言 » 教師工作量管理系統c語言

教師工作量管理系統c語言

發布時間: 2023-05-10 09:02:39

Ⅰ :職工工作量統計系統設計.用c語言編程

#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double much,sum;
public:
stu()
{
}
stu(char n[20],double muc)
{
strcpy(name,n);
much=muc;
}
double getsum()
{
sum=much;
return sum;
}
friend void main();
};

void main()
{
cout<<"請選擇您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)職工數據錄入"<<endl;
cout<<"(1)增加職工人員"<<endl;
cout<<"(2)刪除職工人員"<<endl;
cout<<"(3)新完成的需要添加的產品數量數據"<<endl;
cout<<"查詢:"<<endl;
cout<<"(4)按總產品數量查詢"<<endl;
cout<<"(5)按職工姓名查詢"<<endl;
cout<<"(6)輸出所有職工的數據"<<endl;
cout<<"生產量排名名次"銷襪<<endl;
cout<<"(7)按職工生產的總產品數量查詢排名"<<endl;
cout<<"選擇相關操作請輸入相對的括弧里的阿拉伯數字!"<弊斗升<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令錯誤!請重新輸入:"<<endl;
}while(flag2==0);
do{
switch(p)
{
case '0':
{
char c;
char name[20];double much;
do{
cout<<"請輸入職工姓名"<<endl;
cin>>name;
cout<<"請輸入產品數量:"<<endl;
cin>>much;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"產品數量"<<much<<endl;
j++;
s[i]=new stu(name, much);
i++;
cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '1':
{
char name[20];double much;
char c;
do
{
cout<<"請輸入您要增加的職工的姓名:"<<endl;
cin>>name;
cout<<"請輸入產品數量"<<endl;
cin>>much;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"產品數量"<<much<<endl;
j++;
s[i]=new stu(name, much);
i++;
cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤租老!請重新輸入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2':
{
char name[20];bool flag3=0;char c;
do{
cout<<"請輸入您要刪除的職工姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求刪除的對象本來就不存在!請檢查輸入的正確性!";
cout<<"要繼續刪除嗎?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];double mat;flag2=0;
char c;
do
{
cout<<"請輸入您要修改的職工的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"請輸入新完成的產品數量:"<<endl;
cin>>mat;
s[h]->much+=mat;
cout<<"數據添加成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的職工本來就不存在!請檢查重新輸入!"<<endl;
}
cout<<"想繼續修改嗎(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}

case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"請輸入你要查詢職工的總產品數量"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查詢的職工是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"對不起!您要查詢的職工不存在!"<<endl;
cout<<"您想繼續查詢嗎?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}

case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"請輸入你要查詢的職工姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查詢的職工是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的總產品數量是"<<(*s[j]).getsum()<<endl;
}
}
if(flag==0)
cout<<"對不起!您要查詢的職工不存在!"<<endl;
cout<<"您想繼續查詢嗎?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}

case '6':
{
cout<<"本系統所有職工數據如下:"<<endl;
if(i==0)
cout<<"管理系統中沒有錄入數據或者數據已經被刪除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<"總產品數量:"<<" "<<(*s[k]).getsum() <<endl;
}
break;
}
case '7':
{
int t;stu b;

cout<<"本系統所有職工排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系統中沒有錄入數據或者數據已經被刪除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"總產品數量:"<<" "<<s[k]->getsum() <<endl;
}
break;
}

case '9':
{
int t;stu b;

cout<<"本系統所以職工總產品數量排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->much)<(s[y]->much))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系統中沒有錄入數據或者數據已經被刪除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"產品數量:"<<" "<<s[k]->getsum() <<endl;
}
break;
}
}

cout<<"您想繼續進行其他操作嗎?(y/n)"<<endl;
bool flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令錯誤!請重新輸入!"<<endl;
else
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"請輸入操作代碼:(0)職工數據錄入;(1)增加職工人員; (2)刪除職工人員; (3)新完成需要添加的產品數量數據; (4)按總產品數量查詢; (5)按職工姓名查詢; (6)輸出所有職工的數據; (7)按職工生產的總產品數量查詢排名"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"刪除所有數據成員"<<endl;
}

}

Ⅱ C語言的實訓項目發幾個,謝謝

案例一 貪吃蛇游戲
案例二 計算器
案例三 黑白棋游戲
案例四 迷宮問題
案例五 掃地雷游戲
案例六 速算24
案例七 數據結構CAI系統
案例八 進程調度
案例九 存儲管理分區分配演算法
案例十 通訊錄
案例十一 學生成績管理
案例十二 工資管理
案例十三 圖書借閱管理
案例十四 教師工作量計算

Ⅲ C語言的,幫我編一下.謝謝了

主要是1、2題哇???那我就開工了,直接輸入的,沒經過編譯,自己查一下錯。
第一題:
#define MAX 0
#define MIN 1
float fun(float a[],float maxmin[])
{int i;
float average,s=0.;
maxmin[MAX]=maxmin[MIN]=a[0];
for(i=0;i<N;i++)
{s+=a[i];
if(a[i]>maxmin[MAX])maxmin[MAX]=a[i];
if(a[i]<=maxmin[MIN])maxmin[MIN]=a[i];
}
average=s/N;
return average;
}//返回的是平均分,主函數定義一個數組maxmin[2]存放兆譽虧最高分和最低分

第二題:
e.....好像n久前做過一次,找找...
哈哈,拿分拿分!!
#include<math.h>
#include<stdio.h>族神
float avxue(float (*p)[4],int n)
{int i;
float s=0,average;
for(i=0;i<4;i++)
s+=*(*(p+n)+i);
average=s/4;
return(average);
}

float avke(float (*p)[4],int n)
{float s=0,average;
int i;
for(i=0;i<4;i++)
s+=*(*(p+i)+n);
average=s/4;
return(average);
}

notpass(char *name[],float (*p)[4])
{int i,j,k,s,y=0;
float *q;
printf("\n\nThe one who did not pass twice :\n");
for(i=0;i<4;i++)
{q=*(p+i);s=0;
for(j=0;j<4;j++)
if(*(*(p+i)+j)<60)s+=1;
if(s>=2)
{y=1;
printf("%-8s ",name[i]);
for(k=0;k<4;k++)
printf("%4.2f ",*(q+k));
printf("\n");
}
}
if(y==0)printf("none!!");
}

good(char *name[],float (*p)[4])
{int i,j,k,s,x,y=0;
float *q;
printf("\n\nThe one whose average >90 or whose all >85:\n");
for(i=0;i<4;i++)
{q=*(p+i);s=0;x=0;
for(j=0;j<4;j++)
{s+=*(*(p+i)+j);
if(*(*(p+i)+j)>=85)x+=1; }
if((s>=360)||(x==4))
{y=1;
printf("%-8s ",name[i]);
for(k=0;k<4;k++)
printf("%4.2f ",*(q+k));
printf("\n");
}
}
if(y==0)printf("none!!");
}

main()
{float a[4][4]={{88,92,94,72},{99,89,88,100},{68,48,57,71},{86,87,88,97}};
float (*p)[4];
int i,j;
float average[4],average_k[4];
float s=0;
char *kecheng[]={"Math","Chinese","English","C++","average"};
char *name[]={"Smith","Billy","虛橘Bill","Tom"};
sqrt(0);
p=a;

for(i=0;i<4;i++)
{average[i]=avxue(p,i);
average_k[i]=avke(p,i);
}
printf("\t");
for(i=0;i<5;i++)
printf("%-8s",kecheng[i]);
printf("\n\n");
for(i=0;i<4;i++)
{printf("%-8s",name[i]);
for(j=0;j<4;j++)
printf("%-8.2f",*(*(p+i)+j));
printf("%-5.2f\n",average[i]);
printf("\n\n");
}
printf("average ");
for(i=0;i<4;i++)
printf("%-8.2f",average_k[i]);

notpass(name,p);

good(name,p);

getch();
printf("\n\nplz change the parameters yourself!and site my answer be the best answer!thx!\npress any key to exit!");
}

Ⅳ C語言課程設計題目

例:學生管理系統設計
設計內容:
詳見視頻,要求數據結構用鏈表,數據存儲使用文件。

計算每個老師在一個學期中所教課程的總工作量。(教師單個教學任務的信息為:教師號、姓名、性別、職稱、認教課程、班級、班級數目、理論課時、實驗課時、單個教學任務總課時)
A、教師信息處理
(1) 輸入教師授課教學信息,包括教師號、姓名、性別、職稱、認教課程、班級、班級數目、理論課時、實驗課時。
(2) 插入(修改)教師授課教學信息:
(3) 刪除教師授課教學信息:
(4) 瀏覽教師授課教學信息:
B、教師工作量數據處理:
(1) 計算單個教學任務總課時。計算原則如下表:

(2) 計算一個教師一個學期總的教學工作量。總的教學工作量=所有單個教學任務總課時之和。
(3)教師數據查詢:
提示:輸入教師號或其他信息,即讀出所有數據信息,並顯示出來。
C、教師綜合信息輸出
提示:輸出教師信息到屏幕。

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

該系統是一個進行選擇題測試的考試系統,具有測試、練習功能,具有系統設置功能,具有查分和幫助功能。
一、功能要求:
1、用文件保存試題庫。(每個試題包括題干、4個備選答案、標准答案)
2、試題錄入:可隨時增加試題到試題庫中
3、試題抽取:每次從試題庫中可以隨機抽出N道題及每題的得分K(N、K由鍵盤輸入)。
4、可以設置考試時間。
5、用戶可以選擇「考試」和「練習」兩種方式。
5、答題:用戶可實現輸入自己的答案,「考試」時系統不能顯示答案。「練習」時每一題都可以通過查看「按鈕」顯示標准答案。可以用「上一題」、「下一題」翻頁。選擇「交卷」按鈕則顯示得分;
6、自動判卷:系統可根據用戶答案與標准答案的對比實現判卷並給出成績。
7、考試開始系統顯示倒計時。時間為零自動交卷。
二、其它要求:
1、源程序要有適當的注釋,使程序容易閱讀
2、至少採用文本菜單界面(如果能採用圖形菜單界面更好)
3、學生可自動增加新功能模塊(視情況可另外加分)
4、寫出課程設計報告,具體要求見相關說明文檔

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
設計一個簡單的英語字典,輸入英語單詞,顯示中文含義,設計要求:

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
設計一個學生通信錄,學生通迅錄數據信息構成內容可自行設計(如:姓名、家庭地址、郵政編碼、電話號碼等等)。該學生通信錄電話簿管理程序具有加入、刪除、顯示和查詢等功能。
設計要求:
1、 能建立、修改和增刪學生通訊錄
2、 具有群組工能,可以增加群組和記錄。
3、 刪除可以刪除一條、一個群組、全部記錄。
4、 查詢包含模糊查詢。
5、 顯示可以以頁面和列表方式顯示。
6、 有自動排序的功能。
7、 要求:界面友好,易於操作,採用文件存儲數據。

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

[設計內容]
實現一個完整的小型音像店對錄像帶進行管理的系統。
[設計要求]
系統要求具有以下功能:
(1) 管理音像店中的所有錄像帶,包括新錄像帶入庫、錄像帶出租、錄像帶的返還、所有錄像帶清單的顯示、根據指定條件進行查找刪除錄像帶等各種基本操作。
(2) 客戶數據維護,可以將客戶分為不同等級,可以根據指定客戶顯示其所借錄像帶詳細信息。
(3) 租金管理,根據所借日期自動計算所需交納的租金。
(4) 系統要求界面美觀,菜單設計合理,操作方便。
[實驗提示]
音像店有兩個主要的組成部分:錄像帶和客戶。可以構造3個鏈表存儲以下數據:
(1) 商店中所有錄像帶的鏈表;
(2) 商店所有客戶的鏈表;
(3) 當前已出租的錄像帶鏈表;

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

[設計內容]
航空客運訂票的業務活動包括:查詢航線、客票預定和辦理退票等。設計一個航空訂票系統實現上述功能。
[設計要求]
(1) 將每條航線的有關信息存入計算機,如:終點站名、航班號、飛機號、飛行周日(星期幾)、時間、乘員定額、余票量、票價,已定票客戶名單和等候替補客戶名單(包括姓名,所需票數);
(2) 查詢航線:根據旅客提出的終點站名輸出下列信息:航班號、飛機號、星期幾飛、最近一天航班的日期和余票量。
(3) 訂票:根據客戶提出的要求(航班號、訂票數額)查詢該航班票額情況,若尚有餘票,則為客戶辦理訂票手續;若已滿員或余票額少於訂票額,則需重新詢問客戶要求。若需要,可登記排隊候補;
(4) 退票:根據客戶提供的情況(日期、航班),為客戶辦理退票手續,然後查詢該航班是否有人排隊候補,首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續,否則依次詢問其他候補客戶。
發揮想像,增加新的功能,完善系統。
系統要求界面美觀,菜單設計合理,操作方便。

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

[設計內容]
某旅館有n個等級的房間,第I等級有 個房間,每個等級的房間有 個床位(1≤i≤n)。試模擬旅館管理系統中床位分配和回收的功能,設計能為單個旅客分配床位,在其離店便回收床位(供下次分配)的演算法。
[設計要求]
(1) 旅客登記,即為旅客分配床位。輸入旅客姓名、年齡、性別、到達日期和所需房間等級。分配成功時列印旅客姓名、年齡、到達日期、房間等級、房間號碼和床位號碼。分配不成功時,如所有等級均無床位,則列印「客滿」信息;如旅客需要的等級均無空床位,則列印「是否願意更換等級?」的詢問信息。若旅客願意更換,則重新輸入有關信息,再進行分配,否則分配工作結束。
(2) 旅客離開時,即進行床位回收。輸入房間等級、房間號和床位號。

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
職工信息包括職工號、姓名、性別、年齡、學歷、工資、住址、電話等(職工號不重復)。
設計要求:
1、系統以菜單方式工作
2、職工信息錄入功能(職工信息用文件保存)--輸入
3、職工信息瀏覽功能--輸出
4、職工信息查詢功能--演算法
查詢方式
按學歷查詢等
按職工號查詢等
5、職工信息刪除、修改功能(可選項)
6、按工號排序

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
圖書信息包括:書號、書名、作者名、分類號、出版社、出版時間、價格等。
設計功能:
1、系統以菜單方式工作
2、圖書信息錄入功能(圖書信息用文件保存)--輸入
3、圖書信息的編輯功能(插入、刪除、修改)
4、圖書信息瀏覽功能(按書號、書名、出版時間、價格等排序輸出)。
5、圖書信息查詢功能(按書號、書名、作者名、出版社查詢,提供模糊查詢的功能)

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
實驗設備信息包括:設備編號,設備種類(如:微機、列印機、掃描儀等等),設備名稱,設備價格,設備購入日期,是否報廢,報廢日期等。
設計功能:
1、能夠完成對設備的錄入和修改
2、對設備進行分類統計
3、設備的破損耗費和遺損處理
4、設備的查詢
要求:採用文件方式存儲數據,系統以菜單方式工作

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
設計一個學生選修課程系統,假定有n門課程,每門課程有:課程編號,課程名稱,課程性質(公共課、必修課、選修課),總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少於60)自由選課。
設計功能:
1、系統以菜單方式工作
2、課程信息錄入功能(課程信息用文件保存)--輸入
3、課程信息的編輯功能(插入、刪除、修改)
4、課程信息瀏覽功能(按課程編號、課程名稱、總學時、學分等排序輸出)。
5、課程信息查詢功能(按課程編號、課程名稱、課程性質、開課學期等查詢,提供模糊查詢的功能)
6、學生選修課程
7、學生選課信息查詢

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
某公司有四個銷售員(編號:1-4),負責銷售五種產品(編號:1-5)。每個銷售員都將當天出售的每種產品各寫一張便條交上來。每張便條包含內容:1)銷售員的代號,2)產品的代號,3)這種產品的當天的銷售額。每位銷售員每天上繳1張便條。試設計一個便條管理系統。
設計功能:
1、系統以菜單方式工作
2、便條信息錄入功能(便條信息用文件保存)--輸入
3、收集到了上個月的所有便條後,讀取銷售情況
1)計算每個人每種產品的銷售額。
2)按銷售額對銷售員進行排序,輸出排序結果(銷售員代號)
3)統計每種產品的總銷售額,對這些產品按從高到底的順序,輸出排序結果(需輸出產品的代號和銷售額)(可選項)

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

設計內容:
設計出模擬手機通信錄管理系統,實現對手機中的通信錄進行管理。
設計功能:
(1)查看功能:選擇此功能時,列出下列三類選擇。
A.辦公類 B.個人類 C.商務類,當選中某類時,顯示出此類所有數據中的姓名和電話號碼)
(2)增加功能:能錄入新數據
一個結點包括:姓名、電話號碼、分類(A 辦公類 B 個人類 C 商務類)、電子郵件)。
例如: 楊春 13589664454 商務類 [email protected]
當錄入了重復的姓名和電話號碼時,則提示數據錄入重復並取消錄入;當通信錄中超過15條信息時,存儲空間已滿,不能再錄入新數據;錄入的新數據能按遞增的順序自動進行條目編號。
(3)拔號功能:
能顯示出通信錄中所有人的姓名,當選中某個姓名時,屏幕上模擬打字機的效果依次顯示出此人的電話號碼中的各個數字,並伴隨相應的拔號聲音。
(4)修改功能:
選中某個人的姓名時,可對此人的相應數據進行修改
(5)刪除功能:
選中某個人的姓名時,可對此人的相應數據進行刪除,並自動調整後續條目的編號。

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

每個教師的信息為:教師號、姓名、性別、單位名稱、家庭住址、聯系電話、基本工資、津貼、生活補貼、應發工資、電話費、水電費、房租、所得稅、衛生費、公積金、合計扣款、實發工資。註:應發工資=基本工資+津貼+生活補貼;合計扣款=電話費+水電費+房租+所得稅+衛生費+公積金;實發工資=應發工資 - 合計扣款。
A、教師信息處理
(1) 輸入教師信息
(2) 插入(修改)教師信息:
(3) 刪除教師信息:
(4) 瀏覽教師信息:
提示:具體功能及操作參考題1。
B、教師數據處理:
(1) 按教師號錄入教師基本工資、津貼、生活補貼、電話費、水電費、房租、所得稅、衛生費、公積金等基本數據。
(2) 教師實發工資、應發工資、合計扣款計算。
提示:計算規則如題目。
(3) 教師數據管理
提示:輸入教師號,讀出並顯示該教師信息,輸入新數據,將改後信息寫入文件
(4) 教師數據查詢:
提示:輸入教師號或其他信息,即讀出所有數據信息,並顯示出來。
(5) 教師綜合信息輸出
提示:輸出教師信息到屏幕。

鏈接: https://pan..com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
提取碼: 1111

Ⅳ c語言課程設計—教師工作量管理系統源代碼

#include<stdio.h> //標准輸入、輸出頭文件
#include<string.h> //包含字元串函數處理頭文件
#include<stdlib.h> //包含動態存儲與釋放函數頭文件
#include<iostream> // system
#define TEALEN sizeof(teanode) //教師信息結構體長度
#define LEN sizeof(Lnode) //鏈表罩和旁節點長度
#define MAX 10
int SAME[MAX];

typedef struct teanode
{
char name[10]; //教師姓名
int lesson; //授課工作量
int exper; //實驗工作量
int cdesign; //課程設計工作量
int gdesign; //物橡畢業設計工作量
int total; //總工作量
int pos; //排序位置
}teanode,*linknode;//教師信息結構體

typedef struct Lnode
{
char no[20]; //教師編號
linknode info; //節點信息詳細指針指向教師信息結構體
struct Lnode *prior,*next; //雙向鏈表指針域
}Lnode,*linklist;//鏈表節點

void newLnode();
void initlist();
void prin();

void initlist(linklist *T)
{
*T=(linklist)malloc(LEN);
(*T)->info=(linknode)malloc(TEALEN);//為頭結點申請空間
(*T)->prior=*T;//設置頭結點的前驅指針
(*T)->next=*T;//設置頭結點的後繼指針
}//初始化雙向循環鏈表

void newLnode(linklist*p)
{
*p=(linklist)malloc(LEN);//新節點
if(!p)
{
printf("申請節點失敗");
exit(0);
}
(*p)->info=(linknode)malloc(TEALEN);
}

void prin(linklist * L)
{

if(L==NULL)
{
printf("沒有可以顯示的信息棚宴\n");
return;
}
linklist p=(*L)->next;
// printf("********************************************************************************\n");
printf("教師編號 教師姓名 工作量排名 工作總量\n\n");
while (p!=*L)
{

printf("%7s%9s%10d%10d\n",p->no,p->info->name,p->info->pos,p->info->total);
p=p->next;
}
}

void main()
{
linklist input(linklist L);
linklist sort(linklist L);
int j;//用來判斷是否結束
linklist L;
initlist(&L);

do{
system("cls");//清屏函數
printf(" ★--- 您好,歡迎進入教師工作量統計系統! ---★\n");
printf("================================================================================\n");
printf( " -------- ☆ 1.輸入教師工作量信息 ☆-------- \n\n"
" -------- ☆ 2.進行教師工作量排序 ☆-------- \n\n"
" -------- ☆ 3.顯示教師工作量情況 ☆-------- \n\n"
" -------- ☆ 0.退出 ☆-------- \n\n");
printf("================================================================================\n");
printf("請在0-3中選擇以回車鍵結束:\n\n");
scanf("%d",&j);
switch(j) {
case 1:
L=input(L);
prin(&L);
printf("錄入結束\n");
system("pause");
break;

case 2:
L=sort(L);
printf("排序成功\n");
system("pause");
break;
case 3:
prin(&L);
system("pause");
break;
case 0:;
break;
}
}while(j!=0);
printf("謝謝使用,再見!\n");
}//主函數結束

linklist input(linklist L)
{
linklist workload(linklist p);
linklist adworkload(linklist p);
linklist searinsert(linklist L,linklist p);
linklist sort(linklist L);
int flag=0;
char no[10];
linklist p;

p=L->next;
for(;;)
{
if(flag==1)
break;
printf("請輸入教師編號輸入@結束:\n\n");
scanf("%s",no);
if(no[0]=='@')
{
flag=1;
break;
}

while (p!=L)//當鏈表不空時
{
if (strcmp(p->no,no)==0)
{
printf("該教師編號已存在,輸入需要增加的工作量\n\n");
p->prior->next=p->next;
p->next->prior=p->prior;//刪除P,
p=adworkload(p);//修改P中的詳細信息info指針域的內容
L=searinsert(L,p);//重新查找P的位置插入鏈表L中

return L;
}
p=p->next;
}//跳出循環則該教師編號第一次輸入
newLnode(&p);
strcpy(p->no,no);
printf("請輸入教師姓名:\n");
scanf("%s",p->info->name);
p=workload(p);
L=searinsert(L,p);
}
return L;
}
linklist adworkload(linklist p)
{
int a;
printf("請輸入增加的授課工作量:\n");
scanf("%d",&a);
p->info->lesson+=a;

printf("請輸入增加的實驗工作量:\n");
scanf("%d",&a);
p->info->exper+=a;

printf("請輸入增加的課程設計工作量:\n");
scanf("%d",&a);
p->info->cdesign+=a;

printf("請輸入增加的畢業設計工作量:\n");
scanf("%d",&a);
p->info->gdesign+=a;

//p->info->pos=0;

p->info->total=p->info->lesson+p->info->exper+p->info->cdesign+p->info->gdesign;//求總工作量
return p;
}

linklist workload(linklist p)
{
printf("請輸入該教師的授課工作量:\n");
scanf("%d",&(p->info->lesson));

printf("請輸入該教師的實驗工作量:\n");
scanf("%d",&(p->info->exper));

printf("請輸入該教師的課程設計工作量:\n");
scanf("%d",&(p->info->cdesign));

printf("請輸入該教師的畢業設計工作量:\n");
scanf("%d",&(p->info->gdesign));

p->info->pos=0;

p->info->total=p->info->lesson+p->info->exper+p->info->cdesign+p->info->gdesign;//求總工作量
return p;
}

linklist searinsert(linklist L,linklist p)
{//將P放置L中合適的位置

linklist tra;//遍歷指針
linklist x;//P插入位置的前一個節點指針
tra=L->next;//指向第一個節點
if ((L->next==L)||(p->info->total>tra->info->total)) //第一次插入或者大於表頭的情況
{
x=L;//插入表頭
}
else if (p->info->total<L->prior->info->total) //小於表尾的情況
{
x=L->prior;//插入表尾
}
else
{ while (p->info->total<tra->info->total)
tra=tra->next;
x=tra->prior;//正常查找情況
}
//將P接到X後面
p->next=x->next;
p->prior=x;
x->next=p;
p->next->prior=p;
return L;
}

linklist sort(linklist L)
{
linklist sortfisrtlast(linklist L,linklist first,linklist last,int n);
int i;
for(i=0;i<MAX;i++)
SAME[i]=0;//初始化數組SAME[MAX]

linklist p,first,last;
int x,n=1,k;
p=L->next;

while (p!=L)
{

x=1;
while ((p->next->info->total!=p->info->total)&&p!=L)
{
p->info->pos=n;
p=p->next;
n++;
}
if (p==L)
return L;
else

while ((p->next->info->total==p->info->total)&&p!=L)
{
k=n;
if (x==1)
{
//k=n;
first=p;
}
p->info->pos=k;
x++;
p=p->next;

p->info->pos=k;
//保存X
SAME[k]=x;
}
n+=x-1;
if (p==L)
return L;
else
{
last=p;
p=last->next;
L=sortfisrtlast(L,first,last,k);//調用fisrt last函數
}
}
}
linklist sortfisrtlast(linklist L,linklist first,linklist last,int n)
{
if (first==last)
return L;
linklist head,posa,posb,p,t;
linklist tra;//遍歷指針
linklist x;//P插入位置的前一個節點指針
posa=first->prior;//接入位置a
posb=last->next;//接入位置b
posa->next=last->next;
last->next->prior=posa;
last->next=NULL;
first->prior=NULL;//刪除這段
initlist(&head);
p=first;
while (p!=NULL)
{
tra=head->next;
if ((head->next==head)||strcmp(p->no,tra->no)<0)//第一次插入或者小於當前節點
x=head;
else if (strcmp(p->no,head->prior->no)>0)
x=head->prior;
else
{
while(strcmp(p->no,tra->no)>0)
tra=tra->next;
x=tra->prior;
}
t=p;//將P接到X後
p=p->next;
t->next=x->next;
t->prior=x;
x->next=t;
t->next->prior=t;

}
printf("********************************************************************************\n");
// printf("================================================================================\n");
printf("工作量名次相同的教師名單:(按編號排序)\n\n");
printf("名次為%d教師共有%d名\n\n",n,SAME[n]);
prin(&head);
first=head->next;
last=head->prior;

posa->next=first;
first->prior=posa;

posb->prior=last;
last->next=posb;
return L;
}

Ⅵ c語言編程:使用單鏈表建立一個簡易教師工作量表,要求:

代碼如下:

#include<stdio.h>
#include<assert.h>
#include<stdlib.h>

#define芹漏MAX_NAME_LENGTH11

typedefstructteacher*tea;
structteacher{

longnum;/*職工號*/
intwkld;/*工作量*/
charname[MAX_NAME_LENGTH];/*姓名*/
teanext;/*指向下一個節點的指針*/
};
/*
*復制字元串函數
*/
voidmy_strncpy(char*str,charconst*dest,size_tn){

assert(dest!=NULL);

while(n--){

*str++=*dest++;
}
*str='';
}
/*
*創建節點,使用頭插法
*/
staticteacreate_tea(teahead,longconstnum,
intconstwkld,charconst*name){

teanode;

node=(tea)malloc(sizeof(structteacher));
if(node==NULL){

perror("Memory");
exit(1);
}
node->num=num;
node->wkld=wkld;
/*
*若name長度大於MAX_NAME_LENGTH,
*則按MAX_NAME_LENGTH-1算,留一個結束符。
*/
my_strncpy(node->name,name,
strlen(name)>(MAX_NAME_LENGTH-1)?(MAX_NAME_LENGTH-1):strlen(name));
node->next=head;
head=node;
returnhead;
}
/*
*查找工作量大於某工作量的節點,列印其職工號工號,姓名和工作量
*/
staticvoidfind_wkld(teahead,intconstwkld){

printf("工作量大於%d的教職工如下 ",wkld);
printf("職工號 姓名 工作量 ");
while(head!=NULL){

if(head->wkld>wkld){

printf("%ld %s %d ",head->num,head->name,head->wkld);
}
head=head->next;
}
}
/*
*delete_tea函數的特殊情況處理
*/
staticteadelete_head(teahead,intlen){

teatemp;
do{

temp=head->next;
free(head);
head=temp;
}while((--len)&&(head!=NULL銷攜));
returnhead;
}
/*
*從鏈表的第i個節點開始連刪len個節點,
*若不夠len個節點,則從第i個節點開始刪到表尾
*/
staticteadelete_tea(teahead,inti,intlen){

teahead_buf=head;
teasurplus_head,surplus_end;
/*
*先將指針指向第i個節點,
*若鏈表長度小於i,則不刪除任何節點
*一個特殊情況,如果從第一個節點開始刪除
*則需要特殊處理
*/
assert(head!=NULL);
if(i--==1){

returndelete_head(head,len);
}
while(--i){

if(head==NULL){

returnNULL;
}
head=head->next;
}
/*
*開始執行刪除節嫌斗爛點操作
*/
surplus_head=head;
surplus_end=head->next;
while(len--){

if(surplus_end==NULL){

break;
}else{

head=surplus_end->next;
free(surplus_end);
surplus_end=head;
}
}
/*
*連接剩餘的節點,
*若節點不夠,則surplus_end=NULL。
*/
surplus_head->next=surplus_end;
returnhead_buf;
}
/*
*列印教職工信息
*/
staticvoidprint_tea(teahead){

printf("職工號 姓名 工作量 ");
while(head!=NULL){

printf("%ld %s %d ",head->num,head->name,head->wkld);
head=head->next;
}
}
/*
*鏈表最後應該要釋放,養成習慣
*/
staticvoidfree_tea(teahead){

teatemp=head;
assert(head!=NULL);/*該函數可以去了解一下*/
while(head!=NULL){

head=head->next;
free(temp);
temp=head;
}
}

intmain(void){

intn;
inti;
/*
*初始化信息
*/
longnum=12345;
intwkld=8;
charname[MAX_NAME_LENGTH]="Teachaaaaa";
charch='b';
teahead=NULL;
teatemp;
/*開始*/
printf("請輸入要錄入的教職工人數:");
scanf("%d",&n);
/*
*自動錄入信息
*如果要改成數據為手動輸入在這里添加代碼即可
*並把原來的這兩行注釋掉
*/
for(i=0;i<n;i++){

head=create_tea(head,num++,wkld++,name);
name[9]=ch++;
}
temp=head;
printf("教職工信息表如下 ");
print_tea(head);
printf("請輸入要查找的工作量:");
scanf("%d",&n);
find_wkld(head,n);
printf("請輸入要刪除的起始節點和結束節點(空格隔開):");
scanf("%d%d",&i,&n);
head=delete_tea(head,i,n);
printf("刪除之後的教職工信息如下 ");
print_tea(head);

free_tea(head);
return0;
}

結果:

有疑問可以追問。

有用點採納,謝謝!

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:713
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:978
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:687
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:840
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:745
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1085
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:314
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:194
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:882
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:841