當前位置:首頁 » 編程語言 » C語言成績管理流程圖

C語言成績管理流程圖

發布時間: 2022-07-28 00:50:14

A. c語言課程設計 學生成績管理系統

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 學號 */
char name[20];
char class[10];
char term[2];
int ygrade;
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];/* 最近更新時間 */
};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************************************************************************");
printf("\t1登記學生資料\t\t\t\t\t2刪除學生資料\n");
printf("\t3查詢學生資料\t\t\t\t\t4修改學生資料\n");
printf("\t5保存學生資料\t\t\t\t\t0退出系統\n");
printf("********************************************************************************\n");
}

void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:輸入錯誤!\n");
}

void Nofind()
{
printf("\n=====>提示:沒有找到該學生!\n");
}

void printc() /* 本函數用於輸出中文 */
{
printf(" 學號\t 姓名 班級 學期 語文成績 英語成績 數學成績 C語言成績 總分 平均分\n");
}

void printe(Node *p)/* 本函數用於輸出英文 */
{
printf("%-12s%s\t%s\t\%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.class,p->data.term,p->data.ygrade,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 該函數用於定位連表中符合要求的接點,並返回該指針 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按學號查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}

void Add(Link l) /* 增加學生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 將指針置於最末尾 */
while(1)
{
printf("請你輸入學號(以'0'返回上一級菜單:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:學號為'%s'的學生已經存在,若要修改請你選擇'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("請你輸入姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入班級:");
scanf("%s",p->data.class);
getchar();
printf("請你輸入學期:");
scanf("%s",p->data.term);
getchar();
printf("請你輸入語文成績:");
scanf("%d",&p->data.ygrade);
getchar();
printf("請你輸入c語言成績:");
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入數學成績:");
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入英語成績:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.ygrade+p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息輸入已經完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;

}
}

void Qur(Link l) /* 查詢學生 */
{
int sel;
char findmess[20];
Node *p;

if(!l->next)
{
printf("\n=====>提示:沒有資料可以查詢!\n");
return;

}
printf("\n=====>1按學號查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/* 學號 */
{
printf("請你輸入要查找的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}

void Del(Link l) /* 刪除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以刪除!\n");
return;
}
printf("\n=====>1按學號刪除\n=====>2按姓名刪除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("請你輸入要刪除的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("請你輸入要刪除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}

void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以修改!\n");
return;
}
printf("請你輸入要修改的學生學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("請你輸入新學號(原來是%s):",p->data.num);
scanf("%s",p->data.num);
printf("請你輸入新姓名(原來是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("請你輸入新班級(原來是%s):",p->data.class);
scanf("%s",p->data.class);
getch();
printf("請你輸入新學期(原來是%s):",p->data.term);
scanf("%s",p->data.term);
getchar();
printf("請你輸入新的語文成績(原來是%d分):",p->data.ygrade);
scanf("%d",&p->data.ygrade);
getchar();
printf("請你輸入新的c語言成績(原來是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入新的數學成績(原來是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入新的英語成績(原來是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("\n=====>提示:資料修改成功!\n");
shoudsave=1;
}
else
Nofind();

}

void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;

if(!p)
{
printf("\n=====>提示:沒有資料可以顯示!\n");
return;
}
printf("\t\t\t\t顯示結果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}

void Tongji(Link l)
{
Node *pm,*pe,*pc,*pa; /* 用於指向不及格學生的接點 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:沒有資料可以統計!\n");
return ;
}
pm=pe=pc=pa=r;
while(r!=NULL)
{
if(r->data.ygrade<60)
pa=r;
if(r->data.cgrade<60)
pc=r;
if(r->data.mgrade<60)
pm=r;
if(r->data.egrade<60)
pe=r;
r=r->next;
}
printf("------------------------------統計結果--------------------------------\n");
printf("語文不及格:\t%s %d分\n",pe->data.name,pe->data.ygrade);
printf("英語不及格:\t%s %d分\n",pe->data.name,pe->data.egrade);
printf("數學不及格:\t%s %d分\n",pm->data.name,pm->data.mgrade);
printf("c語言不及格:\t%s %d分\n",pc->data.name,pc->data.cgrade);
printstart();
}

void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); /* 用於做新的連表 */
ll->next=NULL;

if(l->next==NULL)
{
printf("\n=====>提示:沒有資料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接點用於保存信息 */
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已經完成!\n");
}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d條記錄已經保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}

void main()
{
Link l;/* 連表 */
FILE *fp; /* 文件指針 */
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;

l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件還不存在,是否創建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已經打開,正在導入記錄......\n");

while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 將文件的內容放入接點中 */
{
p->next=NULL;
r->next=p;
r=p; /* 將該接點掛入連中 */
count++;
}
}

fclose(fp); /* 關閉文件 */
printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count);

while(1)
{
menu();
printf("請你選擇操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已經退出系統,再見!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加學生 */
case 2:Del(l);break;/* 刪除學生 */
case 3:Qur(l);break;/* 查詢學生 */
case 4:Modify(l);break;/* 修改學生 */
case 5:Save(l);break;/* 保存學生 */
case 9:printf("\t\t\t==========幫助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}

B. 怎麼寫c語言的學生成績管理系統的流程圖哦

在turbo
c
2.0下測試通過
[VC學生成績管理系統.rar]
-
可以運行的c語言課程設計報告,裡面有源碼和詳細的WORD文檔.包含流程圖.詳細的分析等.

C. 有誰能為我下面的C語言成績管理系統做一個流程圖

用流程圖自動生成軟體。很小的。

D. c語言學生成績系統流程圖及程序

kbupk
160

E. 求C語言編寫的「學生成績管理系統」的程序帶有流程圖的最好~!

#include "stdio.h" #include "string.h" #include "stdlib.h" #include "conio.h"#include "mem.h" #include "ctype.h"#include "alloc.h"#define N 4struct student
{
long num;
char name[20];
char sex;
int chinese;
int math;
int english;
};
struct student stu[N];
int n;
int choose;
void fun1();
void fun2();
void fun3();
void fun4();void fun1()
{
int i;
for(i=0;i<N;i++)
{
printf("Please shuru xuehao:\n"); /*請輸入學號*/
scanf("%ld",&stu[i].num);
printf("Please shuru mingzi:\n"); /*請輸入名字*/
scanf("%s",stu[i].name);
getchar();
printf("Please shuru sex:\n"); /*請輸入性別*/
scanf("%c",&stu[i].sex);
printf("Please shuru yuwen score:\n"); /*請輸入語文分數*/
scanf("%d",&stu[i].chinese);
printf("Please shuru shuxue score:\n"); /*請輸入數分數*/ scanf("%d",&stu[i].math); printf("Please input yingyu score:\n"); /*請輸入英語分數*/ scanf("%d",&stu[i].English); printf("Please input jisuji score:\n"); /*請輸入計算機分數*/
scanf("%d",&stu[i]. jisuji); printf("Please input zheng score:\n"); /*請輸入政治分數*/ scanf("%d",&stu[i]. zheng);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.scor e[3]+data. score[4]; /*顯示總分*/ fwrite(&data,sizeof(data),1,fp); printf("another?y/n"); ch=getch(); if(ch=='n'||ch=='N') break; } }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; /*用break結束本次循環*/ } getch(); fclose(fp);}void fun2()
{ int i;
for(i=0;i<N;i++)
{
printf("%ld\t%s\t%c\n",stu[i].num,stu[i].name,stu[i].sex);
printf("%d\t%d\t%d\n",stu[i].chinese,stu[i].math,stu[i].English);
}
}void fun3()
{ char name[20];
int k,f=0;
printf("Please shuru the person's name that to check to seek: "); /*請輸入您所要查找的姓名*/
gets(name);
for(k=0;k<2;k++)
if(strcmp(name,stu[k].name)==0)
{ printf("%ld,%s,%c,%d,%d,%d",stu[k].num,stu[k].name,stu[k].sex,stu[k].chinese,stu[k].math,stu[k].english);
f=1;
}
if(f=0)
printf("Have no this person ~~~TOT"); /*沒有這個人*/

}void fun4()
{ int k;
char newname[20];
printf("Please input the name of this student!\n"); /*請輸入該學生的名字*/
gets(newname);
printf("The record of all students is:\n"); /*所有學生記錄為*/
fun2();
for(k=0;k<2;k++)
if(strcmp(newname,stu[k].name)==0)
{
printf("Student whom you choose is:\n"); ?* 你選擇的學生為*/
printf("%ld,%s,%c,%d,%d,%d",stu[k].num,stu[k].name,stu[k].sex,stu[k].chinese,stu[k].math,stu[k].english);
stu[k].num=stu[k+1].num;
strcpy(stu[k].name,stu[k+1].name);
stu[k].sex=stu[k+1].sex;
stu[k].chinese=stu[k+1].chinese;
stu[k].math=stu[k+1].math;
stu[k].english=stu[k+1].english; }
printf("The student's record was delete to complete!"); /*學生記錄刪除完畢*/}while(1){ clrscr(); /*清屏幕*/ gotoxy(1,1); /*移動游標*/ textcolor(RED); /*設置文本顯示顏色為紅色*/ textbackground(WHTIE); /*設置背景顏色為白色*/ window(1,1,99,99); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/ clrscr(); printf("******************************************************\n");
printf("***********welcome to use student manage**************\n");
printf ("*******************************************************\n");
printf("*************designer:jisuanjikexueyujishu************\n");printf ("***************************Procer:*****************\n");
printf ("***************chenjian,fusong,guoqingwen**************\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 the operation that you have to carry on:\n"); /*請輸入您要進行的操作*/
scanf("%d",&choose);
while(choose!=1&&choose!=2&&choose!=3&&choose!=4)
{ printf("The numeral have another also the form press wrong~~~~ Please press one more time ^_^"); /*數字多也表按錯~~~~請再按一遍*/
scanf("%d",&choose);
}
while(choose==1||choose==2||choose==3||choose==4)
{switch(choose)<br> {<br> case 1:fun1(); break;<br> case 2:fun2(); break;<br> case 3:fun3(); break;<br> case 4:fun4(); break;<br> }
printf("Please input the operation that you have to carry on:\n");/*請輸入您要進行的操作*/
scanf("%d",&choose);
} 我這有N個~~來我宿舍,給你啊~~~呵呵

F. C語言程序設計 班級學生成績管理系統

設計課題一:班級成績管理系統

一、 問題描述:

對一個有N個學生的班級,每個學生有M門課程。該系統實現對班級成績的錄入、顯示、修改、排序、保存等操作的管理。
二、功能要求:

1、本系統採用一個結構體數組,每個數據的結構應當包括:學號、姓名、M門課程名稱。
2、本系統顯示這樣的菜單:
請選擇系統功能項:
a、 成績錄入
b、 成績顯示
c、 成績保存
d、 成績排序
e、 成績修改(要求先輸入密碼)
f、 成績統計
(1) 顯示每門課程成績最高的學生的基本信息
(2) 顯示每門課程的平均成績
(3) 顯示超過某門課程平均成績的學生人數
g、 退出系統
3、執行一個具體的功能之後,程序將重新顯示菜單。
4、將學生成績保存到文件中。
三、演算法提示:

1、數據結構:結構體類型數組。
2、資料庫結構:下表構成該系統的基本資料庫。

姓名 學號 課程名稱1 課程名稱2 ●●●●●●
char Char float float

四、測試數據:

學生人數N=10
課程門數M=4
課程名:數學、語文、英語、政治

五、其它
對該系統有興趣的同學可以在實現上述基本功能後,完善系統的其它功能。
問題補充:
今天誰能給我答案啊!!!!!!!急急!!!!!!!
提問者: 342123465 - 一級
最佳答案
C語言課程設計報告—班級成績管理系統
需要分析:
學生成績管理系統有13種功能。把這13個功能做成13個子函數。在主函當數中設計一個菜單對這13個子數進行管理。來實現對整個系統的操作。
根據課題的要求。每一個學生的包括姓名(char)、學號(char)、M門課程的成績(float).再加上系統功能上的要求每一學生的信息還要總分和名次等。所以自然的想到要用結構體來定義每一個學生的信息結構。然後用鏈表把它們組成一個有序的整體。用對鏈表的操作來實現對所有學生信息的統一管理(成績顯示、成績排序、成績修改等)。最後為了以後按照處理後的順序保存到文件中。
. 各函數的功能:
概要設計:
程序的模塊組成:
主 函 數: int main()
新建函數:STUDENT *init()
輸入函數 :STUDENT *create()
顯示函數: void print(STUDENT *head)
刪除函數: STUDENT *delete(STUDENT *head)
按名字尋找函數: void lookup(STUDENT *head)
保存函數: void save(STUDENT *head)
按總分排序函數: STUDENT *sort(STUDENT *head)
計算總分和均分函數: void computer(STUDENT *h)
修改函數: STUDENT *Modify(STUDENT *head,STUDENT *new)
按學號排序函數: STUDENT *index(STUDENT *h)
菜單函數:int menu_select()
各個函數的主要功能:
輸入函數: 隨時輸入數據。
菜單函數:顯示系統主菜單。
顯示函數: 顯示所有學生的信息。
尋找函數: 方便學生查找自己的成績。
刪除函數: 刪除某學生的信息。
排序函數: 按總成績排序。
按學號排序函數: 按學號排序。
插入函數: 可以插入新的信息。
保存函數: 保存好學生成績,以免丟失。
統計函數:
l 顯示每門課程成績最高的學生的基本信息。
l 顯示每門課程的平均成績。
l 顯示超過某門課程平均成績的學生人數。
課題的功能模塊的劃分:
開始
菜單界面
功能選擇
初始化函數
輸入學生信息
刪除學生信息
顯示學生信息
查找學生信息
按成績排序
保存到文件
從文件讀數據
插入學生成績
分類合計
退出系統
結束
詳細設計: 整個系統除了主函數外,另外還有14個函數,實現八大功能:輸入功能、顯示功能、查找功能、排序功能、插入功能、保存功能、讀取功能。各個函數的詳細設計說明分別如下:
主函數 main()
利用無限次循環for(;;)和swithch()實現各函數的調用,系統根據輸入的數字選項來調用相應的函數。
菜單選擇函數 int menu_select()
這是一個無參函數,主要實現「功能選擇」的界面,在這個界面里有顯示系統的九大功能,根據每個功能前面的序號進行選擇。等執行完每一個函數功能後,返回菜單。
代碼設計: 初始化函數 STUDENT *init()
這是一個無參函數,裡面只有兩個語句,它的作用是使鏈表初始化,使head的值為NULL和一個清屏語句。比如:沒有這個函數的話,在你沒有輸入任何數據的情況下,去執行顯示功能的時候會顯示一些亂碼!
輸入記錄函數 STUDENT *create() 這是一個無參函數,用來執行學生成績記錄的輸入,當學生為@時停止輸入,函數結束後,帶回一個鏈表頭的指針指向一下個學生的信息插在表頭。
N-S流程圖如下:
head=NULL無條件循環
指針p指向新開辟的單元
指針p是否為空
是 否
輸入學號p->num
輸出 p->num是否為@
內存 是 否
溢出 輸入姓名p->name
停止 for(i=0;i<3;i++)
輸入 輸入成績
返回 p->sum=s;
菜單 p->average=(float)s/3;

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

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

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

N-S流程圖如下:

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

輸出p所指向的結點

p指向一下個結點

當p指的不是表尾

程序調試:

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

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

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

予我耐心解答的老師和同學,是他們為我小程序的成功起到了關鍵性的作用,那麼多個日夜,如此多的困難,同學們勤懇塌實,從開始到結束,沒有顯出一點倦意,始終熱情高漲,我感謝這種氛圍,感謝學校提供的良好條件。

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

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

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

1、要對系統的功能和要求做出詳細的分析,並合理分解任務。
2、把分解出來的子任務,做給一個相對獨立的模塊。
3、在設計一個模塊之前,要簡單構想一下總界面的顯視情況。
4、針對構想出來的界面進行程序的編寫。
最後,感謝老師您對我的指導和從百忙中抽空看我的設計,謝謝!

附件:
源程序:
#include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*其它說明*/
#include "string.h" /*字元串函數*/
#include "conio.h" /*屏幕操作函數*/
#include "mem.h" /*內存操作函數*/
#include "ctype.h" /*字元操作函數*/
#include "alloc.h" /*動態地址分配函數*/
#include "dos.h"
#define N 4 /*定義常數*/
typedef struct z1 /*定義數據結構*/
{
char no[12];
char name[20];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
/*以下是函數原型*/
STUDENT *init(); /*初始化函數*/
STUDENT *create(); /*創建鏈表*/
STUDENT *delete(STUDENT *h); /*刪除記錄*/
void print(STUDENT *h); /* 顯示所有記錄*/
void lookup(STUDENT *h); /*查找*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*讀入記錄*/
void computer(STUDENT *h); /*計算總分和均分*/
STUDENT *Modify(STUDENT *h); /*修改記錄*/
void append(); /*追加記錄*/
STUDENT *sort(STUDENT *h); /*按總分排序*/
STUDENT *index(STUDENT *h); /*按學號排序*/
int menu_select(); /*菜單函數*/
/******主函數開始*******/
main()
{
int i;
STUDENT *head; /*鏈表定義頭指針*/
printf("\n\n\n\n\n\n\n\n\n");
printf(" * * ******* * ***** ***** * * ******* \n");
printf(" * * * * * * * ** * * * \n");
printf(" * * * * ******* * * * * * *** * ******* \n" );
printf(" * * * * * * * * * * * * * \n");
printf(" * * ******* ******* ***** * *** * * * ******* \n");
printf("\n");
printf("\n");
printf("\n");
sleep(2);
head=init(); /*初始化鏈表*/
clrscr(); /*清屏*/
for(;;) /*無限循環*/
{
switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/
{ /*值不同,執行的函數不同,break 不能省略*/
case 0:head=init();break; /*執行初始化*/
case 1:head=create();break; /*創建鏈表*/
case 2:print(head);break; /*顯示全部記錄*/
case 3:head=delete(head);break; /*刪除記錄*/
case 4:lookup(head);break; /*按名字查找記錄*/
case 5:save(head);break; /*保存文件*/
case 6:head=load(); break; /*讀文件*/
case 7:computer(head);break; /*計算總分和均分*/
case 8:head=Modify(head); break; /*修改記錄,一般會插在表尾*/
case 9:head=sort(head);break; /*按部分排序*/
case 10:append();break; /*追加記錄*/
case 11:head=index(head);break; /*按學號排序*/
case 12: exit(0); /*如菜單返回值為12程序結束*/
}
}
}
/*菜單函數,返回值為整數*/
menu_select()
{
char *menu[]={"***************MENU***************", /*定義菜單字元串數組*/
" 00. init list", /*初始化*/
" 01. Enter list", /*輸入記錄*/
" 02. print list ", /*顯示單鏈表中所有記錄*/
" 03. Delete a record from list", /*從表中刪除記錄*/
" 04. Search record on name", /*按照姓名查找記錄*/
" 05. Save the file", /*將單鏈表中記錄保存到文件中*/
" 06. Load the file", /*從文件中讀入記錄*/
" 07. compute the score", /*計算所有學生的總分和均分*/
" 08. Modify an information ", /*修改某學號的信息*/
" 09. sort to make new file", /*排序*/
" 10. append record to file", /*追加記錄到文件中*/
" 11. index on nomber", /*按學號排序*/
" 12. Quit"}; /*退出*/
char s[3]; /*以字元形式保存選擇號*/
int c,i; /*定義整形變數*/
gotoxy(1,1); /*移動游標*/
textcolor(YELLOW); /*設置文本顯示顏色為黃色*/
textbackground(BLUE); /*設置背景顏色為藍色*/
gotoxy(10,2); /*移動游標*/
putch(0xc9); /*輸出左上角邊框┏*/
for(i=1;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 make by wenwei");
printf("\n Enter you choice(0~13):"); /*在菜單窗口外顯示提示信息*/
scanf("%s",s); /*輸入選擇項*/
c=atoi(s); /*將輸入的字元串轉化為整形數*/
}while(c<0||c>14); /*選擇項不在0~14之間重輸*/
return c; /*返回選擇項,主程序根據該數調用相應的函數*/
}
STUDENT *init()
{ clrscr();
return NULL;
}
/*創建鏈表*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENT指向結構體的指針*/
clrscr();
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申請空間*/
if(!info) /*如果指針info為空*/
{
printf("\nout of memory"); /*輸出內存溢出*/
return NULL; /*返回空指針*/
}
inputs("enter no:",info->no,11); /*輸入學號並校驗*/
if(info->no[0]=='@') { clrscr();break; } /*如果學號首字元為@則結束輸入,清屏後返回*/
inputs("enter name:",info->name,15); /*輸入姓名,並進行校驗*/
printf("please input %d score \n",N); /*提示開始輸入成績*/
s=0; /*計算每個學生的總分,初值為0*/
for(i=0;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; /*新輸入結點為新的頭結點*/
clrscr();
}
return(h); /*返回頭指針*/
}
/*輸入字元串,並進行長度驗證*/
inputs(char *prompt, char *s, int count)
{
char p[255];
do{
printf(prompt); /*顯示提示信息*/
scanf("%s",p); /*輸入字元串*/
if(strlen(p)>count)printf("\n too long! \n"); /*進行長度校驗,超過count值重輸入*/
}while(strlen(p)>count);
strcpy(s,p); /*將輸入的字元串拷貝到字元串s中*/
}
/*輸出鏈表中結點信息*/
void print(STUDENT *h)
{
int i=0; /* 統計記錄條數*/
STUDENT *p; /*移動指針*/
clrscr(); /*清屏*/
p=h; /*初值為頭指針*/
printf("\n\n\n*********************************STUDENT************************************\n");
printf("|rec|nO | name | sc1| sc2| sc3| sc4| sum | ave |order|\n");
printf("|---|----------|---------------|----|----|----|----|--------|--------|-----|\n");
while(p!=NULL) /*只要p不是尾結點,就輸出記錄*/
{
i++;
printf("|%3d|%-10s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->sum,p->average,p->order);
p=p->next;
}
printf("***********************************end**************************************\n");
getch(); /*輸入任一鍵返回主菜單*/
clrscr(); /*清屏*/
}
/*刪除記錄*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p為查找到要刪除的結點指針,q為其前驅指針*/
char s[12]; /*存放學號*/
char *pass="wenwei28";
char a[20],b=NULL;
int i=0;
clrscr();
printf("Input your password:");
while((i<20)&&(b!='\r'))
{ b=getch(); /*無回顯輸入*/
if(b==8)
{ if(i>0)
{a[--i]=NULL;
putchar(8); /*退格鍵*/
putchar(' '); /*以空格代替*/
putchar(8);
}
else putchar(7); /*沒有任何字元的退格,響鈴警告*/
}
else if(b!='\r')
{ a[i++]=b; /*只要不是退格和回車就接受*/
putchar('*');
}
else
{a[i]=NULL; break; /*密碼輸入完了,記得加個NULL到後面*/
}
}
if(strcmp(a,pass)!=0)
{clrscr();
printf("Password is mistake Tow seconds to return!");
sleep(2);clrscr();return h;
}
else {printf("Password is OK! Welcome to come!"); sleep(3);
}
clrscr(); /*清屏*/
printf("please deleted no\n"); /*顯示提示信息*/
scanf("%s",s); /*輸入要刪除記錄的學號*/
q=p=h; /*給q和p賦初值頭指針*/
while(strcmp(p->no,s)&&p!=NULL) /*當記錄的學號不是要找的,或指針不為空時*/
{
q=p; /*將p指針值賦給q作為p的前驅指針*/
p=p->next; /*將p指針指向下一條記錄*/
}
if(p==NULL) /*如果p為空,說明鏈表中沒有該結點*/
{ printf("\nlist no %s student\n",s);sleep(2);clrscr();return h;}
else /*p不為空,顯示找到的記錄信息*/
{
printf("*********************************have found********************************\n");
printf("|no | name | sc1| sc2| sc3| sc4| sum | ave |order|\n");
printf("|------------|---------------|----|----|----|----|--------|--------|-----|\n");
printf("|%-12s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6-5.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[ q=p; /*保存當前結點的指針,作為下一結點的前驅*/
p=p->next; /*指針後移,新讀入數據鏈到當前表尾*/
}
q->next=NULL; /*最後一個結點的後繼指針為空*/
fclose(fp); /*關閉文件*/
printf("---You have success read data from file!!!---\n");
getch(); /*按任意鍵返回主菜單*/
clrscr();
return h; /*返回頭指針*/
}
/*成績統計*/
void computer(STUDENT *h)
{
STUDENT *p,*t,*q; /*定義移動指針*/
float saverage[N]={0}; /*均分初值為0*/
int i;
clrscr();
for (i=0;i<N;i++)
{ int n=0,j=0; /*保存記錄條數初值為0*/
long s=0; /*總分初值為0*/
p=h; /*從頭指針開始*/
while(p!=NULL) /*當p不為空時處理*/
{
s+=p->score[i]; /*累加總分*/
j++; /*統計記錄條數*/
p=p->next; /*指針後移*/
h; /*返回頭指針
}

G. 急求C語言 學生成績管理系統 程序及流程圖(要簡單的)

要最簡單,學生成績定義一個int數組,姓名或學號定義一個char數組。定義一個變數n記錄當前數組保存的學生個數,初值0。
添加學生信息就給這兩個數組賦值就好了。同時n++。
要刪除那你循環遍歷數組,通過學生名或學號找到數組對應下標。然後把之後的數組元素往前移動一位。同時n--。
修改信息就更簡單,循環遍歷到對應下標直接重新賦值。
如果想復雜點,可以用結構定義學生相關信息,然後寫鏈表創建刪除和修改。這方面我之前給別人寫過好幾個,你可以去我回答記錄里先。

H. c語言幫幫忙 學生成績管理 要用流程圖描述實現演算法,根據演算法進行代碼的編寫

//biaobiao.cpp:.

//

#include"stdafx.h"

#include<stdio.h>

#include<math.h>

#include<string.h>

#defineMaxSize100

typedefstructstud

{

charname[10];

intnum;

floatc;

floatmath;

floatenglish;

floatzf;

intpnum;

intpzf;

}Stud;

voidReadFile(Studstud[],int&n)

{

FILE*fp;

longlength;

inti;

if((fp=fopen("stud.dat","rb"))==NULL){

n=0;

return;

}

fseek(fp,0,2);

length=ftell(fp);

rewind(fp);

n=length/sizeof(Stud);

if(n!=0)

n--;

else

stud[0].pnum=stud[0].pzf=-1;

for(i=0;i<=n;i++)

fread(&stud[i],sizeof(Stud),1,fp);

fclose(fp);

}

voidClearup(Studstud[],int&n)

{

FILE*fp;

if((fp=fopen("stud.dat","wb"))==NULL){

printf(">>文件不能打開 ");

return;

}

stud[0].pnum=stud[0].pzf=-1;

n=0;

fclose(fp);

printf("============================================================================ ");

}

voidSaveFile(Studstud[],int&n)

{

inti;

FILE*fp;

if((fp=fopen("stud.dat","wb"))==NULL){

printf(">>文件不能打開 ");

return;

}

if(n>1)

for(i=0;i<=n;i++)

fwrite(&stud[i],sizeof(Stud),1,fp);

fclose(fp);

printf("============================================================================ ");

}

voidInput(Studstud[],int&n)

{

inti;

intflag=0;

printf(">>請輸入登記學生姓名學號C語言成績數學成績英語成績: ");

n++;

scanf("%s%d%f%f%f",&stud[n].name,&stud[n].num,&stud[n].c,&stud[n].math,&stud[n].english);

stud[n].zf=stud[n].c+stud[n].math+stud[n].english;

for(i=0;i<=n-2;i++)

{

if(stud[i].num==stud[n].num)

{

flag=flag+1;

}

}

if(flag!=0)

printf("學號輸入重復,請檢查!! ");

stud[n].pnum=stud[n].pzf=0;

printf("============================================================================ ");

}

voidOutputFile(Studstud[],intn)

{

inti;

if(n<1)

{

printf(">>沒任何記錄 ");

return;

}

printf("----------------------------------------------------------------- ");

printf("|姓名|學號|C語言成績|數學成績|英語成績|總分| ");

printf("----------------------------------------------------------------- ");

for(i=1;i<=n;i++)

{

printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[i].name,stud[i].num,stud[i].c,stud[i].math,stud[i].english,stud[i].zf);

printf("----------------------------------------------------------------- ");

}

}

voidDispnum(Studstud[],intn)

{ inti=2,j;

intk=stud[0].pnum;

if(n<1)

{

printf(">>沒有這種記錄,不能進行排序 ");

return;

}

stud[0].pnum=1;stud[1].pnum=-1;

while(i<=n)

{

j=0;

while(stud[j].pnum!=-1&&stud[stud[j].pnum].num<stud[i].num)

j=stud[j].pnum;

stud[i].pnum=stud[j].pnum;

stud[j].pnum=i;

i++;

}

printf("----------------------------------------------------------------- ");

printf("|姓名|學號|C語言成績|數學成績|英語成績|總分| ");

printf("----------------------------------------------------------------- ");

while(k!=-1)

{

printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[k].name,stud[k].num,stud[k].c,stud[k].math,stud[k].english,stud[k].zf);

printf("----------------------------------------------------------------- ");

k=stud[k].pnum;

}

printf("============================================================================ ");

}

voidDispzf(Studstud[],intn)

{ inti=2,j;

intk=stud[0].pzf;

if(n<1)

{

printf(">>沒有記錄,不能進行排序 ");

return;

}

stud[0].pzf=1;stud[1].pzf=-1;

while(i<=n)

{

j=0;

while(stud[j].pzf!=-1&&stud[stud[j].pzf].zf<stud[i].zf)

j=stud[j].pzf;

stud[i].pzf=stud[j].pzf;

stud[j].pzf=i;

i++;

}

printf("----------------------------------------------------------------- ");

printf("|姓名|學號|C語言成績|數學成績|英語成績|總分| ");

printf("----------------------------------------------------------------- ");

while(k!=-1)

{

printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[k].name,stud[k].num,stud[k].c,stud[k].math,stud[k].english,stud[k].zf);

printf("----------------------------------------------------------------- ");

k=stud[k].pzf;

}

printf("============================================================================ ");

}

voidxuehao(Studstud[],intn)

{

intnum,i,flag=0;

printf("請輸入你要查詢學生的學號: ");

scanf("%d",&num);

for(i=0;i<=n;i++)

{

if(stud[i].num==num)

{

printf("----------------------------------------------------------------- ");

printf("|姓名|學號|C語言成績|數學成績|英語成績|總分| ");

printf("----------------------------------------------------------------- ");

printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[i].name,stud[i].num,stud[i].c,stud[i].math,stud[i].english,stud[i].zf);

printf("----------------------------------------------------------------- ");

flag++;

}

}

if(flag==0)printf("查詢操作失敗,沒有你要查詢的學生!!! ");

elseprintf("查詢操作成功!!! ");

printf("============================================================================ ");

}

voidxingming(Studstud[],intn)

{

charname[10];

inti,flag=0;

printf("請輸入你要查詢的學生的姓名: ");

scanf("%s",&name);

for(i=0;i<=n;i++)

{

if(strcmp(stud[i].name,name)==0)

{

printf("----------------------------------------------------------------- ");

printf("|姓名|學號|C語言成績|數學成績|英語成績|總分| ");

printf("----------------------------------------------------------------- ");

printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[i].name,stud[i].num,stud[i].c,stud[i].math,stud[i].english,stud[i].zf);

printf("----------------------------------------------------------------- ");

flag++;

}

}

if(flag==0)printf("查詢操作失敗,沒有你要查詢的學生!!! ");

elseprintf("查詢操作成功!!! ");

printf("============================================================================ ");

}

voidModify(Studstud[],intn)

{

intNO,j;

intflag=0;

floatc,math,english;

printf("請輸入你要修改學生的學號: ");

scanf("%d",&NO);

for(j=0;j<=n;j++)

{

if(stud[j].num==NO)

{

printf("請輸入你要修改的學生的C語言成績數學成績英語成績: ");

scanf("%f%f%f",&c,&math,&english);

stud[j].c=c;stud[j].math=math;stud[j].english=english;

stud[j].zf=stud[j].c+stud[j].math+stud[j].english;

flag++;

}

}

if(flag==0)printf("修改操作失敗,該學號不存在!!! ");

elseprintf("修改操作成功!!! ");

printf("============================================================================ ");

}

voidDelete(Studstud[],int&n)

{

intNO,i,j;

intflag=0;

printf("請輸入你要刪除的學生的學號: ");

scanf("%d",&NO);

for(i=0;i<=n;i++)

{

if(stud[i].num==NO)

{

for(j=i;j<n;j++)

stud[j]=stud[j+1];

flag++;

}

}

if(flag==0)printf("刪除操作失敗,該學號不存在!!! ");

else{n--;

printf("刪除操作成功!!! ");

}

printf("============================================================================ ");

}

voidmain()

{ doublemmy=sin(0.0);

Studstud[MaxSize];

intk,n;

printf("歡迎使用學生成績管理系統!!! ");

printf("============================================================================ ");

ReadFile(stud,n);

do{

printf("1:學生登記2:顯示學生信息 ");

printf("3:清空記錄4:刪除記錄 ");

printf("5:按學號排序輸出6:按總分排序輸出 ");

printf("7:學號查詢8:姓名查詢 ");

printf("9:修改0:儲存退出 ");

printf("請選擇相應的功能:");

scanf("%d",&k);

if(k>9&&k<0)printf("操作不當,請重新輸入: ");

switch(k)

{

case1:Input(stud,n);

break;

case2:OutputFile(stud,n);

break;

case3:Clearup(stud,n);

break;

case4:Delete(stud,n);

break;

case5:Dispnum(stud,n);

break;

case6:Dispzf(stud,n);

break;

case7:xuehao(stud,n);

break;

case8:xingming(stud,n);

break;

case9:Modify(stud,n);

break;

case0:SaveFile(stud,n);

break;

}

}while(k!=0);

}

效果圖:

I. c語言學生成績系統流程圖 救命 ~~

用軟體幫你分析的

你的代碼咋沒有頭文件哦

我幫你加的哈

#include<stdio.h>

熱點內容
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:742
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:171
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:208
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554