學生選修課程設計總結
㈠ 關於學生選課管理系統的資料庫課程設計報告
http://www.shiep.e.cn/yuanxishe/jgx/mis/newsxp/htm/k2.htm
㈡ 學生課程系統設計
你的那個還算好的 我們現在做的課程設計更煩,如果可以等到11號,可以給你啦
㈢ 學生選修課程設計系統流程圖
我認為 機械設計與製造一:機械製造及其自動化主幹學科:力學、機械工程。 主要課程:工程力學、機械設計基礎、電工與電子技術、微型計算機原理及應用、機械工程材料、製造技術基礎。 主要實踐性教學環節:包括軍訓,金工、電工、電子實習,認識實習,生產實習,社會實踐,課程設計,畢業設計(論文)等,一般應安排40周以上。 機械設計製造及其自動化專業 業務培養目標: 業務培養目標:本專業培養具備機械設計製造基礎知識與應用能力,能在工業生產第一線從事機械製造領域內的設計製造、科技開發、應用研究、運行管理和經營銷售等方面工作的高級工程技術人才。 業務培養要求:本專業學生主要學習機械設計與製造的基礎理論,學習微電子技術、計算機技術和信息處理技術的基本知識,受到現代機械工程師的基本訓練,具有進行機械產品設計、製造及設備控制、生產組織管理的基本能力。 畢業生應獲得以下幾方面的知識和能力: 1. 具有較扎實的自然科學基礎、較好的人文、藝術和社會科學基礎及正確運用本國語言、文字的表達能力; 2.較系統地掌握本專業領域寬廣的技術理論基礎知識,主要包括力學、機械學、電工與電子技術、機械工程材料、機械設計工程學、機械製造基礎、自動化基礎、市場經濟及企業管理等基礎知識; 3.具有本專業必需的制圖、計算、實驗、測試、文獻檢索和基本工藝操作等基本技能; 4.具有本專業領域內某個專業方向所必要的專業知識,了解其科學前沿及發展趨勢; 5.具有初步的科學研究、科技開發及組織管理能力; 6.具有較強的自學能力和創新意識。 機械設計與製造專業:一、培養目標 培養具有計算機輔助設計製造能力,能從事機械設計製造、設備的生產、維護調試和管理的高級技術應用性專門人才。 二、業務范圍 在機械製造領域,從事CAD/CAM設計、製造,設備管理工作。也可在機電部門從事高級職業技術工作。 三、知識能力結構 本專業學生應具有機械設計與製造,機械設備的操作、調試、維護和管理等基本能力。受到應用型專門技術人才的基本訓練。 四、主幹學科 機械工程、數控技術 五、核心課程 機械制圖、工程力學、機械設計基礎、電工電子技術、液壓與氣動、機械製造設備、機械製造技術、模具設計、計算機輔助設計與輔助工藝管理、數控加工技術、現代機械製造技術。 六、專業方向及特色 專業方向為機械設計與製造。以數控加工技術為主要特色。 七、教學進程計劃與學分(學時)要求 (一)學分(學時)要求,所需修滿的學分及課內總學時(含必修、限選和任選),詳見表1。 (二)必修課教學指導性進程計劃,見表2。 (三)限選課教學指導性進程計劃,見表3。 (四)任選課教學指導性進程計劃,見表4。 (五)實踐教學指導性進程計劃,見表5。 (六)等級考核與職業技能鑒定項目,見表6。 (七)指導性學期課程負荷見表7。 (八)學歷見表8。 八、課程配置流程與專業能力流程 課程配置流程圖,見圖1。專業能力流程圖,見圖2。 九、教學組織 1.必修課按教學計劃規定的教學進程開設。 2.限選課按表3進程計劃進行,學生應按限選大類中所含的課程在規定的學期內修滿學分。 3.任選課按教學計劃安排的學期開出,供學生選擇,第一學期不設選修課,從第二學期開始設置。每名學生必須在上一學期末提出選修的課程,若提出的某門課程的人數少於規定(選課人數應≥15人)的要求,則暫不開設。但應按表4在限定的時間內修滿規定的任選學分。 4.凡單獨開設的技能、實訓、實驗及課程設計等課程按表5進行,考核合格均計學分。 5.所開設的專題討論和課外活動,按表1在規定的時間內完成,經考核合格者,均可獲得學分。 6.學生必須參加規定的外語、計算機等國家等級必考項目考核(試)與職業技能鑒定任選項目的考核(試),按表6規定進行,考核(試)合格者,均可獲得規定的學分。 十、成績考核 1.每學期所開設課程(包括實踐教學環節)均應進行考試或考查,考試課程成績達到60分,考查課(按五級分制進行)達到3分以上,可取得該課程學分。 2.每學期期末考試科目不得超過4門,考試方法可採取開卷、口試、筆試、無紙化、大型作業、論文、等多種形式進行。技能實訓等課程
㈣ C語言課程設計 學生選課管理系統流程圖+心得
在word裡面畫啊,可以用插入圖畫,自己畫各種框圖。
冒泡排序:
(數字都是序號
1~9
為
第一到第九個數字
假如
一共9個數字比較)
1
和
2
比較
小於就交換位置
然後
1
和
3
比較
小於就交換位置
然後
1
和
4
比較
小於就交換位置
然後
......
1
和
9
比較
小於就交換位置
然後
2
和
3
比較
小於就交換位置
然後
2
和
4
比較
小於就交換位置
然後
......
2
和
9
比較
小於就交換位置
然後
3
和
4
比較
小於就交換位置
然後
3
和
5
比較
小於就交換位置
然後
....
...
8
和
9
比較
小於就交換位置
全部結束
所得序列從小到大排列
快速排列:
第一個數
跟
整個序列中間一個數比較
要是小於
就在跟前半段中間個數比較
要是又大於
就跟前半段中的後半段中間個數比較
來確定位置
如:
1
跟
(1+9)/2
比較
小於就繼續跟
(1+5)/2比較
大於就跟(5+9)/2比較
然後(假設是小於)
1跟(1+5)/2比較
又大於
那麼繼續1跟(3+5)/2比較
要是
1大於4那麼交換位置
然後第二段:
2
跟
(1+9)/2比較
小於就繼續跟
(1+5)/2比較
大於就跟(5+9)/2比較
以此類推...
9跟(1+5)/2
比較........
Dim
i
As
Integer'定義循環變數
Dim
num(1
To
20)
As
Integer'保存隨機數
Dim
max
As
Integer,
min
As
Integer'保存最大值和最小值
Me.Show
'
max
=
0:
min
=
100
'初始化
Randomize
Timer
'
For
i
=
1
To
20
num(i)
=
Fix(Rnd()
*
100)
+
1
If
num(i)
>
max
Then
max
=
num(i)
If
num(i)
<
min
Then
min
=
num(i)
Print
num(i);
Next
i
Print
Print
max
Print
min
㈤ 急!求C語言學生選修課程系統設計的源代碼!以及課程設計報告書!
這種東西到處都有, 抄一個就可以了, 我給你找了一個沒有用戶圖形界面的, 可以自己用MFC進行包裝
設計題目 學生成績管理系統
已知技術參數和設計要求
現有學生成績信息文件1(1.txt),內容如下
姓名 學號 語文 數學 英語
張明明 01 67 78 82
李成友 02 78 91 88
張輝燦 03 68 82 56
王露 04 56 45 77
陳東明 05 67 38 47
…. .. .. .. …
學生成績信息文件2(2.txt),內容如下:
姓名 學號 語文 數學 英語
陳果 31 57 68 82
李華明 32 88 90 68
張明東 33 48 42 56
李明國 34 50 45 87
陳道亮 35 47 58 77
…. .. .. .. …
試編寫一管理系統,要求如下:
1、 實現對兩個文件數據進行合並,生成新文件3.txt
2、 抽取出三科成績中有補考的學生並保存在一個新文件4.txt
3、 對合並後的文件3.txt中的數據按總分降序排序(至少採用兩種排序方法實現)
4、 輸入一個學生姓名後,能查找到此學生的信息並輸出結果(至少採用兩種查找方法實現)
5、 要求使用結構體,鏈或數組等實現上述要求.
採用多種方法且演算法正確者,可適當加分.
設計內容與步驟 1、 結點結構的設計
2、 演算法設計與分析
3、 程序設計、實現、調試
4、 課程設計說明書
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
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<<"(8)按語文查詢排名"<<endl;
cout<<"(9)按數學查詢排名"<<endl;
cout<<"(y)按英語查詢排名"<<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 math,chinese,english;
do{
cout<<"請輸入姓名"<<endl;
cin>>name;
cout<<"請輸入數學成績:"<<endl;
cin>>math;
cout<<"請輸入語文成績:"<<endl;
cin>>chinese;
cout<<"請輸入外語成績:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"數學成績"<<math<<"語文成績"<<chinese<<"外語成績"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
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 '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<<"平均成績是:"<<(*s[j]).getaver()<<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 '1':
{
char name[20];double math,chinese,english;
char c;
do
{
cout<<"請輸入您要增加的學生的姓名:"<<endl;
cin>>name;
cout<<"請輸入數學成績:"<<endl;
cin>>math;
cout<<"請輸入語文成績:"<<endl;
cin>>chinese;
cout<<"請輸入外語成績:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"數學成績"<<math<<"語文成績"<<chinese<<"外語成績"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
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,chin,eng;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;
cout<<"請輸入新的語文成績:"<<endl;
cin>>chin;
cout<<"請輸入新的外語成績:"<<endl;
cin>>eng;
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
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 '6':
{
cout<<"本系統所有學生數據如下:"<<endl;
if(i==0)
cout<<"管理系統中沒有錄入數據或者數據已經被刪除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"語文:"<<" "<<s[k]->chinese<<"數學:"<<" "<<s[k]->math
<<"外語:"<<" "<<s[k]->english<<"總分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<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]->chinese<<"數學:"<<" "<<s[k]->math
<<"外語:"<<" "<<s[k]->english<<"總分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case '8':
{
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]->chinese)<(s[y]->chinese))
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]->chinese<<"數學:"<<" "<<s[k]->math
<<"外語:"<<" "<<s[k]->english<<"總分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<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]->math)<(s[y]->math))
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]->chinese<<"數學:"<<" "<<s[k]->math
<<"外語:"<<" "<<s[k]->english<<"總分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case 'y':
{
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]->english)<(s[y]->english))
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]->chinese<<"數學:"<<" "<<s[k]->math
<<"外語:"<<" "<<s[k]->english<<"總分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<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 錄入/4 按總分查詢/5 按姓名查詢/1 增加人員/2 刪除人員/3 修改數據/6 顯示所有成員數據/7 按總分排名/8 按語文排名/9按數學排名/y按英語排名)"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"delete all members!"<<endl;
}
}
㈥ 學生選修課程系統設計
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
typedef struct subjects
{
int num;
char na[10];
char teacher[20];
char wtime[10];
char ttime[10];
int score;
struct subjects *next;
}SUB;
SUB *create_form()
{
SUB *head,*tail,*p;
int num,score;
char na[10],teacher[20],wtime[10],ttime[10];
head=tail=NULL;
printf(" 輸入選課程信息,以6個0結束:\n");
printf(" 課程代碼 課名 任教老師 上課星期 上課時間 學分\n");
scanf("%d%10s%14s%10s%8s%6d",&num,&na,&teacher,&wtime,&ttime,&score);
while(num!=0)
{
p=(SUB*)malloc(sizeof(SUB));
p->num;
strcpy(p->na,na);
strcpy(p->teacher,teacher);
strcpy(p->wtime,wtime);
strcpy(p->ttime,ttime);
p->score=score;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
scanf("%d%s%s%s%s%d",&num,&na,&teacher,&wtime,&ttime,&score);
}
tail->next=NULL;
return head;
}
void savefile(SUB*head)
{
SUB *p;
FILE *fp;
fp=fopen("subjects.txt","w");
fprintf(fp,"歡迎進入東華理工大學2008-2009學年選修課系統(4-13)\n");
fprintf(fp,"課程代碼 課名 任教老師 上課星期 上課時間 學分\n");
for(p=head;p;p->next)
fprintf(fp,"%6d%10s%14s%10s%8s%6d",p->num,p->na,p->teacher,p->wtime,p->ttime,p->score);
fclose(fp);
}
void prin(SUB *head)
{
SUB *p;
if (head==NULL)
{
printf("沒有選修課程記錄!\n");
return;
}
printf("歡迎進入東華理工大學2008-2009學年選修課系統(4-13)\n");
printf("課程代碼 課名 任教老師 上課星期 上課時間 學分\n");
for(p=head;p;p->next)
printf("%6d%10s%16s%12s%12s%d",p->num,p->na,p->teacher,p->wtime,p->ttime,p->score);
}
SUB *inset(SUB *head)
{
SUB *ptr,*ptr2,*subj;
char ch, ch1;
printf("是否進行插入課程,如果需要插入請按回車建,不進行按空格結束!\n");
ch=getchar();
while(ch!=' '){
subj=(SUB*)malloc(sizeof(SUB));
ptr=subj;
printf(" 輸入要插入的課程信息:\n");
scanf("%d%s%s%s%s%d",subj->num,subj->na,subj->teacher,subj->wtime,subj->ttime,subj->score);
if(head==NULL){
head=ptr;
head->next=NULL;
}
else{
for(ptr2=head;ptr2;ptr2=ptr2->next)
if(ptr2->next==NULL){
ptr2->next=subj;
subj->next=NULL;
break;
}
ch='a';
}
printf("繼續請按回車建,結束請按空格:\n");
ch1=getchar();
ch=getchar();
}
return head;
}
SUB *del(SUB *head)
{
SUB*p1,*p2;
char ch,ch1;
int num;
printf("是否進行課程刪除,要刪除請按回車鍵,不進行請按空格:\n");
ch=getchar();
while(ch!=' ')
{
printf("輸入要刪除的課程代碼:\n");
scanf("%d",&num);
if(head->num==num){
p2=head;
head=head->next;
free(p2);
}
if(head==NULL)
return NULL;
p1=head;
p2=head->next;
while(p2!=NULL){
if(p2->num==num){
p1->next=p2->next;
free(p2);
}
else
p1=p2;
p2=p1->next;
}
printf("繼續刪除請按回車鍵,結束請按空格:\n");
ch1=getchar();
ch=getchar();
}
return head;
}
typedef struct student
{
int number;
int classes;
char chinesename[16];
char title [5][12];
struct student *other;
}STU;
void scanf_form(SUB *head)
{
int i,count,number,classes;
char ch,title[3][12],chinesename[16];
scanf("%d%d%16s",&number,&classes,&chinesename);
for(i=0;i<5;i++)
{
scanf("%s",&title[i]);
count++;
if(count==3)
{
ch=getchar();
if(ch!=' ')
{title[3][12]='0';
title[4][12]='0';
i=5;
ch='a';
}
}
if(count==4)
{
ch=getchar();
if(ch!=' ')
{title[4][12]='0';
i=5;
ch='a';
}
}
for(i=0;i<5;i++)
{
if(strcmp(title[i][12],head->na)!=0 && title[i][12]!='0')
{ printf("你輸入的課程名不正確,請從新輸入:\n");
scanf_form();
}
}
}
}
STU *study_form(SUB*head)
{
STU *hand,*tall,*q;
int i;
char ch,ch1;
hand=tall=NULL;
printf("輸入你個人信息,及選修的課名,以4個0結束:\n");
printf("註:每個學生至少選修3門課,大於3門時按回車鍵繼續,空格結束:\n");
scanf_form();
while(number!=0)
{
q=(STU*)malloc(sizeof(STU));
q->number=number;
q->classes=classes;
strcpy(p->chinesename,chinesename);
for(i=0;i<5;i++)
strcpy(p->title[i],title[i][12]);
if(hand=NULL)
hand=q;
else
tall->other=q;
tall=q;
scanf_form();
for(i=0;i<5;i++)
{
if(strcmp(title[i][12],head->na)!=0&&titli[i][12]!='0')
{ printf("你輸入的課程名不正確,請從新輸入:\n");
scanf_form();
}
}
tall->other=NULL;
return hand;
}
}
void savefiles(STU*hand)
{
STU *q;
FILE *fq;
fq=fopen("studennt.txt","w");
fprintf(fq, "學生選課信息表:\n");
for(q=hand;q;q=q->other)
fprintf(fq,"%16d%10d%16s%16s%16s%16s%16s%16s",q->number,q->classes,q->chinesename,q->title[0],q->title[1],q->title[2],q->title[3],q->title[4]);
fclose(fq);
}
void prins(STU*hand)
{
STU *q;
if(head==NULL)
{
printf("沒有學生選課信息記錄!\n");
return;
}
printf("學生選課信息一覽表:\n");
printf("學號 班級 姓名 課名 :\n");
for(q=hand;q;q->number)
printf("%16d%10d%16s%16s%16s%16s%16s%16s",q->number,q->classes,q->chinesename,q->title[0],q->title[1],q->title[2],q->title[3],q->title[4]);
}
STU *intserts(SUB*head,STU *hand)
{
STU *prt,*prt2,*stuj;
int i;
char ch,ch1;
printf("是否要進行插入學生選課信息,如果需要請按回車建,結束請按0:\n");
ch=getchar();
while(ch!=' ')
{
stuj=(STU*)malloc(sizeof(STU));
prt=stuj;
printf("輸入要插入的學生選課信息:\n");
scanf_form();
if(hand==NULL)
{hand=prt;
hand->other=NULL;
}
else
{for(prt2=hand;prt2;prt2=prt2->other)
if(prt2->other==NULL)
{prt2->other=stuj;
stuj->other=NULL;
break;
}
ch='a';
}
printf("繼續插入請按回車建,結束請按空格:\n");
ch1=getchar();
ch=getchar();
}
return hand;
}
STU *dells(STU *hand)
{
STU *q1,*q2;
char ch,ch1;
int number;
printf("是否進行學生選課信息刪除,要刪除請按回車建,不進行請按空格:\n");
ch=getchar();
while(ch!=' ')
{
printf("輸入要刪除的學號:\n");
scanf("%d",&number);
if(hand->number==number)
{
q2=hand;
hand=hand->other;
free(q2);
}
if(hand=NULL)
return NULL;
q1=hand;
q2=hand->other;
while(q2)
{if(q2->number==number)
{q1->other=q2->other;
free(q2);
}
else
q1=q2;
q2=q1->other;
}
printf("繼續刪除請按回車建,結束請按空格:\n");
ch1=getchar();
ch1=getchar();
}
return hand;
}
void search(STU*hand)
{
int a,number;
int t=1;
char type[10],ch,ch1;
STU *prt;
printf("是否進入查詢,按回車鍵進入,空格結束:\n");
ch=getchar();
while(ch!=' ')
{
printf("請輸入要查詢的學號:\n");
for(prt=hand;prt;prt=prt->other)
{
if(number=prt->number)
{printf("%16d%10d%16s%16s%16s%16s%16s%16s",prt->number,prt->classes,prt->chinesename,prt->title[0],prt->title[1],prt->title[2],prt->title[3],prt->title[4]);
t=0;
}
if(t!=0)
printf("未找到!\n");
t=1;
}
printf("繼續查找請按回車鍵,結束請按空格鍵:\n");
ch1=getchar();
ch=getchar();
}
}
void main()
{
SUB *head=create_form() ;
savefile(head);
prin(head);
head= inset(head);
head= del(head);
STU *hand=study_form(head);
savefiles(hand);
prins(hand);
hand=intserts(head,hand);
hand=dells(hand);
search(hand);
}
㈦ 學生成績管理系統 課程設計實習報告
學生成績管理(c語言版)
/*11.3.2 源程序*/
/***********xuesheng.c***********/
/******頭文件(.h)***********/
#include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*其它說明*/
#include "string.h" /*字元串函數*/
#include "conio.h" /*屏幕操作函數*/
#include "mem.h" /*內存操作函數*/
#include "ctype.h" /*字元操作函數*/
#include "alloc.h" /*動態地址分配函數*/
#define N 3 /*定義常數*/
typedef struct z1 /*定義數據結構*/
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
/*以下是函數原型*/
STUDENT *init(); /*初始化函數*/
STUDENT *create(); /*創建鏈表*/
STUDENT *delete(STUDENT *h); /*刪除記錄*/
void print(STUDENT *h); /* 顯示所有記錄*/
void search(STUDENT *h); /*查找*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*讀入記錄*/
void computer(STUDENT *h); /*計算總分和均分*/
STUDENT *insert(STUDENT *h); /*插入記錄*/
void append(); /*追加記錄*/
void (); /*復制文件*/
STUDENT *sort(STUDENT *h); /*排序*/
STUDENT *index(STUDENT *h); /*索引*/
void total(STUDENT *h); /*分類合計*/
int menu_select(); /*菜單函數*/
/******主函數開始*******/
main()
{
int i;
STUDENT *head; /*鏈表定義頭指針*/
head=init(); /*初始化鏈表*/
clrscr(); /*清屏*/
for(;;) /*無限循環*/
{
switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/
{ /*值不同,執行的函數不同,break 不能省略*/
case 0:head=init();break; /*執行初始化*/
case 1:head=create();break; /*創建鏈表*/
case 2:head=delete(head);break; /*刪除記錄*/
case 3:print(head);break; /*顯示全部記錄*/
case 4:search(head);break; /*查找記錄*/
case 5:save(head);break; /*保存文件*/
case 6:head=load(); break; /*讀文件*/
case 7:computer(head);break; /*計算總分和均分*/
case 8:head=insert(head); break; /*插入記錄*/
case 9:();break; /*復制文件*/
case 10:head=sort(head);break; /*排序*/
case 11:append();break; /*追加記錄*/
case 12:head=index(head);break; /*索引*/
case 13:total(head);break; /*分類合計*/
case 14:exit(0); /*如菜單返回值為14程序結束*/
}
}
}
/*菜單函數,返回值為整數*/
menu_select()
{
char *menu[]={"***************MENU***************", /*定義菜單字元串數組*/
" 0. init list", /*初始化*/
" 1. Enter list", /*輸入記錄*/
" 2. Delete a record from list", /*從表中刪除記錄*/
" 3. print list ", /*顯示單鏈表中所有記錄*/
" 4. Search record on name", /*按照姓名查找記錄*/
" 5. Save the file", /*將單鏈表中記錄保存到文件中*/
" 6. Load the file", /*從文件中讀入記錄*/
" 7. compute the score", /*計算所有學生的總分和均分*/
" 8. insert record to list ", /*插入記錄到表中*/
" 9. the file to new file", /*復制文件*/
" 10. sort to make new file", /*排序*/
" 11. append record to file", /*追加記錄到文件中*/
" 12. index on nomber", /*索引*/
" 13. total on nomber", /*分類合計*/
" 14. Quit"}; /*退出*/
char s[3]; /*以字元形式保存選擇號*/
int c,i; /*定義整形變數*/
gotoxy(1,25); /*移動游標*/
printf("press any key enter menu......\n"); /*壓任一鍵進入主菜單*/
getch(); /*輸入任一鍵*/
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移動游標*/
textcolor(YELLOW); /*設置文本顯示顏色為黃色*/
textbackground(BLUE); /*設置背景顏色為藍色*/
gotoxy(10,2); /*移動游標*/
putch(0xc9); /*輸出左上角邊框┏*/
for(i=1;i<44;i++)
putch(0xcd); /*輸出上邊框水平線*/
putch(0xbb); /*輸出右上角邊框 ┓*/
for(i=3;i<20;i++)
{
gotoxy(10,i);putch(0xba); /*輸出左垂直線*/
gotoxy(54,i);putch(0xba);
} /*輸出右垂直線*/
gotoxy(10,20);putch(0xc8); /*輸出左上角邊框┗*/
for(i=1;i<44;i++)
putch(0xcd); /*輸出下邊框水平線*/
putch(0xbc); /*輸出右下角邊框┛*/
window(11,3,53,19); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/
clrscr(); /*清屏*/
for(i=0;i<16;i++) /*輸出主菜單數組*/
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(BLACK); /*設置背景顏色為黑色*/
window(1,1,80,25); /*恢復原窗口大小*/
gotoxy(10,21); /*移動游標*/
do{
printf("\n Enter you choice(0~14):"); /*在菜單窗口外顯示提示信息*/
scanf("%s",s); /*輸入選擇項*/
c=atoi(s); /*將輸入的字元串轉化為整形數*/
}while(c<0||c>14); /*選擇項不在0~14之間重輸*/
return c; /*返回選擇項,主程序根據該數調用相應的函數*/
}
STUDENT *init()
{
return NULL;
}
/*創建鏈表*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENT指向結構體的指針*/
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]=='@') break; /*如果學號首字元為@則結束輸入*/
inputs("enter name:",info->name,15); /*輸入姓名,並進行校驗*/
printf("please input %d score \n",N); /*提示開始輸入成績*/
s=0; /*計算每個學生的總分,初值為0*/
for(i=0;i<N;i++) /*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; /*新輸入結點為新的頭結點*/
}
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; /* 統計記錄條數*/
STUDENT *p; /*移動指針*/
clrscr(); /*清屏*/
p=h; /*初值為頭指針*/
printf("\n\n\n****************************STUDENT********************************\n");
printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],
p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("**********************************end*********************************\n");
}
/*刪除記錄*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p為查找到要刪除的結點指針,q為其前驅指針*/
char s[11]; /*存放學號*/
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);
else /*p不為空,顯示找到的記錄信息*/
{
printf("*****************************have found***************************\n");
printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,
p->average,p->order);
printf("********************************end*******************************\n");
getch(); /*壓任一鍵後,開始刪除*/
if(p==h) /*如果p==h,說明被刪結點是頭結點*/
h=p->next; /*修改頭指針指向下一條記錄*/
else
q->next=p->next; /*不是頭指針,將p的後繼結點作為q的後繼結點*/
free(p); /*釋放p所指結點空間*/
printf("\n have deleted No %s student\n",s);
printf("Don't forget save\n");/*提示刪除後不要忘記保存文件*/
}
return(h); /*返回頭指針*/
}
㈧ C語言程序設計 (學生選修課程設計)
這是我做的,你看是否滿意?可能有點大,但也沒辦法呀,你的題目也比較大,呵呵!所以,如果滿意,多給我追加點分!
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct course
{
char number[15],name[25];
int kind,time,lessontime,practicetime,credit,term;
}type;
FILE *fp1;
void overview(); //瀏覽函數,負責瀏覽整個課程信息
void seek(); //查詢函數,負責查詢課程信息
void choose_course();//選課函數,負責讓用戶選課
void out(type temp);
void input();
int main()
{
int n,i;
if((fp1=fopen("course_information.txt","wb"))==NULL)
{printf("創建文件失敗!\n");exit(0);}
printf("請輸入要存儲的課程數目:\n");
scanf("%d",&n);
printf("開始創建文件,請輸入課程信息:\n\n");
for(i=0;i<n;i++)
{
printf("請輸入第%d門課程的信息:\n",i+1);
input();
printf("\n");
}
printf("如想瀏覽整個課程信息,請輸入1;如想查詢課程信息,請輸入2; 如想進行選課,請輸入3;如想結束選修課系統,請輸入0!\n");
while((scanf("%d",&n))!=EOF)
{
if(n==1)
overview();
if(n==2)
seek();
if(n==3)
choose_course();
if(n==0)
exit(0);
printf("\n\n如想繼續操作,只要按規則輸入你要進行的操作即可!\n規則:如想瀏覽整個課程信息,請輸入1;如想查詢課程信息,請輸入2;如想進行選課,請輸入3!\n");
}
printf("歡迎您使用此程序進行選課,謝謝!\n");
fclose(fp1);
return 0;
}
void input()
{
course c_a;
printf("請輸入課程編碼: ");
scanf("%s",c_a.number);
printf("請輸入課程名: ");
scanf("%s",c_a.name);
printf("請輸入課程性質:限選課,請輸入1;選修課,請輸入2;必修課,請輸入3! ");
scanf("%d",&c_a.name);
printf("請輸入課程總學時: ");
scanf("%d",&c_a.time);
printf("請輸入課程授課時間: ");
scanf("%d",&c_a.lessontime);
printf("請輸入課程實驗或實踐時間: ");
scanf("%d",&c_a.practicetime);
printf("請輸入課程學分: ");
scanf("%d",&c_a.credit);
printf("請輸入課程所在的學期,比如第二學期,就輸入2即可。");
scanf("%d",&c_a.term);
fwrite(&c_a,sizeof(struct course),1,fp1);//將一個結構體元素寫入文件中
}
void out(type temp)
{
printf("課程代碼: %s\n課程名: %s\n",temp.number,temp.name);
printf("課程名: %s\n",temp.name);
if(temp.kind==1)
printf("課程性質: Limited optional course\n");
else if(temp.kind==2)
printf("課程性質: Optional course\n");
else if(temp.kind==3)
printf("課程性質: Required Courses\n");
else
printf("該編碼系統不認識,即無對應的課程性質存在!\n");
printf("課程總學時: %d\n課程授課學時: %d\n實驗或上機學時: %d\n學分: %d\n課程開課學期: %d\n\n",temp.time,temp.lessontime,temp.practicetime,temp.credit,temp.term);
}
void overview()
{
rewind(fp1);
course temp;
printf("整個課程信息如下:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
out(temp);
}
void seek()
{
int judge,credit=0,kind=0;
char a='N';
course temp;
printf("如想按學分查詢,請輸入1;如想按課程性質,請輸入2:\n");
scanf("%d",&judge);
rewind(fp1); //將文件指針位置置為開頭
if(judge==1)
{
printf("請輸入要查詢的學分:\n");
scanf("%d",&credit);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(credit==temp.credit)
out(temp);
}
else if(judge==2)
{
printf("請輸入你要查找課程的性質(限選課,請輸入1;選修課,請輸入2;必修課,請輸入3):");
scanf("%d",&kind);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(temp.kind==kind)
out(temp);
}
else
printf("不好意思,無此類查詢!\n");
}
void choose_course()
{
rewind(fp1);
course temp;
int judge=1,n=0,time=0,credit=0;
char choose[20][20];
r1: printf("請開始填寫課程編號進行選課:\n");
while(judge==1)
{
printf("請輸入你所選課程的標號: ");
scanf("%s",choose[n]);
n++;
printf("如想繼續選課,請輸入1;如想提交,請輸入0!\n");
scanf("%d",&judge);
}
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{time=time+temp.time;credit=temp.credit;break;}
}
if(time<270||credit<40)
goto r1;
printf("你所選的課為:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{out(temp);break;}
}
}
㈨ C語言學生選修課程系統設計
我做過這個課程設計,
http://blog.sina.com.cn/s/blog_4a3ab18b01008pe0.html
有程序截圖,保證沒有編內譯錯誤容