電 話:18937133779
網(wǎng) 址:http://www.gycxdjzzl.com
郵 箱:zboao@qq.com
學(xué)生檔案管理系統(tǒng)c語(yǔ)言用VC++6.0。C語(yǔ)言項(xiàng)目學(xué)生檔案管理系統(tǒng),本系統(tǒng)使用的開(kāi)發(fā)工具是VC++6.0。C語(yǔ)言是一門(mén)面向過(guò)程的、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語(yǔ)言是僅產(chǎn)生少量的機(jī)器語(yǔ)言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語(yǔ)言,盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫(xiě)出的C語(yǔ)言程序可在包括類似嵌入式處理器以及超級(jí)計(jì)算機(jī)等作業(yè)平臺(tái)的許多計(jì)算機(jī)平臺(tái)上進(jìn)行編譯。
/*用C語(yǔ)言設(shè)計(jì)學(xué)生檔案管理
1. 題目描述
編寫(xiě)一個(gè)程序來(lái)管理學(xué)生檔案,系統(tǒng)能實(shí)現(xiàn)以下功能:
輸入信息:學(xué)生信息的輸入;
修改信息:對(duì)學(xué)生信息進(jìn)行添加、刪除與修改;
查詢:能夠根據(jù)學(xué)號(hào)或姓名查詢某個(gè)學(xué)生的信息;
輸出:輸出所有學(xué)生信息或查詢學(xué)生信息的結(jié)果。
2. 設(shè)計(jì)提示
1)先確定學(xué)生檔案管理的數(shù)據(jù)結(jié)構(gòu)。如每個(gè)學(xué)生信息:學(xué)號(hào)、姓名、性別、年齡、地址 ……等,每個(gè)數(shù)據(jù)項(xiàng)各用什么數(shù)據(jù)類型;
2)劃分實(shí)現(xiàn)學(xué)生檔案管理的功能模塊:如主菜單、輸入數(shù)據(jù)、修改、查詢、輸出等功能,并確定各功能模塊的實(shí)現(xiàn)算法。
3)畫(huà)出各模塊的流程圖或S-R圖;
4)選擇C語(yǔ)言的技術(shù):普通數(shù)組、結(jié)構(gòu)體數(shù)組、函數(shù)、指針、單鏈表或文件等。
5)編寫(xiě)程序代碼。*/
#include<stdio.h>
#include<stdlib.h>
#include<string>
typedef struct student{
char ID[10];
char name[10];
char sex[3];
int age;
char addr[30];
struct student *next;
}stu;
void Input(stu *&head)
{
stu *temp,*current;
temp=(stu *)malloc(sizeof(stu));
printf("輸入學(xué)生信息:\n");
printf("學(xué)號(hào)\t姓名\t性別\t年齡\t地址\t\n");
fflush(stdin);
scanf("%s%s%s%d%s",temp->ID,temp->name,temp->sex,&temp->age,temp->addr);
temp->next=NULL;
if(head==NULL)
{head=(stu *)malloc(sizeof(stu));head->next=temp;}
else
{
current=head->next;
while(current->next)
current=current->next;
current->next=temp;}
printf("添加成功\n");
system("pause");
}
void FindByID(stu *&head)
{
if(head==NULL)
{printf("數(shù)據(jù)為空\(chéng)n");
system("pause");return ;}
else
{stu *current =head->next;
bool flag=0;
char a[10];
printf("輸入要查詢的學(xué)號(hào):\n");
fflush(stdin);
scanf("%s",a);
do
{
if(strcmp(current->ID,a)==0)
{flag=1;break;}
current=current->next;
}while(current!=NULL);
if(flag)
{
printf("學(xué)號(hào):%s 姓名:%s 性別:%s 年齡:%d 地址:%s\n",current->ID,current->name,current->sex,current->age,current->addr);
system("pause");
}
else
{
printf("沒(méi)有找到\n");
system("pause");
}
}
}
void FindByName(stu *&head)
{
if(head==NULL)
{printf("數(shù)據(jù)為空\(chéng)n");
system("pause");return ;}
else
{
stu *current =head->next;
bool flag=0;
char a[10];
printf("輸入要查詢的姓名:\n");
fflush(stdin);
scanf("%s",a);
do
{
if(strcmp(current->name,a)==0)
{flag=1;break;}
current=current->next;
}while(current!=NULL);
if(flag)
{
printf("學(xué)號(hào):%s 姓名:%s 性別:%s 年齡:%d 地址:%s\n",current->ID,current->name,current->sex,current->age,current->addr);
system("pause");
}
else
{
printf("沒(méi)有找到\n");
system("pause");
}
}
}
void Delete(stu *&head)
{
if(head==NULL)
{printf("數(shù)據(jù)為空\(chéng)n");
system("pause");return ;}
else
{ stu *current =head->next;
stu *prev=NULL;
char a[10];
printf("輸入要?jiǎng)h除的學(xué)號(hào):\n");
fflush(stdin);
scanf("%s",a);
while(current!=NULL)
{
if(strcmp(current->ID,a)==0)break;
prev=current;
current=current->next;
}
if(prev==NULL)
{head->next=current->next;free(current);}
else
{prev->next=current->next;
free(current);}
printf("刪除成功\n");
system("pause");
}
}
void Show(stu *&head)
{
stu *current =head->next;
if(current==NULL)
{printf("數(shù)據(jù)為空\(chéng)n");
system("pause");return ;}
printf("學(xué)號(hào)\t姓名\t性別\t年齡\t地址\t\n");
while(current!=NULL)
{
printf("%s\t%s\t%s\t%d\t%s\n",current->ID,current->name,current->sex,current->age,current->addr);
current=current->next;
}
system("pause");
}
void Modify(stu *&head)
{
if(head==NULL)
{printf("數(shù)據(jù)為空\(chéng)n");
system("pause");return ;}
bool flag=0;
char a[10];
printf("輸入要查詢的學(xué)號(hào):\n");
fflush(stdin);
scanf("%s",a);
stu *current=head->next;
do
{
if(strcmp(current->ID,a)==0)
{flag=1;break;}
current=current->next;
}while(current!=NULL);
if(flag)
{
printf("學(xué)號(hào):%s 姓名:%s 性別:%s 年齡:%d 地址:%s\n",current->ID,current->name,current->sex,current->age,current->addr);
printf("請(qǐng)重新輸入該學(xué)生信息:\n");
printf("學(xué)號(hào)\t姓名\t性別\t年齡\t地址\t\n");
scanf("%s%s%s%d%s",current->ID,current->name,current->sex,¤t->age,current->addr);
printf("修改成功\n");
printf("pause");
}
else
{
printf("沒(méi)有找到\n");
system("pause");
}
}
void Print()
{
system("cls");
printf(" 請(qǐng)選擇功能(按0退出)\n");
printf(" 1------添加學(xué)生\n");
printf(" 2------通過(guò)學(xué)號(hào)查詢學(xué)生\n");
printf(" 3------通過(guò)姓名查詢學(xué)生\n");
printf(" 4------刪除學(xué)生\n");
printf(" 5------修改學(xué)生\n");
printf(" 6------顯示所有學(xué)生\n");
}
int main()
{
char ch;
stu *head=NULL;
do
{
Print();
fflush(stdin);
ch=getchar();
//system("cls");
switch(ch)
{
case '1':Input(head);break;
case '2':FindByID(head);break;
case '3':FindByName(head);break;
case '4':Delete(head);break;
case '5':Modify(head);break;
case '6':Show(head);break;
}
}while(ch!='0');
}
我就提示一下:
運(yùn)用結(jié)構(gòu)體來(lái)保存學(xué)生檔案這樣一個(gè)元素。
然后通過(guò)不同的函數(shù)來(lái)對(duì)結(jié)構(gòu)體進(jìn)行不同的操作來(lái)模擬現(xiàn)實(shí)中不懂的檔案
事件。例如函數(shù)add() 表示增加一份學(xué)生檔案,update()表示更改一份學(xué)生檔案。
//****************************************************************************
//**** 說(shuō)明:密碼所在的文件位于c盤(pán),文件名為1.txt。
//**** 學(xué)生基本信息最好保存在C盤(pán),文件名為student.txt。
//****************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 3
struct student
{
char name[10];
char no[10];
char sex;
int age;
char bnote[100];
};
void print(bool menu)//打印基本信息
{
if (!menu)
{
printf("學(xué)生基本信息錄入 ,press 1\n");
}
else
{
printf("學(xué)生基本信息顯示 ,press 2\n");
printf("學(xué)生基本信息保存 ,press 3\n");
printf("學(xué)生基本信息刪除 ,press 4\n");
printf("學(xué)生基本信息修改 ,press 5\n");
printf("學(xué)生基本信息查詢 ,press 6\n");
}
printf("退出學(xué)生信息系統(tǒng) ,press 7\n");
}
bool Check(char pas[6])//密碼驗(yàn)證
{
FILE *fp;
char ch;
char a[7]={" "};
int i = 0;
if ((fp=fopen("c:\\1.txt","r"))==NULL)
{
printf("打開(kāi)文件失敗!\n");
exit(0);
}
ch=fgetc(fp);
while (ch!=EOF&&i<6)
{
a[i] = ch;
ch=fgetc(fp);
i++;
}
a[6] = '\0';
if (!strcmp(pas,a))
{
return true;
}
else
{
printf("密碼錯(cuò)誤\n");
return false;
}
fclose(fp);
}
void GetInfo(struct student *arr,int n)//學(xué)生基本信息錄入
{
for (int i = 0;i<n;i++)
{
printf("輸入學(xué)生的基本信息:name no sex age bnote\n");
scanf("%s %s %c %d %s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);
}
}
void Display(struct student* arr,int n)//學(xué)生基本信息顯示
{
printf("學(xué)生信息: Name NO Sex age Note\n");
for (int i = 0;i<n;i++)
{
printf("%15s%15s%15c%15d%15s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
}
}
void Save(struct student* arr,int n)//學(xué)生基本信息保存,保存在c:\\student.txt
{
FILE * fp;
fp= fopen("c:\\student.txt","w+");
if (fp == NULL)
{
printf("文件不存在!\n");
exit(0);
}
fwrite(arr,sizeof(struct student)*n,n,fp);
fclose(fp);
}
void Modfiy(struct student* arr,int n)//學(xué)生基本信息修改
{
char number[10];
bool flag=false;
char pass[6];
printf("請(qǐng)輸入密碼:\n");
scanf("%s",pass);
if (Check(pass))
{
printf("修改學(xué)生信息:\n");
printf("請(qǐng)輸入學(xué)號(hào):\n");
scanf("%s",number);
for (int i =0;i<n;i++)
{
if (!strcmp(number,arr[i].no))
{
printf("infor: name no sex age note\n");
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
printf("please input information:\n");
scanf("%s%s%c%d%s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);
Save(arr,n);
flag = true;
}
}
if (flag == false)
{
printf("該學(xué)生不存在!:\n");
}
}
}
void Delete(struct student* arr,int n)//學(xué)生基本信息刪除
{
char number[10];
bool flag=false;
printf("Delete information:\n");
printf("please input the no:\n");
scanf("%s",number);
for (int i =0;i<n;i++)
{
if (!strcmp(number,arr[i].no))
{
strcpy(arr[i].name," ");
strcpy(arr[i].no," ");
strcpy(arr[i].bnote," ");
arr[i].sex = ' ';
arr[i].age = 0;
Save(arr,n);
flag = true;
}
}
if (flag == true)
{
printf("該學(xué)生不存在!:\n");
}
}
void Search(struct student* arr,int n)//學(xué)生基本信息查詢
{
int temp,i;
bool flag=false;
printf("---------------通過(guò)學(xué)號(hào)查詢,press 1-------------\n");
printf("---------------通過(guò)姓名查詢,press 2-----------\n");
printf("---------------通過(guò)性別查詢,press 3------------\n");
printf("---------------通過(guò)年齡查詢,press 4------------\n");
printf("---------------退出,press 5 ------------\n");
scanf("%d",&temp);
switch (temp)
{
case 1://按照學(xué)號(hào)查詢
{
char num[10];
printf("請(qǐng)輸入學(xué)號(hào):\n");
scanf("%s",num);
for ( i =0;i<n;i++)
{
if (!strcmp(num,arr[i].no))
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("該學(xué)生不存在.\n");
}
}
break;
case 2://按照名字查詢
{
char num[10];
printf("please input name:\n");
scanf("%s",num);
for ( i =0;i<n;i++)
{
if (!strcmp(num,arr[i].name))
{
printf("%12s%12s%12c%12d%12s",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("該學(xué)生不存在.\n");
}
}
break;
case 3://按照性別查詢
{
char ch;
printf("請(qǐng)輸入性別:\n");
//scanf("%c",&ch);
ch = getch();
for ( i =0;i<n;i++)
{
if (ch == arr[i].sex)
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("t該學(xué)生不存在.\n");
}
}
break;
case 4://按照年齡查詢
{
char num_age;
printf("請(qǐng)輸入年齡:\n");
scanf("%d",&num_age);
for ( i =0;i<n;i++)
{
if (num_age == arr[i].age)
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("該學(xué)生不存在.\n");
}
}
break;
default:
break;
}
}
void main()
{
struct student arr[N];
char ps[6];
bool flag =false;
printf("請(qǐng)輸入密碼:\n");
scanf("%s",ps);
flag = Check(ps);
if (flag)
{
int select;
print(false);
scanf("%d",&select);
while (0<select && select <7 )
{
switch (select)
{
case 1:
GetInfo(arr,N);
print(true);
break;
case 2:
Display(arr,N);
print(true);
break;
case 3:
Save(arr,N);
print(true);
break;
case 4:
Delete(arr,N);
print(true);
break;
case 5:
Modfiy(arr,N);
print(true);
break;
case 6:
Search(arr,N);
print(true);
break;
default:
break;
}
printf("請(qǐng)選擇:\n");
scanf("%d",&select);
}
}
}
就是一個(gè)畢業(yè)設(shè)計(jì)了嘛。
用鏈表實(shí)現(xiàn)就好了
(全國(guó)總部)河南省鄭州市金水區(qū)博雅廣場(chǎng)4號(hào)樓1104
+18937133779
zboao@qq.com
中博奧技術(shù)有限公司& 版權(quán)所有
工信部備案號(hào):豫ICP備11015869號(hào)-8