2个
學生信息包括:學號,姓名,年齡,性別,出生年月,學號,成績,排名等。試設計一學生信息管理系統(tǒng),使之能提供以下功能:
1、系統(tǒng)以菜單方式工作。
2、學生信息錄入功能——輸入。
3、學生信息瀏覽功能——輸出。
4、學生信息查詢功能——算法。
按學號查詢;
按姓名查詢。
5、??學生信息的刪除與修改
設計一個能實現學生信息管理系統(tǒng),讓它來運行和管理學生信息。它在現實生活中運用方便的、管理方便。它能輸入學生學號、年齡、性別、出生年月、成績、排名。系統(tǒng)以菜單的方式進行工作,進入子菜單后,還可以返回主菜單。在子菜單中的各種操作都有中文說明,操作簡單、易懂。只要我們正確的操作系統(tǒng),系統(tǒng)就無異常現在,當然系統(tǒng)也能對一些基本的錯誤做出提示,并能讓使用者重新進行操作。
對各個操作的成功,如:添加學生信息、修改學生信息、刪除學生信息,系統(tǒng)都輸出“…….的成功”的字樣。系統(tǒng)對刪除和修改前,還進行“確定”和“取消”。系統(tǒng)對不存在的學號和姓名系統(tǒng)能判斷是否存在。對已存在的學號,操作者不能添加和這個學號一樣的學生信息,同時系統(tǒng)還提示已有此學號。對于修改、刪除和查詢,系統(tǒng)遇到不存在的學生能提示沒有這個信息。
按照函數功能,將不同的代碼放到一起,用大括號括起來,然后給這段代碼起個名字表示,然后還要設置上參數,一遍使用這個函數的時候向里傳遞實際的值,類似一個加法的函數,完成兩個數的相加,我們可以寫成
myadd(int a, int b)
{
?? int c;
?? c=a+b;
?? return c;
}
myadd就是我們給這個函數起的名字,以便使用,a和b的作用接收調用者傳遞過來的數,然后把接收的兩個數相加后返回,這個函數的值在調用后就是返回的值c,所以如果我們想算99+23等于多少,只要調用我們寫好的函數
myadd(99,23),這個時候函數的值就是99+23了,如果把結果保存在變量d中,可以寫成
d=myadd(99,23);
有了函數,我們就可以把不同功能的代碼組織到一起,不僅自己方便,而且程序特別簡單明了,便于修改,其他人寫的函數我們還可以直接拿來用。
所以我們的這個學生信息管理系統(tǒng)形式就非常簡單了,一共用到了三個函數
int main()
{?
? int i,sum;
? pagedis();
? check();
以下是完整的學生管理系統(tǒng)的總程序:
?
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
#define PAGE 3
#define MAX 1000
#define N 5
int k=0;
? /*結構體類型*/
typedef struct?
{??int num;/*學號*/
??? char name[20];/*姓名*/
???????? charsex[5];/*性別*/
???????? intage;/*年齡*/
???????? charstudentclass[20];/*班級*/
???????? intscore;/*成績*/
}STUDENTS;
?
int read_file(STUDENTS stu[])
{?????? FILE*fp;
???int i=0;
???????? if((fp=fopen("stu.txt","rt"))==NULL)
???????? {printf("\n\n*****庫存文件不存在!請創(chuàng)");
???????? ?return 0;
???????? }
???????? while(feof(fp)!=1)
??? {
???????? fread(&stu[i],sizeof(STUDENTS),1,fp);
???????? if(stu[i].num==0)
????????????????? break;
???????? else
????????????????? i++;
???????? }
???????? fclose(fp);
???????? returni;
}
void save_file(STUDENTS stu[],int sum)
{FILE*fp;
?inti;
?if((fp=fopen("stu.txt","wb"))==NULL)
?{printf("寫文件錯誤!\n");
?return;
?}
??for(i=0;i<sum;i++)
???????? ??if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1)
????????????????? ?? printf("寫文件錯誤!\n");
???????? ?? fclose(fp);
}
?
?
/*創(chuàng)建學生信息*/
int input(STUDENTS stu[])
{?int i,x;
??for(i=0;i<1000;i++)
?? {
???system("cls");?
???printf("\n\n?????????????????錄入學生信息? (最多%d個)\n",MAX);
???printf("??????????????----------------------------\n");
??
???????printf("\n????????????????????第%d個學生",k+1);
???????? ??? printf("\n?請輸入學生的學號:");
???????scanf("%d",&stu[k].num);
???????printf("\n?請輸入學生的姓名:");
???????scanf("%s",stu[k].name);
???????? ? ??? printf("\n請輸入學生的性別:");
???????scanf("%s",stu[k].sex);
???????printf("\n?請輸入學生的年齡:");??
???????scanf("%d",&stu[k].age);?
???????printf("\n?請輸入學生的班級:");
???????scanf("%s",stu[k].studentclass);???????
???????printf("\n?請輸入學生的成績:");
???????scanf("%d",&stu[k++].score);
???????printf("\n?請按1鍵返回菜單或按0鍵繼續(xù)創(chuàng)建");
????????????????? scanf("%d",&x);
????????????????? if(x)
????????????????? ? break;
?? }
?????
??????return k;
}
?
?
/*刪除學生信息*/
void deletel(STUDENTS stu[])
? {system("cls");
??char Stuname2[20];
??int i,j;
??printf("請輸入學生姓名:");
??scanf("%s",Stuname2);
??printf("\n");
??for(i=0;i<k;i++)
??if(strcmp(stu[i].name,Stuname2)==0)??
????for(j=0;j<20;j++)
??????stu[i].name[j]=stu[i+1].name[j];
??k--;
????????
?
??printf("刪除成功\n");
??printf("按任意鍵加回車返回主菜單!");
??scanf("%d",&i);
??getchar();
}
?
/*打印學生信息*/???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
void output(STUDENTS stu[])
{?system("cls");
??int i;
??for(i=0;i<k;i++)?
????printf("學號:%d,姓名:%s,性別:%s,年齡:%d,班級:%s,成績: %d\n",stu[i].num,stu[i].name,
????????????????? ?stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);
??printf("按任意鍵加回車返回主菜單!");
??scanf("%d",&i);
??getchar();
}
?
/*查詢學生信息*/
void inquire(STUDENTS stu[])
? {int i;
???int num;
???system("cls");
???printf("???? \n\n請輸入您要查找的學生的學號");
???scanf("%d",&num);
???for(i=0;i<k;i++)
?????if(num==stu[i].num)
????????printf("\n\n\n學號:%d,姓名:%s,性別:%s,年齡:%d,班級:%s,成績: %d\n",stu[i].num,stu[i].name,
????????????????? ?stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);
???printf("按任意鍵加回車返回主菜單!");
???????? scanf("%d",&i);
???getchar();
? }
?
?
/*修改學生信息*/
void change(STUDENTS stu[])
?{? int num,i,choice;
????system("cls");
???????? ?printf("\n\n\n??????請輸入您要修改的學生的學號");
????scanf("%d",&num);
????for(i=0;i<k;i++)
????{ if(num==stu[i].num)
????????printf("\n學號:%d,姓名:%s,性別:%s,年齡:%d,班級:%s,成績: %d\n",stu[i].num,stu[i].name,
????????????????? ?stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);
?
? ???printf("\n\n\n???? ********請輸入您想要修改的數據********\n\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("?????????????????請選擇(1-6):");
???????? ? scanf("%d",&choice);
???????? ? switch(choice)
???????? ? {case 1:{
????????????????? ?????? printf("\n???請輸入你改的新學號");
???????? ??????????scanf("%d",&stu[i].num);
????????????????????????? ?? break;
????????????????????????? ?? }
???????? ?? case 2:{
???????? ???????? ??????printf("\n???請輸入你改的新姓名");
???????? ?????????? scanf("%s",stu[i].name);
????????????????????????? ?? break;
????????????????????????? ? }
???????? ?? case 3:{
????????????????? ?????? printf("\n???請輸入你改的新性別");
???????? ?????????? scanf("%s",stu[i].sex);
????????????????????????? ?? break;
????????????????????????? ? }
???????? ?? case 4:{
????????????????? ?????? printf("\n???請輸入你改的新年齡");
???????? ????????? ?scanf("%d",&stu[i].age);
????????????????????????? ?? break;
????????????????????????? ? }
???????? ?? case 5:{
????????????????? ?????? printf("\n???請輸入你改的新班級");
???????? ??????????scanf("%s",stu[i].studentclass);
????????????????????????? ?? break;
????????????????????????? ? }
???????? ?? case 6:{
????????????????? ?????? printf("\n???請輸入你改的新成績");
???????? ??????????scanf("%d",&stu[i].score);
????????????????????????? ?? break;
????????????????????????? ? }
???????? ? }
???????? ?
???????? ?? printf("學號:%d,姓名:%s,性別:%s,年齡:%d,班級:%s,成績:%d\n",stu[i].num,stu[i].name,
????????????????? ?stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);
??????printf("按任意鍵加回車返回主菜單!");
???????? ?? scanf("%d",&i);
???????? ?? break;
???????? ?}
}
下面是一個職工工資管理系統(tǒng)的程序,此程序類似于上方學生管理系統(tǒng)程序,代碼如下:
#include "stdafx.h"
#include "iostream"
#include "string"
#include "list"
#include "cassert"
using namespace std;
?
/*
編號、姓名、部門、應付工資、保險、稅金、實付工資。
其中實付工資由公式計算得到:實付工資=應付工資?-?保險-?稅金
*/
struct employee{
?string m_num;//編號
string m_name;//姓名
string m_dep;//部門
double m_salary;//應付工資
double m_insurance;//保險
double m_tax;//稅金
};
?
/*
(1)錄入:輸入職工數據,其中“實付工資”通過計算得到;
(2)刪除:刪除指定的職工信息(輸入姓名,若找到則刪除該信息)
(3)?修改:允許對已經錄入的數據重新進行編輯、修改;
(4)?顯示:顯示全體職工數據;
(5)查詢:
a.?輸入職工姓名,顯示該職工的全部數據;
b.?輸入某部門值,顯示該部門職工的數據、工資總額、平均工資。
(6)?退出程序。
*/
?
list<employee> emps;
?
int _tmain(int argc, _TCHAR* argv[])
{
?voidprint(const employee &e);
?voidinput();
?voiddel();
?voidmod();
?voidshow_all();
?voidshow_name();
?voidshow_dep();
?
?cout<<"簡易職工薪水管理程序?by做他\n";// delete this line
?cout<<"版權沒有請隨意復制或修改任何代碼\n";//deletethis line
?
?if(choose==4)
?
?return 0;
}
?void print(const employee &e)
{
?cout<<"編號:"<<e.m_num<<endl;
?cout<<"姓名:"<<e.m_name<<endl;
?cout<<"部門:"<<e.m_dep<<endl;
?cout<<"保險:"<<e.m_insurance<<endl;
?cout<<"稅金:"<<e.m_tax<<endl;
?cout<<"應付工資:"<<e.m_salary<<endl;
?cout<<"實付工資:"<<e.m_salary-e.m_insurance-e.m_tax<<endl;
}
?void input()
{
?string num,name,dep;
?double salary,ins,tax;
?cout<<"請輸入員工編號:";
cin>>num;
?cout<<"請輸入員工姓名:";
cin>>name;
?cout<<"請輸入員工部門:";
cin>>dep;
?cout<<"請輸入員工保險:";
cin>>ins;
?assert(!cin.fail());
?cout<<"請輸入員工稅金:";
cin>>tax;
?assert(!cin.fail());
?cout<<"請輸入員工應付工資:";
cin>>salary;
?assert(!cin.fail());
?employee temp;
?temp.m_dep=dep;
?temp.m_insurance=ins;
?temp.m_name=name;
?temp.m_num=num;
?temp.m_salary=salary;
?temp.m_tax=tax;
?emps.push_back(temp);
?cout<<"員工錄入操作完畢.\n";
}
?void del()
{
?if(emps.size()==0)
?{
?cout<<"沒有員工記錄.\n";
?return;
?}
?string name;
?boolisfind=false;
?cout<<"請輸入要刪除的員工姓名:";
cin>>name;
?list<employee>::iterator iter;
?for(iter=emps.begin();iter!=emps.end();iter++)
?{
?if(iter->m_name==name)
?{
?isfind=true;
?emps.erase(iter);
?cout<<"姓名為\""<<name<<"\"的員工記錄已刪除.\n";
?return;
?}
?}
?if(!isfind)
?{
?cout<<"沒有找到姓名為\""<<name<<"\"的員工.\n";
?return;
?}
}
?void mod()
{
?if(emps.size()==0)
?{
?cout<<"員工記錄為空.\n";
?return;
?}
?boolisfind=false;
?string name;
?cout<<"請輸入要修改的員工姓名:";
cin>>name;
?list<employee>::iterator iter;
?for(iter=emps.begin();iter!=emps.end();iter++)
?{
?if(iter->m_name==name)
?{
?isfind=true;
?cout<<"姓名為\""<<name<<"\"的員工記錄已找到.\n";
?break;
?}
?}
?if(isfind)
?{
?string num,name,dep;
?double tax,ins,salary;
?print(*iter);
?cout<<endl;
?cout<<"請輸入新的員工編號:";
cin>>num;
?cout<<"請輸入新的員工姓名:";
cin>>name;
?cout<<"請輸入新的員工部門:";
cin>>dep;
?cout<<"請輸入新的員工保險:";
cin>>ins;
?assert(!cin.fail());
?cout<<"請輸入新的員工稅金:";
cin>>tax;
?assert(!cin.fail());
?cout<<"請輸入新的員工工資:";
cin>>salary;
?assert(!cin.fail());
?iter->m_dep=dep;
?iter->m_insurance=ins;
?iter->m_name=name;
?iter->m_num=num;
?iter->m_salary=salary;
?iter->m_tax=tax;
?cout<<"1?員工記錄被成功修改.\n";
?}
?else
?{
?cout<<"沒有找到姓名為\""<<name<<"\"的員工記錄.\n";
?}
}
void show_all()
{
?if(emps.size()==0)
?{
?cout<<"員工記錄為空.\n";
?return;
?}
?cout<<"顯示全體員工數據:\n";
?cout<<"--------------------\n";
?list<employee>::iterator iter;
?for(iter=emps.begin();iter!=emps.end();iter++)
?{
?cout<<endl;
?
轉載于:https://blog.51cto.com/10973857/1789698
總結
- 上一篇: PowerShell 收集计算机相关信
- 下一篇: 45个实用的JavaScript黑科技