㈠ 畢業論文用c語言寫管理系統,為界面如何設計煩惱-2013-07-17
只差界面設計。。。
最難的就是界面設計其實,如果你只是了解C語言,那基本上在編程上,可以是相當於小學畢業。
MFC界面設計的層次大概打個比方就是「高中」,現在看MFC,它的難度會遠遠超過你的想像。
速成的話。。。沒有很好的辦法,界面設計在學校里基本上是不可能會教的,因為這些都是商業機密技術,QQ的界面,360的界面,都是專業的UI庫做的,這些庫隨便就是上百萬的授權費。
繼續回答你:
這樣的一個界面上,你看著簡單,但其實用到的控制項很多,按鈕,列表,表格等等,你要想用MFC寫這樣的一個界面,那你幾乎得把MFC全部學完,夜以繼日地看,我個人感覺需要一個月的時間。還有如果你是用MFC的話,那麼你會發現,你寫控制台用的C語言和MFC的C語言,會完全不一樣,微軟封裝了很多的數據結構,甚至連函數調用都封裝了,看起來很頭疼的。
㈡ 用C語言 求問管理系統界面源代碼(要有獨立窗口,和顏色)
linux 使用ncurses
windows使用控制台界面編程。
具體直接網路搜一下 控制台界面編程; linux 搜一下學生管理系統
就可以了
㈢ 如何用c語言程序編一個管理系統
結構定義如下,其他的自己寫吧,內容太多了
struct user_info {
char[10] user_code;
char[10] user_name;
char[10] passeord;
char user_limit;
}
㈣ 用C語言編寫學生管理系統界面
已經在VC6.0上運行確認:
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
typedef struct STUDENT
{
char studentNumber[20];/*學生學號*/
char studentName[20];/*學生姓名*/
char className[20];/*班級名稱*/
float mark1;/*第1門成績*/
float mark2;/*第2門成績*/
float mark3;/*第3門成績*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink; /*鏈表表頭指針*/
/*函數聲明*/
void ReadInfoFormFile();
void Menu();
void CreateHeadLink();
STUDENT *MallocNode();
void GetInformation(STUDENT *t);
void OutputInformation();
void DesplayInfoBystudentName();
void DesplayInfoBystudentNumber();
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber();
void ChangeMarkByName();
void ChangeMarkByNumber();
void SaveLinkToFile();
void paixu();
void DesplayMarkSegment();
int choose;/*用於接受用戶的選擇*/
/*主函數*/
void main()
{
printf("\n\t\t\t歡迎進入學生成績管理系統\n\n\n");
printf("\t\t\t\tO(∩_∩)O\n\n\n\n");
printf("\t\t\t^_^\t\t\t^_^\n\n");
printf("\n\t\t 注意:請按照要求輸入相應信息,謝謝!\n\n\n\n\n");
printf("\t\t\t 按任意鍵進入…………");
getch();
CreateHeadLink();
ReadInfoFormFile();
Menu();
}
/*從文件中讀學生信息到鏈表中*/
void ReadInfoFormFile(void)
{
FILE *fp;
STUDENT *p;
fp=fopen("student.txt","r");
if(!fp)
{
printf("\n");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3))>0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/*顯示菜單,根據用戶的輸入完成相應的功能*/
void Menu(void)
{
STUDENT *p;
printf("\t\t (^o^)歡迎使用學生成績管理系統(^o^)\n\n");
printf("\t ※--------------------請選擇相應功能---------------------※\n\n");
printf("\t 1: 顯示所有學生的信息 |");
printf(" \t 2: 按姓名查詢 |\n\n");
printf("\t 3: 按學號查詢 |");
printf(" \t\t 4: 增加學生 |\n\n");
printf("\t 5: 刪除學生 |");
printf(" \t\t 6: 按姓名修改學生成績 |\n\n");
printf("\t 7: 按學號修改學生成績 |");
printf(" \t 8: 保存所有學生信息 |\n\n");
printf("\t 9: 按成績輸出學生信息 |");
printf("\t 10: 顯示不及格及優秀學生 |\n\n");
printf("\t 11: 返回主菜單 |");
printf("\t\t 12: 退出 |\n\n");
printf("\t ※----------------------O(∩_∩)O------------------------※\n\n");
printf("\t 請輸入對應數字:");
scanf("%d",&choose);/*取得用戶的選擇*/
switch(choose)
{
case 1:
OutputInformation();/*顯示所有學生的信息*/
break;
case 2:
DesplayInfoBystudentName();
break;
case 3:
DesplayInfoBystudentNumber();/*根據用戶輸入的學號顯示該學生的信息*/
break;
case 4:
p=MallocNode();/*先申請一個新結點*/
GetInformation(p);/*要求用戶輸入信息到新結點中*/
InsertOneNode(p);/*將新結點加到鏈表中*/
break;
case 5:
DeleteNodeBystudentNumber();/*根據用戶輸入的學號刪除該學生*/
break;
case 6:
ChangeMarkByName();/*根據用戶輸入的姓名修改學生成績*/
break;
case 7:
ChangeMarkByNumber();/*根據用戶輸入的學號修改學生成績*/
break;
case 8:
SaveLinkToFile();/*保存數據*/
break;
case 9:
paixu();break;
case 10:
DesplayMarkSegment();break;
case 11:
break;
case 12:
SaveLinkToFile();/*保存數據後再退出*/
free(headLink);
break;
default: break;
}
Menu();/*遞歸調用*/
}
/*建立鏈表表頭*/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p->next=NULL;
}
/*申請一個新結點,並將其初始化*/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i<10;i++)
memset(p->studentNumber,NULL,20);
for(i=0;i<20;i++)
memset(p->studentName,NULL,20);
for(i=0;i<20;i++)
memset(p->className,NULL,20);
p->mark1=0.0;
p->mark2=0.0;
p->mark3=0.0;
p->next=NULL;
return p;
}
/*取得用戶輸入的學生信息*/
void GetInformation(STUDENT *t)
{
printf("請輸入學生學號:");
scanf("%s",t->studentNumber);
printf("請輸入學生姓名:");
scanf("%s",t->studentName);
printf("請輸入該生所在班級:");
scanf("%s",t->className);
printf("請輸入第1門成績:");
scanf("%f",&(t->mark1));
printf("請輸入第2門成績:");
scanf("%f",&(t->mark2));
printf("請輸入第3門成績:");
scanf("%f",&(t->mark3));
}
/*在鏈表的結尾處增加一個結點*/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/*根據用戶輸入的學生姓名顯示該學生的信息*/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
p=headLink->next;
printf("請輸入學生姓名:");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag) {
printf("\t 對不起,不存在姓名為 %s 的學生\n",studentName);}
}
/*根據用戶輸入的學號顯示該學生的信息*/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
p=headLink->next;
printf("請輸入學生學號:");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag) {
printf("\t 對不起,不存在學號為 %s 的學生\n",studentNumber);
}}
/*輸出一個結點的信息*/
void DesplayOneNode(STUDENT *t)
{
printf("\t%s\t",t->studentNumber);
printf("%s\t",t->studentName);
printf("%s\t",t->className);
printf("%.2f\t",t->mark1);
printf("%.2f\t",t->mark2);
printf("%.2f\t",t->mark3);
printf("%.2f\t",t->mark1+t->mark2+t->mark3);
printf("%.2f\t\n",(t->mark1+t->mark2+t->mark3)/3);
}
/*根據用戶輸入的學號刪除該學生*/
void DeleteNodeBystudentNumber(void)
{
char studentNumber[10];
STUDENT *p,*q;
char flag=0;
printf("請輸入要刪除的學生學號:");
scanf("%s",studentNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->studentNumber,studentNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
{
printf("\t 不存在該學號的學生\n");
return;
}
printf("\t 成功刪除\n");
}
/*顯示所有學生的信息*/
void OutputInformation(void)
{
STUDENT *p;
p=headLink->next;
if(p==NULL)
{
printf("\t 現在沒有學生信息,請先輸入學生信息\n\n");
return;
}
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/*根據輸入的姓名修改成績*/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink->next;
printf("請輸入學生姓名:");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("請輸入新的第1門成績:\n");
scanf("%f",&mark1);
printf("請輸入新的第2門成績:\n");
scanf("%f",&mark2);
printf("請輸入新的第3門成績:\n");
scanf("%f",&mark3);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
flag=1;
printf("修改成功\n");
break;
}
p=p->next;
}
if(!flag) {
printf("\t 對不起,不存在姓名為 %s 的學生\n",studentName);
} }
/*根據輸入的姓名修改成績*/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink->next;
printf("請輸入學生學號:");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("請輸入新的第1門成績:\n");
scanf("%f",&mark1);
printf("請輸入新的第2門成績:\n");
scanf("%f",&mark2);
printf("請輸入新的第3門成績:\n");
scanf("%f",&mark3);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
flag=1;
printf("修改成功\n");
break;
}
p=p->next;
}
if(!flag){
printf("\t 對不起,不存在學號為 %s 的學生\n",studentNumber);
}}
/*保存鏈表數據到文件中*/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink->next;
if(p==NULL)
{
printf("\t 現在沒有學生信息,請先輸入學生信息\n\n");
return;
}
fp=fopen("student.txt","w+");
if(!fp)
{
printf("文件不存在\n");
return;
}
while(p)
{
fprintf(fp,"%s %s %s %f %f %f\n",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3);
p=p->next;
}
fclose(fp);
}
/*顯示優秀和不及格學生成績*/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink->next;
printf("\t60分以下(不及格)的學生成績如下:\n");
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n\n");
while(p)
{
if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10))))/*只要有一科不及格就認為該生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("\t不及格的學生一共有%d人\n",count);
p=headLink->next;
printf("\t成績優秀的學生成績如下:\n");
printf("\t學號\t姓名\t班級\t成績1\t成績2\t成績3\t總成績\t平均成績\n\n");
count=0;
while(p)
{
if((8<=((int)(p->mark1/10)))&&(8<=((int)(p->mark2/10)))&&(8<=((int)(p->mark3/10))))
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("\t成績優秀的學生一共有%d人\n",count);
}
/*按總成績排序*/
void paixu(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("\t 現在還沒學生信息,請先輸入學生信息\n");
return;
}
while(r)/*兩層while循環實現排序*/
{
p=r;
q=r->next;
while(q)
{
if((q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3))
{
strcpy(exchange.studentNumber,q->studentNumber);/*先復制q結點信息到exchange*/
strcpy(exchange.studentName,q->studentName);
strcpy(exchange.className,q->className);
exchange.mark1=q->mark1;
exchange.mark2=q->mark2;
exchange.mark3=q->mark3;
strcpy(q->studentNumber,p->studentNumber);/*再復制p結點信息到q*/
strcpy(q->studentName,p->studentName);
strcpy(q->className,p->className);
q->mark1=p->mark1;
q->mark2=p->mark3;
q->mark3=p->mark3;
strcpy(p->studentNumber,exchange.studentNumber);/*最後復制exchange結點信息到p*/
strcpy(p->studentName,exchange.studentName);
strcpy(p->className,exchange.className);
p->mark1=exchange.mark1;
p->mark2=exchange.mark2;
p->mark3=exchange.mark3;
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}
㈤ 如何使用C語言編寫圖書管理系統
圖書管理系統是運行於Windows系統下的應用軟體,主要用於對圖書館中的圖書信息進行增、刪、改、查等操作,並且還可對使用該系統的用戶進行登錄名和密碼的管理等。系統給用戶提供了一個簡單的人機界面,使用戶可以根據提示輸入操作項,調用系統提供的管理功能。
所需功能類似於學生成績管理系統,界面可參考附錄C。用戶分為管理員和一般人員兩大類。
功能需求描述如下。
①用戶登錄:根據用戶輸入的用戶名和密碼判斷是否允許該用戶使用本系統,並且當用戶登錄後根據用戶許可權判斷用戶可以使用哪些功能。學生只有瀏覽等許可權而不能進行實質性改動。
②提供系統主控平台:系統主控平台也應根據用戶許可權不同而有所區別,只列出在用戶許可權范圍內的功能供用戶選擇。系統主控平台包括輸入功能選項、調用相應程序兩大需求。教師和學生對應的系統主控平台是不同的。所能進行的操作也不相同。
③創建圖書信息文件:用戶根據提示輸入圖書編號、圖書分類號、書名、作者姓名、出版社名、出版年月、定價、存庫數量和借閱和上架情況等等信息存儲在系統磁碟的文件中。以便進行管理、查找和備份。
④增加圖書信息:可在原有圖書信息文件的基礎上增加新的圖書信息記錄並繼續保存至磁碟,並且將增加後的文件存儲狀況顯示給用戶。
⑤刪除圖書信息:提示用戶輸入要進行刪除操作的圖書編號,如果在文件中有該信息存在,則將該書號所對應的記錄刪除。並選擇是否繼續進行刪除操作。
⑥修改圖書信息:提示用戶輸入要進行修改操作的書號,如果在文件中有該息存在,則將提示用戶輸入該書號對應的要修改的選項,結果存儲於文件。該部分需求也需要提示用戶選擇是否繼續進行修改操作。
⑦查詢圖書信息:提供按書號或書名等查詢。在該功能中,也需提示用戶是否需要繼續查再繼續查找,則返回主界面。
⑧一般用戶查詢個人的借閱情況並按日期進行排序:。
⑨管理員和一般用戶管理:管理員對用戶的管理也需要進行用戶的創建、增加、刪除、瀏覽。管理員創建的用戶存儲在名為yonghu的磁碟文件中,每當有用戶登錄系統時,會根據該文件中的用戶名和密碼進行核實判斷,用戶才能夠順利登錄。管理員還具有用戶的功能。增加的用戶及密碼、許可權等也被繼續存儲在yonghu文件中。當某些用一用該系統時,還可以進行刪除操作,並且管理員具有修改用戶許可權的功能,一般用戶和管理員對於系統的許可權是不一樣的。
㈥ c語言學生成績管理系統最好帶界面 求大神幫幫小弟哈 木有多少分 全奉獻了
如果可以的話就用這個吧。
#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函數調用關系圖
註:「→」代表調用
Input函數
列印鏈表記錄
Display函數
輸入若干條記錄
menu_select()函數
選擇菜單
Sort_by_num函數
顯示所有記錄
Delete_a_record函數
按姓名查找,刪除一條記錄
Query_a_record查找並顯示一條記錄
Statistic函數
輸出統計信息 (新增)
AddfromText函數
從正文中添加數據到結構體數組中
Main函數
Insert_a_record插入一條記錄
WritetoText函數 將所有數據寫入文件中
退出程序
Reverse(head)函數
按學號排序
五、設計測試流程
1、進入界面
2、輸入選項1,回車;
按提示輸入數據:
3、回到主菜單;
輸入選項7,回車;
輸入文件名:data.txt,回車;
出現成功提示,則讀入文件操作成功。
4、回到主菜單,輸入2,回車
每10個暫停顯示數據
5、回到主菜單,輸入3,回車
出現排序成功信息。
6、回到主菜單,輸入4,回車
按提示插入一組數據
7、回到主菜單,輸入5,回車
按提示輸入姓名,刪除數據
出現刪除成功的信息
8、回到主菜單,輸入6,回車
輸入姓名進行查詢
9、回到主菜單,輸入7,回車
出現統計信息
10、回到主菜單,輸入9,回車
輸入result.txt,回車
出現成功寫入文件的信息
11、回到主菜單,輸入0,回車退出系統贊同10| 評論
向TA求助 回答者: kingkey001 | 二級
擅長領域: 魔獸世界 生活常識 物理學 辦公軟體 C/C++
參加的活動: 暫時沒有參加的活動
提問者對回答的評價:
1樓的代碼我一點也沒用
3樓的代碼我進行修改的作為2.0 但改到2.3不能改了 因為限制性太大
相關內容
2007-7-26 學生成績管理系統C語言不用鏈表而用結構體數組如何實現 40 2010-11-27 用結構體數組或鏈表開發一個小型的學生成績管理系統。 2011-6-17 C語言設計一個程序,統計一個班(最多有35人)的學生成績(不用鏈... 2011-6-1 c語言結構體數組,鏈表的問題~~~請進 2011-7-21 一、課程設計目的: 實現結構體和指針綜合編程或者應用指針處理鏈... 更多關於用c語言編寫管理系統實現刪除功能 注意是用數組不是鏈表的問題>>
查看同主題問題: 學生成績管理系統 管理系統 語言
結構體數組:初始化 結構體數組:指針 結構體數組:定義 結構體數組:排序 2010-6-19結構體數組初始化452011-10-6結構體數組 初始化問題12007-1-29結構體數組初始化問題12011-6-9二維動態結構體數組的初始化32011-5-10關於結構體數組初始化的問題更多關於結構體數組:初始化的問題>>
其他回答 共3條 2007-7-20 16:48 0902060114 | 六級
原理一樣的,只要把鏈表中的指針域去掉,然後再定義一個結構體數組就可以了.其它什麼查詢\增加,排序比鏈表都簡單.排序可以用選擇法,冒泡都可以.差不多就是下面一個.
#include"stdio.h"
#include"string.h"
struct student
{
char name[10];
int no;
int score[5];
};
struct student ss[25];
float aver1[25],sum[25],aver2[5];
void fun1() /*求每個同學的平均分並輸出*/
{
int i,j,s=0;
for(i=0;i<25;i++)
{
for(j=0;j<5;j++)
s+=ss[i].score[j];
aver1[i]=s/5.0;
printf("the%dstudent's average score is%f",i+1,aver1[i]);
}
}
void funn2() /*求第一門課的平均分並輸出*/
{
int i,j=0,s=0;
for(j=0;j<5;j++)
{
for(i=0;i<25;i++)
s+=ss[i].score[j];
aver2[j]=s/25.0;
printf("the%d lesson's average scroe is%f",j+1,aver2[j]);
}
}
void sort()/*排序*/
{
int i,j,k,t;
float m;
char s[10];
for(i=0;i<24;i++)
{
k=i;
for(j=i+1;j<25;j++)
if(aver1[k]<aver1[j])k=j;
if(k!=i)
{
m=aver1[i];
aver1[i]=aver1[k];
aver1[k]=m;
strcpy(s,ss[i].name);
strcpy(ss[i].name,ss[k].name);
strcpy(ss[k].name,s);
t=ss[i].no;
ss[i].no=ss[k].no;
ss[k].no=t;
}
}
}
void fun5()
{
int g,h;
printf("name number average'score:");
for(g=0;g<25;g++)
printf("%s %d %f \nevery students' average score:\n",ss[g].name,ss[g].no,aver1[g]);
for(g=0,h=0;h<5;h++)
printf("%d ",ss[g++].score[h]);
}
void funn3()/*輸出不不及格的學生信息*/
{
int i,j;
for(i=0;i<25;i++)
{
for(j=0;j<5;j++)
if(ss[i].score[j]<60)
printf("%s %d %f ",ss[i].no,ss[i].score[j],aver1[i]);
}
}
void funn4()/*輸出成績位於85-95的學生成績*/
{
int i,j;
for(i=0;i<25;i++)
{
if(aver1[i]>90||aver1[i]>85)
printf("number%d,average score%f",ss[i].no,aver1[i]);
}
}
main()
{
int i,j;
void fun1();
void fun2();
void funn3();
void funn4();
void sort();
void fun5();
printf("please input 25 students'name and score:\n");
for(i=0;i<25;i++)
{
printf("the number %d student's name and number is:",i+1);
scanf("%s,%d",ss[i].name,&ss[i].no);
printf("please input number %d students'five lesson's score:\n",i+1);
for(j=0;j<5;j++)
scanf("%d",&ss[i].score[j]);
}
fun1();
funn2();
sort();
void fun5();
funn3();
funn4();
}
㈦ 用C語言做一個管理系統,怎樣才能把主界面就是選擇功能和子模塊的顯示的界面分開
就是說當選擇了主模板的某一項後,不再顯示主界面,而顯示那一選項的字模板是吧。
這樣的話,可以考慮清屏,然後重新顯示,退出時也一樣,清屏,然後重新顯示主界面。你把主界面和每個子界面的顯示分別寫成函數,在選擇或退出時,先清屏,再調用相應的顯示函數。
清屏命令需要包含#include<stdlib.h>頭文件,命令代碼:
system("cls");
給個例子:
這個例子我只寫了一個界面,沒寫內容。你可以仿照
#include<stdio.h>
#include<stdlib.h>
void zhujm()
{
printf(" 歡飲使用本系統!\n");
printf("**************************************\n");
printf("* 1.增加信息 2.修改信息 *\n");
printf("* 3.查詢信息 4.刪除信息 *\n");
printf("* 5.關於軟體 6.退出系統 *\n");
printf("**************************************\n");
}
void zijm_1()
{
printf("1.輸入信息 2.退出\n");
}
int main()
{
int num;
zhujm();
scanf("%d",&num);
while(num!=6)
{
switch(num)
{
case 1:
system("cls");
zijm_1();
scanf("%d",&num);
if(num==2)
{
system("cls");
zhujm();
}
break;
}
scanf("%d",&num);
if(num==6)
{
system("cls");
printf("謝謝使用!\n");
}
}
return 0;
}
程序運行顯示主界面,然後輸入1,可以顯示第一個子界面,然後輸入2可以退出子界面,返回主界面,可以一直這樣循環,輸入6退出系統並顯示「謝謝使用!」。
㈧ 用C語言做圖形管理系統,按回車進入選擇界面,1是矩形2是三角形3是平行四邊形4是倒三角形5是菱形
不好意思,還有部分功能沒有實現,自己琢磨琢磨
#include "stdio.h"
int i,j,k;
void Menu()//菜單
{
printf(" Menu\n");
printf("1.Output JX\n");
printf("2.Outout SJX\n");
printf("3.Output PXSBX\n");
printf("4.Output DSJX\n");
printf("5.Output LX\n");
}
void JX()//矩形
{
for(i=0;i<9;i++)
{
printf("\t");
for(j=0;j<15;j++)
printf("*");
printf("\n");
}
}
void SJX()//三角形
{
for(i=0;i<6;i++)
{
for(j=0;j<5-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("*");
printf("\n");
}
}
void PXSBX()//平行四邊形
{
for(i=0;i<5;i++)
{
for(j=0;j<5-i;j++)
printf(" ");
printf("********\n");
}
}
void DSJX()//倒三角形
{
for(i=0;i<5;i++)
{
for(j=0;j<i;j++)
printf(" ");
for(k=0;k<9-2*i;k++)
printf("*");
printf("\n");
}
}
void LX()//棱形
{
for(i=0;i<4;i++)
{
for(j=0;j<3-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("*");
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<=i;j++)
printf(" ");
for(k=0;k<5-2*i;k++)
printf("*");
printf("\n");
}
}
void Choice(N)//圖形選擇
{
switch(N)
{
case 1:JX();
break;
case 2:SJX();
break;
case 3:PXSBX();
break;
case 4:printf("DSJX\n");
DSJX();
break;
case 5:printf("LX\n");
LX();
break;
default:printf("!!!INPUT ERROR!!!\n");
}
}
void main()
{
int n;
//char c;
Menu();
printf("Please Input Your Choice:");
scanf("%d",&n);
Choice(n);
}
㈨ 【C語言程序設計】學生成績管理系統。不要框架 要全代碼!!!謝謝了
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define MY1 printf("學號\t姓名\t性別\t年齡\t生日")
#define MY2 printf("\n%d %6s %4s\t%2d %8d%2d%2d \n",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].a.year,s
[i].a.month,s[i].a.day)
#define MY3 printf("家庭住址 聯系方式 高數 英語 大物 總成績")
#define MY4 printf("\n%4s %4s %2d %2d %2d %2d\n",s[i].address,s[i].tel,s[i].c.gao,s[i].c.ying,s
[i].c.wu,s[i].c.total)
#define MAX 30
int i;
int sum;
/*時間結構體類型*/
struct date
{
int year;
int month;
int day;
}a;
/*學生成績結構體類型*/
struct score
{
int gao;
int ying;
int wu;
int total;
}c;
/*學生信息結構體類型*/
struct s_message
{
int num;
char name[20];
char sex[5];
int age;
struct date a;
char address[50];
char tel [11];
struct score c;
}s[MAX];
/*保存學生信息模塊*/
void save_message(int sum)
{
int i;
FILE*fp;
if((fp=fopen("D:\\s.txt","wb"))==NULL)
{
printf("reading file is wrong!\n");
return;
}
for (i=0;i<sum;i++)
{
if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1)
printf("writing file is wrong!\n");
}
fclose(fp);
}
/*讀取學生信息模塊*/
int read_message()
{
FILE *fp;
int i=0;
if((fp=fopen("D:\\s.txt","rb"))==NULL)
{
printf("\n\n***********暫時無任何庫存信息,按回車鍵進入主菜單選擇基本信息的錄入!***********\n");
return 0 ;
}
while(feof(fp)==0)
{
if(fread(&s[i],sizeof(struct s_message),1,fp)!=1) break;
i++;
}
fclose(fp);
return(i);
}
/*輸入學生信息模塊*/
putin_message()
{system("cls");
int i=0,m=0;
printf("\n\n***********輸入學生信息****************\n\n");
printf("輸入要輸入的學生的個數(m<MAX)\n");
scanf("%d",&m);
for(i=sum;i<sum+m;i++)
{ printf("\n\n第%d個學生的信息\n",i+1);
printf("\n 學生學號:");
scanf("%d",&s[i].num);
if(s[i].num==0) break;
printf("\n 學生姓名:");
scanf("%s",s[i].name);
printf("\n 學生性別:");
scanf("%s",s[i].sex);
printf("\n 學生年齡:");
scanf("%d",&s[i].age);
printf("\n 學生生日:");
scanf("%d%d%d",&s[i].a.year,&s[i].a.month,&s[i].a.day);
printf("\n 家庭住址:");
scanf("%s",s[i].address);
printf("\n 聯系方式:");
scanf("%s",s[i].tel);
printf("\n 高數--英語--大物(成績0-100):");
scanf("%d%d%d",&s[i].c.gao,&s[i].c.ying,&s[i].c.wu);
s[i].c.total=s[i].c.gao+s[i].c.ying+s[i].c.wu;
flushall();
}
printf("\n***********************學生信息輸入完畢**********************\n");
sum+=m;
printf("\n 按回車鍵返回主菜單!");
getch();
return 0;
}
/*輸出學生信息模塊*/
void putout_message()
{system("cls");
int i=0;
printf("\n*****************************學生信息表**********************\n\n");
for(i=0;i<sum;i++)
{
MY1;
MY2;
MY3;
MY4;
printf("\n\n");
}
printf("按回車鍵返回主菜單!");
getch();
}
/*添加學生信息*/
insert_message()
{system("cls");
int i=sum,flag=0;
char choice;
printf("\n\n**********添加一個學生信息***********\n");
do
{
printf("\n 學生學號:");
scanf("%d",&s[i].num);
if(s[i].num==0) break;
printf("\n 學生姓名:");
fflush(stdin);
scanf("%s",s[i].name);
printf("\n 學生性別:");
scanf("%s",s[i].sex);
printf("\n 學生年齡:");
scanf("%d",&s[i].age);
printf("\n 學生生日:");
scanf("%d %d %d",&s[i].a.year,&s[i].a.month,&s[i].a.day);
printf("\n 學生家庭住址:");
scanf("%s",s[i].address);
printf("\n 聯系方式:");
scanf("%s",s[i].tel);
printf("\n 高數--英語--大物(成績0-100):");
scanf("%d%d%d",&s[i].c.gao,&s[i].c.ying,&s[i].c.wu);
s[i].c.total=s[i].c.gao+s[i].c.ying+s[i].c.wu;
sum++;
printf("\n 要繼續嗎? (Y/N)");
choice=getch();
if(choice=='y'||choice=='Y')
{
printf("\n 繼續!\n");
i++;
flag=1;
}
else flag=0;
}while(flag==1);
printf(" 按回車鍵返回主菜單!");
getch();
return 0;
}
/*修改學生信息*/
revise_message()
{system("cls");
int i=0,choice1;
int revise_num,flag=0;
int r=0;
char choice2;
printf("\n 輸入要修改的學生的學號:");
scanf("%d",&revise_num);
for(i=0;i<sum;i++)
{
if(revise_num==s[i].num)
r=1;
}
if(r==0||revise_num==0)
printf("沒有該學生的相關信息");
do
{
for(i=0;i<sum;i++)
{
if(s[i].num==revise_num)
{
printf("\n 你要修改哪一項?\n");
printf("\n 1.學號\n");
printf("\n 2.姓名\n");
printf("\n 3.性別\n");
printf("\n 4.年齡\n");
printf("\n 5.生日\n");
printf("\n 6.家庭住址\n");
printf("\n 7.聯系方式\n");
printf("\n 8.高數--英語--大物--總成績\n");
printf("請選擇:");
scanf("%d",&choice1);
switch(choice1)
{
case 1: printf("\n 輸入修改後的學生學號:");
scanf("%d",&s[i].num);break;
case 2: printf("\n 輸入修改後的學生姓名:");
scanf("%s",s[i].name);break;
case 3: printf("\n 輸入修改後的學生性別:");
scanf("%s",s[i].sex);break;
case 4: printf("\n 輸入修改後的學生年齡:");
scanf("%d",&s[i].age);break;
case 5: printf("\n 輸入修改後的學生生日:");
scanf("%d%d%d",&s[i].a.year,&s[i].a.month,&s[i].a.day);break;
case 6: printf("\n 輸入修改後的學生家庭住址:");
scanf("%s",s[i].address);break;
case 7: printf("\n 輸入修改後的聯系方式:");
scanf("%s",s[i].tel);break;
case 8: printf("\n 輸入修改後的高數--英語--大物(成績0-100):");
scanf("%d%d%d",&s[i].c.gao,&s[i].c.ying,&s[i].c.wu);break;
}
}
}
printf("\n 要繼續嗎?(Y/N)");
choice2=getch();
if(choice2=='y'||choice2=='Y')
{
printf("\n 繼續!\n");
flag=1;
}
else flag=0;
}while(flag==1);
printf(" 按回車鍵返回主菜單!");
getch();
return 0;
}
/*更新學生信息模塊*/
renew_message()
{system("cls");
int choice;
do
{
printf("\n\n\n*****************更新學生信息*******************\n\n");
printf(" 1.添加學生信息\n\n");
printf(" 2.修改學生信息\n\n");
printf(" 0.返回主菜單\n\n");
printf(" choice(0-2)");
scanf("%d",&choice);
switch(choice)
{
case 1:insert_message();break;
case 2:revise_message();break;
case 0:break;
}
}while(choice!=0);
return 0;
}
/*按學號查詢*/
int inquire_num()
{system("cls");
int i=0,j,r=0;
printf("\n 輸入要查詢的學生的學號:");
scanf("%d",&j);
for(i=0;i<sum;i++)
{
if(j==s[i].num)
r=1;
}
if(r==0||j==0)
printf("沒有該學生的相關信息");
for(i=0;i<sum;i++)
if(j==s[i].num)
{
printf("\n **********學生信息**********\n");
MY1;
MY2;
MY3;
MY4;
}
getch();
return 0;
}
/*按姓名查詢*/
int inquire_name()
{system("cls");
int i=0,r=0;
char inquire_name[20];
printf("\n 輸入要查詢的學生的姓名:");
scanf("%s",inquire_name);
for(i=0;i<sum;i++)
{
if(strcmp(s[i].name,inquire_name)==0)
r=1;
}
if(r==0)
printf("無該學生信息!!!\n");
for(i=0;i<sum;i++)
if(strcmp(s[i].name,inquire_name)==0)
{
printf("\n **********學生信息**********\n");
MY1;
MY2;
MY3;
MY4;
}
getch();
return 0;
}
/*查詢高數成績及格的學生*/
int inquire_gao()
{system("cls");
int i=0,j=0;
int x=60;
printf("\n ***高數成績及格的學生的信息***\n");
for(i=0;i<sum;i++)
if(s[i].c.gao>=x)
{
MY1;
MY2;
MY3;
MY4;
j++;
}
if(j==0)
printf("無高數成績及格的學生!!!!\n");
getch();
return 0;
}
/*查詢英語成績及格的學生*/
int inquire_ying()
{system("cls");
int i=0,j=0;
int x=60;
printf("\n ***英語成績及格的學生的信息***\n");
for(i=0;i<sum;i++)
if(s[i].c.ying>=x)
{
MY1;
MY2;
MY3;
MY4;
j++;
}
if(j==0)
printf("無英語成績及格的學生!!!!\n");
getch();
return 0;
}
/*查詢大學物理成績及格的學生*/
int inquire_wu()
{system("cls");
int i=0,j=0;
int x=60;
printf("\n ***大學物理成績及格的學生的信息***\n");
for(i=0;i<sum;i++)
if(s[i].c.wu>=x)
{
MY1;
MY2;
MY3;
MY4;
j++;
}
if(j==0)
printf("無物理成績及格的學生!!!!\n");
getch();
return 0;
}
/*查詢各門成績及格的學生*/
int inquire_jige()
{system("cls");
int choice;
do
{
printf("\n\n********查詢學生信息*********\n\n");
printf(" 1.查詢高數成績及格的學生\n\n");
printf(" 2.查詢英語成績及格的學生\n\n");
printf(" 3.查詢大學物理成績及格的學生\n\n");
printf(" 0.返回主菜單\n\n");
printf(" choice(0-3)\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1: inquire_gao();break;
case 2: inquire_ying();break;
case 3: inquire_wu();break;
case 0: break;
}
}while(choice!=0);
getch();
return 0;
}
/*查詢學生信息模塊*/
inquire_message()
{system("cls");
int choice;
do
{
printf("\n\n\n********查詢學生信息*********\n\n");
printf(" 1.按學號查詢\n\n");
printf(" 2.按姓名查詢\n\n");
printf(" 3.查詢各門成績及格的學生\n\n");
printf(" 0.返回主菜單\n\n");
printf(" choice(0-3)\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1: inquire_num();break;
case 2: inquire_name();break;
case 3: inquire_jige();break;
case 0: break;
}
}while(choice!=0);
getch();
return 0;
}
/*按學號排名*/
int rank_num()
{ system("cls");
int i=0,j;
struct s_message t;
for(i=0;i<sum-1;i++)
{
for(j=i+1;j<sum;j++)
{
if(s[i].num>s[j].num)
{
t=s[j];
s[j]=s[i];
s[i]=t;
}
}
}
printf(" 從學號小到大排列:\n");
for(i=0;i<sum;i++)
{
MY1;
MY2;
MY3;
MY4;
}
getch();
return 0;
}
/*按成績排名*/
int rank_score()
{ system("cls");
int i=0,j;
struct s_message t;
for(i=0;i<sum-1;i++)
{
for(j=i+1;j<sum;j++)
{
if(s[i].c.total<s[j].c.total)
{
t=s[j];
s[j]=s[i];
s[i]=t;
}
}
}
printf(" 從成績高到低排列:\n");
for(i=0;i<sum;i++)
{
MY1;
MY2;
MY3;
MY4;
}
getch();
return 0;
}
/*學生排名信息模塊*/
int rank_message()
{ system("cls");
int choice;
do
{
printf("\n\n\n***********排名信息************\n\n");
printf(" 1.按學號排名\n\n");
printf(" 2.按成績排名\n\n");
printf(" 0.返回主菜單\n\n");
printf(" choice(0-2)");
scanf("%d",&choice);
switch(choice)
{
case 1:rank_num();break;
case 2:rank_score();break;
case 0:break;
}
}while(choice!=0);
return 0;
}
/*統計男女學生的信息*/
int count_nn()
{system("cls");
int i=0,j=0;
char k[5];
printf("\n 輸入要統計的學生的性別:");
scanf("%s",k);
printf("\n********** %s的學生的信息 **********\n",k);
for(i=0;i<sum;i++)
{
if(strcmp(s[i].sex,k)==0)
{
MY1;
MY2;
MY3;
MY4;
j++;
}
}
printf("統計%s的人數是:%d",k,j);
getch();
return 0;
}
/*按學號刪除*/
int del_num()
{system("cls");
int i=0,m=0,k=0,flag;
char choice;
char de_num;
do
{
printf("\n 輸入要刪除的學生的學號:");
scanf("%d",&de_num);
for(i=0;i<sum;i++)
{
if(s[i].num!=de_num);
else break;
}
for(i=0;i<sum;i++)
{
if(s[i].num==de_num)
{
m=i;
for(i=m+1;i<sum;i++)
s[i-1]=s[i];
}
}
sum--;
printf("\n 此學生的信息已被刪除**********\n");
printf("\n 要繼續刪除嗎?(Y/N)");
choice=getch();
if(choice=='y'||choice=='Y')
{
printf("\n 繼續!\n");
k++;
flag=1;
}
else flag=0;
}while(flag==1);
printf(" 按任意鍵返回主菜單!");
getch();
return 0;
}
/*按姓名刪除*/
int del_name()
{system("cls");
int i=0,m=0,k=0,flag;
char choice;
char de_name[20];
do
{
printf("\n 輸入要刪除的學生的姓名:");
scanf("%s",&de_name);
for(i=0;i<sum;i++)
{
if(strcmp(s[i].name,de_name)!=0);
else break;
}
for(i=0;i<sum;i++)
{
if(strcmp(s[i].name,de_name)==0)
{
m=i;
for(i=m+1;i<sum;i++)
s[i-1]=s[i];
}
}
sum=sum-1;
printf("\n 此學生的信息已被刪除**********\n");
printf("\n 要繼續刪除嗎?(Y/N)");
choice=getch();
if(choice=='y'||choice=='Y')
{
printf("\n 繼續!\n");
k++;
flag=1;
}
else flag=0;
}while(flag==1);
printf(" 按任意鍵返回主菜單!");
getch();
return 0;
}
/*刪除學生信息模塊*/
del_message()
{system("cls");
int choice;
do
{
printf("\n\n\n*****刪除學生信息*****\n\n");
printf(" 1.按學號刪除\n\n");
printf(" 2.按姓名刪除\n\n");
printf(" 0.返回主菜單\n\n");
printf(" choice(0-2)");
scanf("%d",&choice);
switch(choice)
{
case 1:del_num();break;
case 2:del_name();break;
case 0:break;
}
}while(choice!=0);
getchar();
return 0;
}
/*主函數*/
void main()
{system("cls");
int choice,m;
sum=read_message();
char a[4]="110",b[4];
printf("\n\n\n**********************************請您輸入密碼**********************************\n");
printf("密碼:");
for(m=0;m<3;m++)
{ b[m]=getch();
printf("*");
}
b[3]='\0';
getch();
if(strcmp(a,b)==0)
{
do
{
printf
("\n\n********************************************************************************\n");
printf("\n\n************密碼輸入成功歡迎您進入學生信息管理系統
******************************\n\n");
printf("********************************************************************************\n");
printf(" 1.錄入學生信息\n\n");
printf(" 2.輸出學生信息\n\n");
printf(" 3.更新學生信息\n\n");
printf(" 4.查詢學生信息\n\n");
printf(" 5.學生排名信息\n\n");
printf(" 6.統計學生信息\n\n");
printf(" 7.刪除學生信息\n\n");
printf(" 0.退出系統\n\n");
printf(" 請選擇(0-7):");
scanf("%d",&choice);
switch(choice)
{
case 1: putin_message();save_message(sum);break;
case 2: putout_message();break;
case 3: renew_message();break;
case 4: inquire_message();break;
case 5: rank_message();break;
case 6: count_nn();break;
case 7: del_message();break;
case 0: break;
}
}while(choice!=0);
save_message(sum);
printf("學籍信息被保存!--(s.txt)\n");
}
}
㈩ C語言課程設計,多媒體教室管理系統
只作為參考,網上太難找,只能自己去改咯!
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 學號 */
char name[20];
char sex[4];
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%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.sex,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.sex);
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.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.sex);
scanf("%s",p->data.sex);
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,*pt,*pa; /* 用於指向分數最高的接點 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:沒有資料可以統計!\n");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egrade)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;
r=r->next;
}
printf("------------------------------統計結果--------------------------------\n");
printf("總分最高者:\t%s %d分\n",pt->data.name,pt->data.totle);
printf("平均分最高者:\t%s %d分\n",pa->data.name,pa->data.ave);
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;
}
}
}
/* */