c語言課程設計健身俱樂部
㈠ c語言課程設計案例精編
如果有來一定的基礎的話源,一樓的說的不錯先學學「數據結構」的相關知識!演算法在程序設計中有很「重要」的作用……其實學c主要是學編程的思想!你要是就一個個的死學案例,也只是會設計類似的東西!不會有創新,甚至有的地方會根本搞不明白。不知道你基礎怎麼樣?如果不是很好,就復習《數據結構吧》清華出版社 那本嚴蔚敏的數據結構(C語言版)。比較容易理解,最好還是要看些英文的原版數據結構的書。
當然如果你數據結構學得很好的話,比如你就是想通過一些案例的開發,來增強自己的實戰能力,你可以深入學習你說的那本書,其實你只要仔細看一下就會發現,其實案例設計的教程中文版的根本沒什麼創新都停留在以下幾個「經典問題」上,不同的版本也沒什麼太多的區別就是重印一下而已!這本書作為對編程基本功的訓練不錯!
案例一:貪吃蛇游戲
案例二:計算器
案例三:黑白棋游戲
案例四:迷宮問題
案例五:掃地雷游戲
案例六:速算24
案例七:數據結構CAI系統
案例八:進度調度
案例九:存儲管理分區分配演算法
案例十:通訊錄
案例十一:學生成績管理
案例十二:工資管理
案例十三:圖書借閱管理
案例十四:教師工作量計算
相關下載地址:
㈡ 一道大一c語言課程設計的題目,求大神
免費給你一個,自己改改
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct Student
{
char xuehao[100];
char name[100];
char sex[100];
int age;
float score;
};
void menu(int *n)
{
printf("\t\t\t*********************************************\n");
printf("\t\t\t\t\t1.創建數據\n");
printf("\t\t\t\t\t2.添加數據\n");
printf("\t\t\t\t\t3.刪除數據\n");
printf("\t\t\t\t\t4.查找數據\n");
printf("\t\t\t\t\t5.按成績進行排序\n");
printf("\t\t\t\t\t6.退出\n");
printf("\t\t\t*********************************************\n");
printf("請輸入數字1-6:");
scanf("%d",n);
}
void scanfstudent(struct Student * p,int len)//輸入學生的信息 學號 姓名 性別 年齡 得分
{
int i;
for(i = 0; i < len; i++)
{
printf("請輸入第%d學生的信息:\n",i+1);
printf("學號:");
scanf("%s",p[i].xuehao);
printf("姓名:");
scanf("%s",p[i].name);
printf("性別:");
scanf("%s",p[i].sex);
printf("年齡:");
scanf("%d",&p[i].age);
printf("得分:");
scanf("%f",&p[i].score);
printf("\n");
}
}
void printfstudent(struct Student *p,int len)//對學生的信息進行輸出
{
int i;
printf("學號\t\t姓名\t\t性別\t\t年齡\t\t分數\n\n");
for (i = 0; i < len; i++)
{
printf("%s\t\t",p[i].xuehao);
printf("%s\t\t",p[i].name);
printf("%s\t\t",p[i].sex);
printf("%d\t\t",p[i].age);
printf("%.2f\n",p[i].score);
}
}
void createdata(struct Student *p,int *len)
{
int n;
printf("請輸入要創建數組的長度:");
scanf("%d",&n);
scanfstudent(p,n);
*len = n;
printfstudent(p,*len);
}
void add(struct Student *p,int *len)//增加一個學生的信息。並且按照順序排列
{
// int i,j;
//int pos = 0;
int c = 1;
while(c == 1)
{
int mylen = *len;
struct Student st;
printf("請輸入要添加學生的信息:\n");
printf("學號:");
scanf("%s",st.xuehao);
printf("姓名:");
scanf("%s",st.name);
printf("性別:");
scanf("%s",st.sex);
printf("年齡:");
scanf("%d",&st.age);
printf("得分:");
scanf("%f",&st.score);
printf("\n");
p[mylen] = st;
*len = mylen+1;
printfstudent(p,*len);
printf("\n");
printf("是否繼續添加?輸入:\n1.繼續\n2.退出\n");
scanf("%d",&c);
}
}
void Sort(struct Student *p,int len)//按照分數從大到小排列選擇排序法
{
struct Student st;
int i,j;
for(i = 0; i < len - 1; i++)
{
for(j = i + 1 ; j < len; j++)
if(p[i].score < p[j].score)
{
st = p[i];
p[i] = p[j];
p[j] = st;
}
}
printfstudent(p,len);
}
/*if(myp->score >= p[0].score)//
{
for(i = mylen; i > 0 ; i--)
p[i] = p[i-1];
p[0] = *myp;
}
else if(myp->score <= p[mylen-1].score)
{
p[mylen] = *myp;
}
*/
//else
//{
/*for(i = 0; i < mylen; i++)
{
if(myp->score >= p[i].score)
break;
}
pos = i;
for(j = mylen; j > pos; j--)
{
p[j] = p[j-1];
}
p[pos] = *myp;
*len = mylen+1;
}*/
void del(struct Student *p,int *len)//刪除學生的信息
{
int i,j;
char p1[1024];
int c = 1;
while(c == 1)
{
int mylen=*len;
printf("請輸入要刪除學生的學號:");
scanf("%s",p1);
for(i = 0; i < *len; i++)
{
if(strcmp(p[i].xuehao,p1)==0)
break;
}
if(i == 0)//刪除的是第一個元素
{
for(j = 0; j < (*len)-1; j++)
p[j] = p[j+1];
}
else if(i>0 && i<(*len)-1)//刪除中間的元素
{
for(j = i;j<(*len) -1;j++)
p[j] = p[j+1];
}
else if(i == (*len)-1)
;
else
printf("error,學號輸入有誤!\n");
*len =mylen-1;//數組長度減少一個
printfstudent(p,*len);
printf("\n");
printf("是否繼續刪除?輸入:\n1.繼續\n2.退出\n");
scanf("%d",&c);
}
}
void serch(struct Student *p,int len)//按學號或者姓名查找學生信息
{
int i,j;
int flat = 0;
char num[100];
char name1[100];
printf("請輸入1或2,1按學號查找,2按姓名查找:");
scanf("%d",&i);
if(i == 1)
{
printf("請輸入要查找的學號:");
scanf("%s",num);
for(j = 0; j <len; j++)
{
if(strcmp(p[j].xuehao,num) == 0)
{
flat ++;
break;
}
}
if(!flat)
{
printf("學號輸入有誤!\n");
}
else
{
printf("學號:%s,姓名:%s,性別:%s,年齡:%d,得分:%.2f\n",p[j].xuehao,p[j].name,p[j].sex,p[j].age,p[j].score);
}
}
else if(i == 2)
{
flat = 0;
printf("請輸入要查找的姓名:");
scanf("%s",name1);
for(j = 0; j <len; j++)
{
if(strcmp(p[j].name,name1) == 0)
{
flat ++;
printf("學號:%s,姓名:%s,性別:%s,年齡:%d,得分:%.2f\n",p[j].xuehao,p[j].name,p[j].sex,p[j].age,p[j].score);
break;
}
}
if(!flat)
{
printf("姓名輸入有誤!\n");
}
}
}
/*int main(void)
{
int len;
int c;
// char c;
// char xuehao11[1024];
// struct Student *p;
//靜態構造結構數組
struct Student p[1024];
printf("請輸入學生的個數:");
scanf("%d",&len);
// p = (struct Student*)malloc(sizeof(struct Student)*len);動態構造一個結構數組
scanfstudent(p,len);
Sort(p,len);
printfstudent(p,len);
do
{
struct Student st;
printf("\n請輸入增加的學生的信息:\n");
printf("學號:");
scanf("%s",st.xuehao);
printf("姓名:");
scanf("%s",st.name);
printf("性別:");
scanf("%s",st.sex);
printf("年齡:");
scanf("%d",&st.age);
printf("得分:");
scanf("%f",&st.score);
// serch(p,len);
printf("\n");
//printf("請輸入要刪除的學生的學號:");
printf("\n");
//scanf("%s",xuehao11);
add(p,&st,&len);
// del(p,xuehao11,&len);刪除一個學生的信息
printfstudent(p,len);
printf("是否繼續添加?\n1:是\n2不添加\n");
scanf("%d",&c);
}
while(c==1);
}*/
int main(void)
{
int n;
struct Student p[1024];
int len = 0;
while(1)
{
menu(&n);
switch(n)
{
case 1:createdata(p,&len);break;
case 2:add(p,&len);break;
case 3:del(p,&len);break;
case 4:serch(p,len);break;
case 5:Sort(p,len);break;
case 6:printf("謝謝您的使用!\n\n");break;
default:printf("輸入有誤重新輸入!\n\n");break;
}
if(n == 6)
break;
}
return 0;
}
㈢ 誰會C語言課設設計:健身俱樂部會員卡管理系統
#include
#include
#include
#include
typedef struct
{
char No[20];
char name[20];
char sex[20];
char birth[20];
char title[20];
char pay[20];
} INFO;
INFO *s=NULL;
int count=0;
char work_path[100];
char data_path[100];
void GetData() //文件獲取數據
{
count=GetPrivateProfileInt("INFO","COUNT",0,data_path);
if(s!=NULL)
{
free(s);
}
count++;
s=(INFO*)malloc(sizeof(INFO)*count);
char t[5];
int i;
for(i=0;i<count-1;i++)
{
memset(t,'\0',5);
sprintf(t,"%d",i+1);
GetPrivateProfileStringA(t,"No","",s[i].No,20,data_path);
GetPrivateProfileStringA(t,"name","",s[i].name,20,data_path);
GetPrivateProfileStringA(t,"sex","",s[i].sex,20,data_path);
GetPrivateProfileStringA(t,"birth","",s[i].birth,20,data_path);
GetPrivateProfileStringA(t,"title","",s[i].title,20,data_path);
GetPrivateProfileStringA(t,"pay","",s[i].pay,20,data_path);
}
memset(s[count-1].No,'\0',20);
}
void WriteData() //寫數據文件
{
char t[5]={'\0'};
sprintf(t,"%d",count);
WritePrivateProfileString("INFO","COUNT",t,data_path);
int i;
for(i=0;i<count;i++)
{
if(strcmp(s[i].No,"")==0)
{
continue;
}
memset(t,'\0',5);
sprintf(t,"%d",i+1);
WritePrivateProfileStringA(t,"No",s[i].No,data_path);
WritePrivateProfileStringA(t,"name",s[i].name,data_path);
WritePrivateProfileStringA(t,"sex",s[i].sex,data_path);
WritePrivateProfileStringA(t,"birth",s[i].birth,data_path);
WritePrivateProfileStringA(t,"title",s[i].title,data_path);
WritePrivateProfileStringA(t,"pay",s[i].pay,data_path);
}
}
void Input() //產品信息錄入
{
char sel;
while(1)
{
system("cls");
printf("請輸入職工編號: ");
scanf("%s",s[count-1].No);
printf("請輸入職工姓名: ");
scanf("%s",s[count-1].name);
printf("請輸入職工性別: ");
scanf("%s",s[count-1].sex);
printf("請輸入月: ");
scanf("%s",s[count-1].birth);
printf("請輸入職工職稱: ");
scanf("%s",s[count-1].title);
printf("請輸入職工工資: ");
scanf("%s",s[count-1].pay);
WriteData();
GetData();
printf("\n產品錄入功!\n\n繼續? (y/n) : ");
fflush(stdin);
scanf("%c",&sel);
if(sel=='y' || sel=='Y')
{
continue;
}
else
{
break;
}
}
}
void Display() //產品信息瀏覽
{
system("cls");
int i;
if(strcmp(s[0].No,"")==0)
{
printf("沒數據!\n");
fflush(stdin);
getchar();
return;
}
for(i=0;i<count-1;i++)
{
printf("%d/%d :\n",i+1,count-1);
printf("職工編號: %s\n",s[i].No);
printf("職工姓名: %s\n",s[i].name);
printf("職工性別: %s\n",s[i].sex);
printf("月: %s\n",s[i].birth);
printf("職工職稱: %s\n",s[i].title);
printf("職工工資: %s\n\n",s[i].pay);
}
fflush(stdin);
getchar();
}
void Sort() //排序
{
int i,j;
INFO t;
if(count>2)
{
int a,b;
for(i=0;i<count-1-1;i++)
{
for(j=i;j<count-1-1;j++)
{
a=atoi(s[j].No);
b=atoi(s[j+1].No);
if(a>b)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
}
printf("\n\n排序功!");
fflush(stdin);
getchar();
}
void Search() //查找
{
system("cls");
printf("請輸入要查詢職工編號: ");
char temp[20];
fflush(stdin);
scanf("%s",&temp);
int find=0;
printf("\n");
int i;
for(i=0;i<count-1;i++)
{
if(strcmp(temp,s[i].No)==0)
{
printf("職工編號: %s\n",s[i].No);
printf("職工姓名: %s\n",s[i].name);
printf("職工性別: %s\n",s[i].sex);
printf("月: %s\n",s[i].birth);
printf("職工職稱: %s\n",s[i].title);
printf("職工工資: %s\n\n",s[i].pay);
find++;
}
}
if(find==0)
{
printf("No Infor!\n");
}
else
{
printf("共找 %d 條信息\n",find);
}
fflush(stdin);
getchar();
}
void Del()
{
system("cls");
printf("請輸入要刪除職工編號: ");
char temp[20]={'\0'};
scanf("%s",temp);
int i,find=0;
for(i=0;i<count-1;i++)
{
if(strcmp(temp,s[i].No)==0)
{
find=1;
if(count==1)
{
count=0;
strcpy(s[i].No,"");
break;
}
INFO t;
int j;
for(j=i;j<count-1-1;j++)
{
s[j]=s[j+1];
}
count-=2;
break;
}
}
if(find==1)
{
WriteData();
printf("\n\n已刪除!");
GetData();
}
else
{
printf("\n\n未找該信息!");
}
fflush(stdin);
getchar();
}
void Menu() //主菜單
{
int sel;
while(1)
{
system("cls");
printf("1. 職工信息錄入\n");
printf("2. 全部信息瀏覽\n");
printf("3. 按職工號查尋\n");
printf("4. 職工信息刪除\n");
printf("5. 職工編號排序\n");
printf("6. 退\n\n");
printf("請輸入(1-6): ");
scanf("%d",&sel);
switch(sel)
{
case 1:
Input();
break;
case 2:
Display();
break;
case 3:
Search();
break;
case 4:
Del();
break;
case 5:
Sort();
break;
case 6:
exit(0);
default:
continue;
break;
}
}
}
int main()
{
getcwd(work_path,100); //取前程序絕路徑
strcpy(data_path,work_path);
strcat(data_path,"\\data.dat"); //設置數據文件絕路徑
GetData();
Menu();
return 0;
}
㈣ C語言課程設計 要求編寫一段程序 題目是《運動會分數統計系統》
不錯,我會把題弄回家試試的.
你要等我,等我哦,我一定會回來的.
ka~~~
導演,我的二分是不是到手了?
(tt)p
開心一下,有機會大家研究研究.
㈤ 來一個C語言課程設計大作品
已寫好,已發你郵箱[email protected],我的郵箱是[email protected].這是部分運行截圖:
㈥ C語言課程設計求解釋。。。
#include <stdio.h>
struct student //定義一個結構體
{
char no[20];
char name[20];
float math,english,computer;
double total;
double avr;
};
struct student stu[50]; //定義stu結構體數組
//以下四個是函數聲明語句
struct student input(); //學生數據輸入函數,返回值是結構體
void display(struct student stu[],int count); //顯示函數
void sort(struct student stu[],int count); //排序函數
void stat(struct student stu[],int count); //成績分析函數
void main()
{
int count;
char ch;
ch='y';
printf("請按以下格式輸入學生信息(可用Tab鍵對齊):");
printf("\n");
count=0;
while ((ch=='y') || (ch=='Y'))
{
stu[count]=input(); //調用input函數輸入一個學生的信息給stu數組
count++; //這個循環是當ch為y時添加學生成績信息
printf("\n是否繼續?(按Y繼續,其它結束)");
scanf(" %c",&ch);
}
printf("\n學生信息如下:");
sort(stu,count); //調用排序函數進行排序
display(stu,count); //顯示排序後的結構
stat(stu,count); //調用分析函數顯示分析結果
system("PAUSE"); //我這里加了一個暫停語句,可以把結果停留在輸出窗口觀看
}
struct student input()
{ int i;
struct student studn;
while(1) //這個循環是當有學號重復時讓用戶重復輸入
{printf("\n學號\t\t姓名\t數學\t英語\t計算機\n");
while(1)
{scanf("%s %s %f %f %f",&studn.no,studn.name,&studn.math,&studn.english,&studn.computer);
if((studn.math>0)&&(studn.math<=100)&&(studn.english>0)&&(studn.english<=100)&&(studn.computer>0)&&(studn.computer<=100))break;
printf("輸入的成績不符合要求,請重新輸入\n");
fflush(stdin);}
for(i=0;i<50;i++) //這個循環是查找stu數組中有沒有和輸入的學號有重復的信息,
if(strcmp(stu[i].no,studn.no)==0)break; //如果有就用break跳出for循環
if(i==50)break; //如果for循環後i值等於50,表示該學號沒有重復,用break跳出while循環
printf("輸入的學號已存在,請重新輸入\n");
}
studn.total=studn.math+studn.english+studn.computer; //計算該學生的總分
studn.avr=studn.total/3.0; //計算該學生的平均分
return studn;
}
void display(struct student stu[],int count)
{ //這個函數很簡單,用循環把stu數組的內容輸出來
int i;
printf("\n排名\t學號\t\t姓名\t數學\t英語\t計算機\t總分\t平均分");
printf("\n");
for(i=0;i<count;i++)
{
printf("%d",i+1);
printf("\t%s",stu[i].no);
printf("\t%s",stu[i].name);
printf("\t%.1f",stu[i].math);
printf("\t%.1f",stu[i].english);
printf("\t%.1f",stu[i].computer);
printf("\t%.2f",stu[i].total);
printf("\t%.2f",stu[i].avr);
printf("\n");
}
}
void sort(struct student stu[],int count)
{ //這個函數是把stu數組進行排序
int i,j;
struct student t;
for(i=0;i<count;i++) //排序方法是冒泡排序
for(j=0;j<count-i-1;j++)
{
if(stu[j].avr<stu[j+1].avr) //按每個學生的3科平均分大小有高到低排序
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
}
void stat(struct student stu[],int count)
{ //這個是分數段處理函數
int i;
double avr=0;
for(i=0;i<count;i++) //這個循環是統計全班3科成績平均分的班的總平均分
avr += stu[i].avr;
avr /= count;
printf("全班平均分為%.2f,\n在平均分以上的同學有:\n",avr);
for(i=0;i<count;i++) //這個循環的功能上面printf語句說得很清楚了
if(stu[i].avr>=avr)
{
printf("%s\t",stu[i].name);
}
printf("\n");
}
㈦ c語言課程設計
課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,當今計算機應用在是生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握計算機開發技術十分重要的。
我的題目是文章處理系統的設計,對於我們這些新手來說,這是很大的考驗,我一千次一萬次的問自己,怎麼才能找到課堂所學與實際應用的最佳結合點?怎麼才能讓自己的程序在篇幅上簡單,在使用價值上豐富?怎樣讓自己的業余更靠近專業?怎樣讓自己的計劃更具有序性,而不會忙無一用?機會是老師,學校,以及無數代教育工作者給的,而能力是自己的,耐性是需要的。經過自己的琢磨,聽取了師姐,師兄們的建議,還查閱了很多書籍,才做到了心中有數,才了解了C語言課程設計的真正用意——培養自學能力,養成程序編輯的好習慣。我從來不相信車到山前必有路的說法,認為那隻是懶惰者自尋懶惰的借口,我要積極,要把握,要努力。
回顧起此次課程設計,至今我仍感慨頗多,的確,從從拿到題目到完成整個編程,從理論到實踐,在整整半個學期的日子裡,可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體……通過這次課程設計之後,一定把以前所學過的知識重新溫故。
這次課程設計終於順利完成了,在設計中遇到了很多編程問題,最後在郭老師的辛勤指導下,終於游逆而解。同時,在郭老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我幫助的所有同學和各位指導老師再次表示忠心的感謝
在課程設計過程中,我學到了很多人生的哲理,懂得怎麼樣去制定計劃,怎麼樣去實現這個計劃,並掌握了在執行過程中怎麼樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個子程序都已經編輯成功,那麼這最後的程序就將是我成功的關鍵。老天不會讓我太過順利,他在這最後的時刻設置的障礙,是要考驗我的能力,他要置我於死地?在這個問題的解決上,我打了退堂鼓,我不能忍受長時間的無功而反,時間正在消磨我的意志。沒有了柳暗花明的一天,那麼我怎麼能說經受住了考驗?謝謝老師的那句話,她說:人力有所不能及,然而,人的精神是不會敗倒的。我鼓起勇氣,到處問,到處查資料,黃天不負有心人,在一篇文章上,終於看到了我所特別要求的函數,我實現了組合是關鍵的理論。不得不說這是精神的勝利,是永不言敗的精神讓我的程序重見天日。謝謝給我指點迷津的老師。
6月11日,我們的課程設計結束了,但是它留給我的印象是不可磨滅的。無論我以後會不會涉及到C語言程序編譯的研究,我想,我至少掌握了一種系統的研究方法,我們學習的目的就在於運用,我們運用這種研究方法的時候會很多,我最後要感謝課程設計,它的確教會我很多。
另外,虛機團上產品團購,超級便宜
㈧ 一個較為典型的c語言課程設計題目:校際運動會管理系統
include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*其它說明*/
#include "string.h" /*字元串函數*/
#include "conio.h" /*屏幕操作函數*/
#include "mem.h" /*內存操作函數*/
#include "ctype.h" /*字元操作函數*/
#include "alloc.h" /*動態地址分配函數*/
struct score
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;
void shuru()
{
if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("cannot open this file.\n");
getch();exit(0);
}
for(i=0;i<=1000;i++)
{
printf("\nPlease shuru xuehao:");
gets(data.xuehao);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please shuru wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please shur huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(&data,sizeof(data),1,fp);
printf("another?y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen("s_score.txt","rb+"))==NULL)
{
printf("Cannot reading this file.\n");
exit(0);
}
for(i=0;i<=1000;i++)
{
if((fread(&info[i],sizeof(info[i]),1,fp))!=1)
break;
}
printf("\nxuehao mingzi yuwen shuxue yingyu wuli huauxue zhongfen\n");
for(j=0,k=1;j<i;j++,k++)
{
info[j].mingci=k;
printf("%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n",info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}
void xiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xiugai xuehao:");
scanf("%d",&i); getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("xuehao:%s\nmingzi:%s\n",data.xuehao,data.mingzi);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please input wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please input huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
} fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);
}
fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\nCannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xuehao chakan:");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf("xuehao:%s mingzi:%s\nyuwen:%f\n shuxue:%f\n yingyu:%f\n wuli:%f\n huaxue:%f\n ",data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}
void shanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("\nopen score.txt was failed!");
getch();
exit(0);
}
printf("\nPlease input ID which you want to del:");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("Anykey will delet it.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");
rename("temp.txt","s_score.txt");
printf("Data delet was succesful!\n");
printf("Anykey will return to main.");
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移動游標*/
textcolor(YELLOW); /*設置文本顯示顏色為黃色*/
textbackground(BLUE); /*設置背景顏色為藍色*/
window(1,1,99,99); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/
clrscr();
printf("*************welcome to use student manage******************\n");
printf("*************************menu********************************\n");
printf("* ========================================================= * \n");
printf("* 1>shuru 2>xiugai * \n");
printf("* 3>shanchu 4>chazhao * \n");
printf("* 5>xianshi 6>exit * \n");
printf("* * \n");
printf("* --------------------------------------------------------- * \n");
printf(" Please input which you want(1-6):");
ch=getch();
switch(ch)
{
case '1':shuru();break;
case '2':xiugai(); break;
case '3':shanchu(); break;
case '4':chazhao(); break;
case '5':xianshi(); break;
case '6':exit(0);
default: continue;
}
}
㈨ C語言課程設計題目
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(Student)
typedef struct student
{
int num;
char name[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
void print(Student *head);
Student *sort_all(Student *head);
void find(Student *head);
Student *add_new(Student *head);
Student *cin()
{
int flag;
Student *head,*p1,*p2;
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n請輸入第%d名學生的學號,學號為0表示結束輸入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
p1->num=flag;
printf("請輸入第%d名學生的姓名:",n);
scanf("%s",p1->name);
printf("請輸入第%d名學生的語文成績:",n);
scanf("%d",&p1->score[0]);
printf("請輸入第%d名學生的數學成績:",n);
scanf("%d",&p1->score[1]);
printf("請輸入第%d名學生的英語成績:",n);
scanf("%d",&p1->score[2]);
printf("請輸入第%d名學生的計算機成績:",n);
scanf("%d",&p1->score[3]);
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];
p2->next=p1;
p2=p1;
printf("\n請輸入第%d名學生的學號,沒有此學生則輸入0表示結束:",n+1);
scanf("%d",&flag);
}
p2->next=NULL;
printf("\n\n");
return head;
}
Student *sort_all(Student *head)
{
int choose;
for(;;)
{
printf("\n\t\t# # # # # 學生成績統計排序 # # # #\n");
printf("\t\t#\t1.按學生學號排序\t #\n");
printf("\t\t#\t2.按學生總分排序\t #\n");
printf("\t\t#\t3.按學生語文成績排序\t #\n");
printf("\t\t#\t4.按學生數學成績排序\t #\n");
printf("\t\t#\t5.按學生英語成績排序\t #\n");
printf("\t\t#\t6.按學生計算機成績排序\t #\n");
printf("\t\t#\t7.單科高分及均分\t #\n");
printf("\t\t#\t8.顯示當前學生成績\t #\n");
printf("\t\t#\t0.返回上一級菜單\t #\n");
printf("\t\t# # # # # 由himpo友情提供# # # # #\n\n");
printf("請輸入你要執行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:head=sort_1(head,choose);break;
case 7:print(head);sort_2(head);break;
case 8:print(head);break;
case 0:return head;
default: printf("\n\n您的輸入有誤!請重新輸入:\n\n");break;
}
}
}
Student *sort_1(Student *head,int choose)
{
Student *p1,*p2=head->next,*pm,*px;
Student mid;
if (!p2) return head;
for(p1=p2;p1->next!=NULL;p1=p1->next)
{
pm=p1;
for(p2=p1->next;p2!=NULL;p2=p2->next)
switch(choose)
{
case 1:if (pm->num>p2->num) pm=p2;break;
case 2:if (pm->sum<p2->sum) pm=p2;break;
case 3:if (pm->score[0]<p2->score[0]) pm=p2;break;
case 4:if (pm->score[1]<p2->score[1]) pm=p2;break;
case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;
case 6:if (pm->score[3]<p2->score[3]) pm=p2;break;
}
if (pm!=p1)
{
mid=*pm;
*pm=*p1;
*p1=mid;
px=pm->next;
pm->next=p1->next;
p1->next=px;
}
}
printf("\n排序後的成績表為:\n");
print(head);
return head;
}
void sort_2(Student *head)
{
Student *p=head->next;
int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4;
int max_sum,min_sum;
int sum_1=0,sum_2=0,sum_3=0,sum_4=0;
float aver_1,aver_2,aver_3,aver_4,aver_sum;
if (!p) return;
max_1=min_1=p->score[0];max_2=min_2=p->score[1];
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];
else if (min_1>p->score[0]) min_1=p->score[0];
if (max_2<p->score[1]) max_2=p->score[1];
else if (min_2>p->score[1]) min_2=p->score[1];
if (max_3<p->score[2]) max_3=p->score[2];
else if (min_3>p->score[2]) min_3=p->score[2];
if (max_4<p->score[3]) max_4=p->score[3];
else if (min_4>p->score[3]) min_4=p->score[3];
if (max_sum<p->sum) max_sum=p->sum;
else if (min_sum>p->sum) min_sum=p->sum;
sum_1+=p->score[0];sum_2+=p->score[1];sum_3+=p->score[2];sum_4+=p->score[3];
}
aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*sum_4/n;
aver_sum=aver_1+aver_2+aver_3+aver_4;
printf("總共%d名學生,具體數據為:\n",n);
printf("語文最高分為%d,最低分為%d,平均分為%.2f\n",max_1,min_1,aver_1);
printf("數學最高分為%d,最低分為%d,平均分為%.2f\n",max_2,min_2,aver_2);
printf("英語最高分為%d,最低分為%d,平均分為%.2f\n",max_3,min_3,aver_3);
printf("計算機最高分為%d,最低分為%d,平均分為%.2f\n",max_4,min_4,aver_4);
printf("總分最高分為%d,最低分位%d,平均分為%.2f\n",
max_sum,min_sum,aver_sum);
}
void find(Student *head)
{
Student *p;
int choose,fnum;
char tem[20];
if (n==0) {printf("\n當前系統沒有任何學生數據,您就別費勁了!\n ");return;}
for(;;)
{
printf("\n請輸入您要查詢學生的方式:\n\n");
printf("1、按學號查詢;2、按姓名查詢;0、我不查詢了。\n\n");
printf("請選擇:");
scanf("%d",&choose);
while(getchar()!='\n');
if (choose==1)
{
printf("\n請輸入你要查詢的學生的學號,輸入0退出學號查詢:");
scanf("%d",&fnum);
for(;fnum;)
{
for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);
if (!p)
{
printf("\n\n找不到你要查詢的學號,請重新輸入,輸入0表示結束:");
scanf("%d",&fnum);
}
else if (p->num==fnum)
{
printf("\n學號為%d學生的數據為:\n",p->num);
printf("學號\t姓名\t語文成績 數學成績 英語成績 計算機\
成績 總分\n");
printf("%d\t%s\t %d %d %d %d \
%d\n",p->num,
p->name,p->score[0],p->score[1],p->score[2],p->score[3],
p->sum);
printf("\n\n請輸入你還要查詢的學生的學號,輸入0表示不按學\
號查詢了:");
scanf("%d",&fnum);
}
}
}
else if (choose==2)
{
printf("\n請輸入你要查詢的學生的姓名,輸入0退出姓名查詢:");
scanf("%s",tem);
for(;strcmp(tem,"0");)
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查詢的姓名,請重新輸入,輸入0表\
示結束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
{
printf("\n姓名為%s學生的數據為:\n",p->name);
printf("學號\t姓名\t語文成績 數學成績 英語成績 \
計算機成績 總分\n");
printf("%d\t%s\t %d %d %d \
%d %d\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],
p->score[3],p->sum);
printf("\n\n請輸入你還要查詢的學生的姓名,輸入0表\
示不按姓名查詢了:");
scanf("%s",tem);
}
}
}
else if (choose==0) {printf("\n你選擇了不查詢!\n");break;}
else {printf("\n你以其他方式選擇了不查詢!\n");break;}
}
}
Student *add_new(Student *head)
{
Student *p;
int flag;
printf("\n\n請輸入你要新加入學生的學號,學號為0表示結束輸入:");
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
p=(Student *)malloc(LEN);
p->num=flag;
printf("請輸入新加入學生的姓名:",n);
scanf("%s",p->name);
printf("請輸入新加入學生的語文成績:",n);
scanf("%d",&p->score[0]);
printf("請輸入新加入學生的數學成績:",n);
scanf("%d",&p->score[1]);
printf("請輸入新加入學生的英語成績:",n);
scanf("%d",&p->score[2]);
printf("請輸入第%d名學生的計算機成績:",n);
scanf("%d",&p->score[3]);
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3];
p->next=head->next;
head->next=p;
n++;
printf("\n請輸入還要加入學生的學號,沒有此學生則輸入0表示結束:");
scanf("%d",&flag);
}
head=sort_1(head,1);
printf("加入後的成績表為:\n");
print(head);
return head;
}
void print(Student *head)
{
Student *p=head->next;
if (!p) {printf("\n\n此系統目前沒有任何學生數據!\n\n\n");return;}
printf("此系統目前共計學生%d名:\n",n);
printf("**************************學生成績統計一覽************************\
*****\n");
printf("學號\t姓名\t語文成績 數學成績 英語成績 計算機成績 總分\n");
for(;p;p=p->next)
printf("%d\t%s\t %d %d %d %d %d\n",
p->num,p->name,
p->score[0],p->score[1],p->score[2],p->score[3],
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3]);
printf("************************此軟體由himpo友情提供*************************\
*\n\n");
}
int main()
{
Student *head;
int choose,i;
head=(Student *)malloc(LEN);
head->next=NULL;
for(;;)
{
printf("\n\t\t* * * * * 學生成績管理系統 * * * *\n");
printf("\t\t*\t1.學生數據鍵盤錄入\t *\n");
printf("\t\t*\t2.學生數據統計排序\t *\n");
printf("\t\t*\t3.查詢學生數據\t\t *\n");
printf("\t\t*\t4.插入學生數據\t\t *\n");
printf("\t\t*\t5.顯示當前成績表\t *\n");
printf("\t\t*\t0.退出成績管理系統\t *\n");
printf("\t\t* * * * * 由himpo友情提供* * * * *\n\n");
printf("\n請輸入你要執行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:printf("\n\t\t\t\t****注意****");
printf("\n\n 此選項將會建立新的學生數據系統 ,原來的數據將\
不再存在,你確信要刪除原來的數據並建立新的數據系統么?\n\n");
printf("1、建立新的數據系統;0、放棄建立新的數據系統。\n\n");
printf("請選擇:");
scanf("%d",&i);
if (i==1) {head=cin();print(head);break;}
else if (i==0)
{
printf("\n你選擇了放棄建立新的數據系統!\n");
break;
}
else {
printf("\n你做出別的選擇,當作放棄建立!\n");
break;
}
case 2:head=sort_all(head);break;
case 3:find(head);break;
case 4:head=add_new(head);
case 5:print(head);break;
case 0:system("pause");return 0;
default: printf("\n\n您的輸入有誤!請重新輸入:\n\n");break;
}
}
}