1、学生信息管理系统
基本功能要求:学生信息包括:学号、姓名、性别、班级、联系电话。
要求能够:
(1) 添加学生记录
(2) 浏览所有学生信息
(3) 按学号或姓名查找学生信息
(4) 修改学生记录
扩展功能要求:(1) 删除学生记录
(2) 按学号对学生信息进行排序浏览
(3) 实现可视化界面
提示:定义一个学生结构(或学生类),其中包含学生的各项信息。然后定义该学生结构的结构数组(或学生类的类对象数组)存放所有学生信息。
1、学生信息管理系统
基本功能要求:学生信息包括:学号、姓名、性别、班级、联系电话。
要求能够:
(1) 添加学生记录
(2) 浏览所有学生信息
(3) 按学号或姓名查找学生信息
(4) 修改学生记录
扩展功能要求:(1) 删除学生记录
(2) 按学号对学生信息进行排序浏览
(3) 实现可视化界面
提示:定义一个学生结构(或学生类),其中包含学生的各项信息。然后定义该学生结构的结构数组(或学生类的类对象数组)存放所有学生信息。
你是要完整的代码,编译过的复制上去能直接运行的,还是要思路或者是伪代码
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h>
#define SIZE 100
struct product { char name[40]; int cost; int retail; int on_hand; int lead_time; }invtry[SIZE];
void display();//显示函数 void enter();//添加函数 void init();//初始化函数 void input(int i);//写入函数 void update();//更新函数 void query();//查询函数 void remove();//删除函数
int main() { char c;
init();
fflush(stdin); do{ printf("欢迎使用本库存系统\n"); printf("\n"); printf("添加产品信息请按 E \n"); printf("显示产品信息请按 D \n"); printf("更新产品信息请按 U \n"); printf("查询产品信息请按 Q \n"); printf("删除产品信息请按 R \n"); printf("退出程序菜单请按 C \n"); scanf("%c",&c); fflush(stdin); if(c=='e' || c=='E') enter(); else if(c=='d' || c=='D') display(); else if(c=='u' || c=='U') update(); else if(c=='q' || c=='Q') query(); else if(c=='r' || c=='R') remove(); else if(c=='c' || c=='R') return 0; else printf("你的输入有误\n"); }while(c!='C'); }
void init() { int i; for(i=0;i<SIZE;i++) { *invtry[i].name='\0';//所有产品名称进行清空 } printf("初始化完成\n"); }
void enter() { int i; for(i=0;i<SIZE;i++) { if(*invtry[i].name=='\0') { break; } } if(i==SIZE) { printf("库存信息已满,无法继续增加!"); return; } input(i); }
void input(int i) { printf("输入产品名称\n"); scanf("%s",invtry[i].name); printf("输入产品成本\n"); scanf("%d",&invtry[i].cost); printf("输入产品价格\n"); scanf("%d",&invtry[i].retail); printf("输入产品库存量\n"); scanf("%d",&invtry[i].on_hand); printf("输入产品进货周期\n"); scanf("%d",&invtry[i].lead_time); }
void update() { int i; char temp[40]; printf("输入要修改的产品名\n"); scanf("%s",temp); fflush(stdin); for(i=0;i<SIZE;i++) { if(!strcmp(temp,invtry[i].name)) break; } if(i==SIZE) { printf("没有找到你输入的产品"); return; } printf("请输入新的产品信息"); input(i); }
void display() { int i; for(i=0;i<SIZE;i++) { if(*invtry[i].name) { printf("产品名称%s\n",invtry[i].name); printf("产品成本%d\n",invtry[i].cost); printf("产品价格%d\n",invtry[i].retail); printf("产品库存%d\n",invtry[i].on_hand); printf("产品进货周期%d\n",invtry[i].lead_time); } } }
void query() { int i; char temp[40]; printf("输入要查询的产品名\n"); scanf("%s",temp); fflush(stdin); for(i=0;i<SIZE;i++) { if(!strcmp(temp,invtry[i].name)) break; } if(i==SIZE) { printf("没有找到你输入的产品"); return; } printf("产品名称%s\n",invtry[i].name); printf("产品成本%d\n",invtry[i].cost); printf("产品价格%d\n",invtry[i].retail); printf("产品库存%d\n",invtry[i].on_hand); printf("产品进货周期%d\n",invtry[i].lead_time); }
void remove() { int i; char temp[40]; printf("输入要删除的产品名\n"); scanf("%s",temp); fflush(stdin); for(i=0;i<SIZE;i++) { if(!strcmp(temp,invtry[i].name)) break; } if(i==SIZE) { printf("没有找到你输入的产品"); return; } for(i;i<SIZE;i++) { invtry[i]=invtry[i+1]; } printf("删除操作成功\n"); } 看看对你有帮助吗,你参考一下吧
#include "SequentialList.h"
#ifndef _STUDENT_MANAGER_ #define _STUDENT_MANAGER_
// 输出菜单 void printMenu();
// 用户选择 int select();
// 学号录入,用户欲再输入返回1,中止输入返回0 int inputNum( char* ch );
// 姓名录入 void inputName( char* ch );
// 信息录入,用户中止输入返回0,否则返回1 int input( Student& tmp );
// 增加学生信息 void addStudent( SeqList &L );
// 删除学生信息 void delStudent( SeqList &L );
// 查找学生信息(内部),找不到返回0,用户停止查找返回-1,否则返回元素位置 int findStu( SeqList &L );
// 查找学生信息 void findStudent( SeqList &L );
// 输出学生信息 void printAllStu( SeqList &L );
#endif #ifndef _SEQUENTIALLIST_ #define _SEQUENTIALLIST_
// 线性表的最大长度 #define MAXSIZE 1000
// 学生信息数组长度 #define INFOSIZE 30
// 学生类 struct Student { char number[ INFOSIZE ]; char name[ INFOSIZE ]; };
typedef Student DataType;
// 线性表类 struct SeqList { DataType data[ MAXSIZE ]; int length; // 表长 };
// 初始化线性表 void init( SeqList &L );
// 判断表是否为空,返回1表示为空,返回0表示非空 int isEmpty( const SeqList &L );
// 判断表是否已满,返回1表示已满,返回0表示未满 int isFull( const SeqList &L );
// 在表尾插入数据元素x,返回1表示插入成功,返回0表示插入失败 int insert( SeqList &L, DataType x );
// 在线性表L中检索值为x的数据元素,找得到返回元素序号,找不到返回0 int find( const SeqList &L, char* x );
// 删除第i个元素,返回1表示删除成功,返回0表示删除失败 int deleteElem( SeqList &L, int i );
// 输出指定位置的数据 void print( const SeqList &L, int i );
// 输出线性表的所有数据 void print( const SeqList &L );
#endif #include <cstring> #include <iostream> using namespace std;
#include "SequentialList.h"
// 初始化线性表 void init( SeqList &L ) { L.length = 0; }
// 判断表是否为空,返回1表示为空,返回0表示非空 int isEmpty( const SeqList &L ) { return L.length == 0; }
// 判断表是否已满,返回1表示已满,返回0表示未满 int isFull( const SeqList &L ) { return L.length == MAXSIZE; }
// 在表尾插入数据元素x,返回1表示插入成功,返回0表示插入失败 int insert( SeqList &L, DataType x ) { // 如果表空间已满,不能插入 if( isFull( L ) ) return 0;
L.data[ L.length ] = x ; // 新元素插入 L.length++; // 表长加1
return 1; }
// 在线性表L中检索值为X的数据元素,找得到返回元素序号,找不到返回0 int find( const SeqList &L, char* x ) { int i; for( i=0; i<L.length; i++ ) if( strcmp( L.data[i].number, x ) == 0 ) return i+1;
cout << "查无此人" << endl; return 0; }
// 删除第i个元素,返回1表示删除成功,返回0表示删除失败 int deleteElem( SeqList &L, int i ) { if( isEmpty( L ) ) { cout << "删除失败" << endl; return 0; }
// 判断删除位置的合法性 if( i<1 || i>L.length ) { cout << "删除失败" << endl; return 0; }
int j; for( j=i; j<L.length; j++ ) L.data[ j-1 ] = L.data[ j ];
L.length--; return 1; }
// 输出指定位置的数据 void print( const SeqList &L, int i ) { cout << L.data[ i-1 ].number << "\t" << L.data[ i-1 ].name << endl; }
// 输出线性表的所有数据 void print( const SeqList &L ) { int i; for( i=1; i<=L.length; i++ ) print( L, i ); } #include <iostream> using namespace std;
#include "StudentManager.h"
// 输出菜单 void printMenu() { cout <<"\n---------------班级学生信息管理---------------" << endl << "-- --" << endl << "-- 1. 增加学生信息 --" << endl << "-- 2. 删除学生信息 --" << endl << "-- 3. 查找学生信息 --" << endl << "-- 4. 输出学生信息 --" << endl << "-- 5. 退出 --" << endl << "-- --" << endl << "----------------------------------------------" << endl << "请选择:"; }
// 用户选择 int select() { // 清空输入缓冲区 cin.clear(); cin.sync();
int sel; cin >> sel; return sel; }
// 学号录入,用户欲再输入返回1,中止输入返回0 int inputNum( char* ch ) { cout << "\n提示:返回主菜单请在学号处输入 Q \n";
cout << "\n学号: "; cin >> ch; return stricmp( ch, "Q" ) != 0; }
// 姓名录入 void inputName( char* ch ) { cout << "姓名: "; cin >> ch; }
// 信息录入,用户欲再输入返回1,中止输入返回0 int input( Student& tmp ) { if( ! inputNum( tmp.number ) ) return 0;
inputName( tmp.name );
return 1; }
// 增加学生信息 void addStudent( SeqList &L ) { Student stu;
// 循环插入至用户中止输入 while( input( stu ) ) if( insert( L, stu ) ) cout << "----插入成功----\n"; else cout << "----插入失败----\n"; }
// 删除学生信息 void delStudent( SeqList &L ) { int index;
do { index = findStu( L );
if( index > 0 ) { deleteElem( L, index ); cout << "----删除成功----\n"; } } while( index != -1 ); // 循环删除至用户中止输入 }
// 查找学生信息(内部),找不到返回0,用户停止查找返回-1,否则返回元素位置 int findStu( SeqList &L ) { char tmp[INFOSIZE];
if( ! inputNum( tmp ) ) return -1;
int index = find( L, tmp );
if( index > 0 ) { cout << "\n学号\t姓名\n"; print( L, index ); }
return index; }
// 查找学生信息 void findStudent( SeqList &L ) { // 循环查找至用户中止输入 while( findStu( L ) != -1 ) ; }
// 输出学生信息 void printAllStu( SeqList &L ) { if( isEmpty( L ) ) cout << "\n没有学生\n"; else { cout << "\n学号\t姓名\n"; print( L ); } } #include <cstdlib>
#include "StudentManager.h"
int main(void) { // 定义并初始化顺序表 SeqList L; init( L );
while( 1 ) { // 输出菜单 printMenu();
// 用户选择 switch( select() ) { case 1: addStudent( L ); break; // 增加学生信息 case 2: delStudent( L ); break; // 删除学生信息 case 3: findStudent( L ); break; // 查找学生信息 case 4: printAllStu( L ); break; // 输出学生信息 default: exit(0); // 退出 } }
return 0; }