精华内容
下载资源
问答
  • 用JAVA编写一个银行信息管理系统

    万次阅读 多人点赞 2019-01-01 16:43:03
    项目目标: ... 2、能对银行用户信息进行增...思路:首先要有一个进入系统的主界面,要先计算好窗口的大小,然后在窗口中添加一些按钮、图标、带合适大小的图片背景的标签。 package BankSystem; import java.awt...

    项目目标:

    1、记录不同用户的基本信息:用户名、身份证、账户、开户行、存款余额等

    2、能对银行用户信息进行增删改等操作

    3、有欢迎界面

    4、有银行信息管理界面

    有需要Java代码的可以去我的GitHub上下载:Fated-2 GitHub

    JAVA代码:

    1.欢迎界面

    思路:首先要有一个进入系统的主界面,要先计算好窗口的大小,然后在窗口中添加一些按钮、图标、带合适大小的图片背景的标签。

    package BankSystem;
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javafx.scene.image.Image;
    
    /*
     * 银行信息管理系统
     * 1、记录不同用户的基本信息:用户名、身份证、账户、开户行、存款余额等
     * 2、能对银行用户信息进行增删查改等操作
     * 3、能实现存款、取款、登录、注册等功能。
     * 4、有欢迎界面
     * 5、有银行信息管理界面
     */
    public class Main {
    	
    
    	public static void main(String[] args) {
    		new WelcomeDemo();
    
    	}
    
    }
    
    
    //书写进入界面
    class WelcomeDemo extends JFrame{
    	
    	private JFrame window;
    	private JButton enter,exit;
    	private JLabel lb;
    	private JPanel pEnter;
    	
    	public WelcomeDemo() {
    		window=new JFrame("我家银行欢迎您");
    		window.setSize(750, 540);//窗口大小
    		window.setLocationRelativeTo(null);//居中显示
    		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认可关闭
    		window.setLayout(null);//绝对布局
    		window.setResizable(false);//窗口大小不可变
    		window.setIconImage(new ImageIcon("4811FF28.png").getImage());//设置图标
    		
    		ImageIcon icon = new ImageIcon("450007f6f34d9d1e.jpg");
    		icon.setImage(icon.getImage().getScaledInstance((int)(icon.getIconWidth()), 
    				(int)(icon.getIconHeight()*0.95),0 ));
    		lb=new JLabel(new ImageIcon("450007f6f34d9d1e.jpg"));
    		lb.setBounds(0, 0, (int)(icon.getIconWidth()), (int)(icon.getIconHeight()*0.95));
    		window.add(lb,BorderLayout.NORTH);//添加带图片的标签
    		
    		exit = new JButton("退出系统");
    		enter=new JButton("进入系统");
    		enter.setBounds(200,440,120,50);
    		exit.setBounds(350, 440,120,50);
    		window.add(enter);
    		window.add(exit);
    		
    		addListened();
    		window.setVisible(true);
    		
    	}
    	
    	//添加按钮监听事件
    	public void addListened() {
    		enter.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.out.println("按钮被按下");
    				//进入银行信息管理界面
    					new BankJPanel();
    					window.dispose();//关闭窗口
    				
    			}
    		});
    		exit.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				window.dispose();//关闭窗口
    				
    			}
    		});
    	}
    	
    	
    }
    

    运行结果:

    2.实现银行信息管理系统的增、删、改功能

    思路:要实现添加、删除、修改的操作就得增加监听事件,并且添加之前用flag判断是否有重复的用户,我用数组存的用户的相关信息,也可以用集合存储。

    package BankSystem;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.ListSelectionModel;
    import javax.swing.table.DefaultTableModel;
    
    
    /*
     * 实现银行管理系统的主要功能
     * 增加、删除、修改、查询
     */
    public class BankJPanel {
    
    	private JFrame Bank;//主面板
    	private JPanel p1,p2;//两个界面
    	private JLabel lbTitle;//列表标签
    	private JTable table;//表格
    	String[][] data=null;
    	String[] cols = {"用户名","身份证","账户","开户行","存款余额"};
    	
    	private JLabel lbUser;//用户标签
    	private JLabel lbIdentify;//身份证标签
    	private JLabel lbAccount;//账户标签
    	private JLabel lbDeposit;//开户行标签
    	private JLabel lbRemain;//余额标签
    	
    	private JTextField tfUser;//用户文本框
    	private JTextField tfIdentify;//身份证文本框
    	private JTextField tfAccount;//账户文本框
    	private JTextField tfDeposit;//开户行文本框
    	private JTextField tfRemain;//余额文本框
    	
    	private JButton btAdd;//添加按钮
    	private JButton btDelete;//删除按钮
    	private JButton btUpdate;//修改按钮
    	
    	int index;//设置下标
    	String[] name;
    	String[] id;
    	String[] ac;
    	String[] de;
    	String[] re;
    	Listenered l;
    	
    	//构造器初始化 
    	public BankJPanel() {
    		
    		l = new Listenered();
    		index = 1;
    		data = new String[1][5];
    		name = new String[100];
    		id = new String[100];
    		ac = new String[100];
    		de = new String[100];
    		re = new String[100];
    		
    		//窗口初始化
    		Bank=new JFrame("银行信息管理系统");
    		Bank.setSize(600, 400);
    		Bank.setLocationRelativeTo(null);//居中
    		Bank.setResizable(false);
    		Bank.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		Bank.setLayout(null);
    		
    		//表格标题
    		lbTitle=new JLabel("用户的基本信息");
    		lbTitle.setBounds(250, 20, 140, 25);
    		Bank.add(lbTitle);
    		
    		//表格添加与设置
    		table = new JTable();
    		String[][] data = new String[1][5];
    		data[0][0]=name[0]="小张";
    		data[0][1]=id[0]="123456789";
    		data[0][2]=ac[0]="123";
    		data[0][3]=de[0]="456";
    		data[0][4]=re[0]="789";
    		table = new JTable(data,cols);
    		table.getTableHeader().setReorderingAllowed(false);//不可改变列顺序
    		table.getTableHeader().setResizingAllowed(false);//不可改变列宽
    		table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);//只能选一行
    		JScrollPane jp=new JScrollPane(table);//添加滚动效果
    		jp.setBounds(50, 50, 500, 200);
    		Bank.add(jp);
    		
    		//添加编辑区域的组件
    		lbUser = new JLabel("用户名",JLabel.RIGHT);
    		lbUser.setBounds(40, 265, 50, 25);
    		Bank.add(lbUser);
    		lbIdentify = new JLabel("身份证",JLabel.RIGHT);
    		lbIdentify.setBounds(210, 265, 50, 25);
    		Bank.add(lbIdentify);
    		lbAccount = new JLabel("账户",JLabel.RIGHT);
    		lbAccount.setBounds(370, 265, 50, 25);
    		Bank.add(lbAccount);
    		lbDeposit = new JLabel("开户行",JLabel.RIGHT);
    		lbDeposit.setBounds(40, 295, 50, 25);
    		Bank.add(lbDeposit);
    		lbRemain = new JLabel("存款余额",JLabel.RIGHT);
    		lbRemain.setBounds(200, 295, 70, 25);
    		Bank.add(lbRemain);
    		tfUser = new JTextField();
    		tfUser.setBounds(90, 265, 120, 25);
    		Bank.add(tfUser);
    		tfIdentify = new JTextField();
    		tfIdentify.setBounds(261, 265, 120, 25);
    		Bank.add(tfIdentify);
    		tfAccount = new JTextField();
    		tfAccount.setBounds(421, 265, 120, 25);
    		Bank.add(tfAccount);
    		tfDeposit = new JTextField();
    		tfDeposit.setBounds(90, 295, 120, 25);
    		Bank.add(tfDeposit);
    		tfRemain = new JTextField();
    		tfRemain.setBounds(271, 295, 120, 25);
    		Bank.add(tfRemain);
    		
    		//添加按钮
    		btAdd = new JButton("添加信息");
    		btAdd.setBounds(100, 330, 100, 25);
    		Bank.add(btAdd);
    		btUpdate = new JButton("修改信息");
    		btUpdate.setBounds(250, 330, 100, 25);
    		Bank.add(btUpdate);
    		btDelete = new JButton("删除信息");
    		btDelete.setBounds(400, 330, 100, 25);
    		Bank.add(btDelete);
    		
    		//给按钮添加监听事件
    		btAdd.addActionListener(l);
    		btDelete.addActionListener(l);
    		btUpdate.addActionListener(l);
    		
    		//鼠标表格监听
    		addListened();
    		Bank.setVisible(true);
    		
    	}
    	
    	//添加按钮监听事件
    	public void addListened() {
    		//表格的处理事件
    		table.addMouseListener(new MouseAdapter() {
    			
    			@Override
    			public void mouseClicked(MouseEvent arg0) {
    				int row = table.getSelectedRow();//获取表格中被选中的行
    				//设置文本框的内容
    				tfUser.setText(data[row][0]);
    				tfIdentify.setText(data[row][1]);
    				tfAccount.setText(data[row][2]);
    				tfDeposit.setText(data[row][3]);
    				tfRemain.setText(data[row][4]);
    			}
    		});
    	}
    
    		
    		//监听事件(java内部类):实现监听接口
    		class Listenered implements ActionListener{
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				//按钮被按下货点击时调用
    				// ActionEvent e--指代的是按下的辣个按钮
    				//e.getSource():获取按下的按钮
    				
    				if(e.getSource() == btAdd) {
    					
    					System.out.println("确认添加");
    					int flag=0;//标记是否有重复,添加不同的用户信息
    					if(!(tfUser.getText().equals(""))) {
    						
    						//获取用户输入的数据
    						name[index] = tfUser.getText();
    						id[index] = tfIdentify.getText();
    						ac[index] = tfAccount.getText();
    						de[index] = tfDeposit.getText();
    						re[index] = tfRemain.getText();
    						for (int i = 0; i < index; i++) {
    							if(id[index].equals(id[i])) {
    								flag=1;
    							}
    						}
    						
    						if(flag == 0) {
    							
    							index++;
    							sortMess();
    							JOptionPane .showMessageDialog(null, "添加成功","输入用户信息提示框",JOptionPane.INFORMATION_MESSAGE);
    							clear();
    						}else {
    							
    							/*
    							 * 弹出提示框:用户重复  跳转界面 
    							 */
    							JOptionPane .showMessageDialog(null, "用户已存在","输入用户信息提示框",JOptionPane.INFORMATION_MESSAGE);
    							clear();//清空文本框
    							
    						}
    						
    					}
    					
    					
    				}
    				
    				if(e.getSource() == btUpdate) {
    					
    					System.out.println("确认修改");
    					if(!(tfUser.getText().equals(""))) {
    						
    						//获取用户输入的数据
    						String user = tfUser.getText();
    						String identify = tfIdentify.getText();
    						String account = tfAccount.getText();
    						String deposit = tfDeposit.getText();
    						String remain = tfRemain.getText();
    						for (int i = 0; i < index; i++) {
    							if(identify.equals(id[i])) {
    								name[index] = user;
    								id[index] = identify;
    								ac[index] = account;
    								de[index] = deposit;
    								re[index] = remain;
    							}
    						}
    						sortMess();
    						JOptionPane .showMessageDialog(null, "修改成功","输入用户信息提示框",JOptionPane.INFORMATION_MESSAGE);
    						clear();
    					}
    				}
    				
    				if(e.getSource() == btDelete) {
    					System.out.println("确认删除");
    					if(!(tfUser.getText().equals(""))) {
    						
    						//获取用户输入的数据
    						String identify = tfIdentify.getText();
    						for (int i = 0; i < index-1; i++) {
    							if(identify.equals(id[i])) {
    								name[index] = name[index+1];
    								id[index] = id[index+1];
    								ac[index] = ac[index+1];
    								de[index] = de[index+1];
    								re[index] = re[index+1];
    							}
    						}
    						index = index-1;
    						sortMess();
    						JOptionPane .showMessageDialog(null, "删除成功","输入用户信息提示框",JOptionPane.INFORMATION_MESSAGE);
    						clear();
    					}
    				}
    				
    				
    			}
    			
    			
    			//创建一个方法把新的数组元素添加到表格中
    			public void sortMess() {
    				data = new String[index][5];
    				for (int i = 0; i < index; i++) {
    					data[i][0] = name[i];
    					data[i][1] = id[i];
    					data[i][2] = ac[i];
    					data[i][3] = de[i];
    					data[i][4] = re[i];
    				}
    				DefaultTableModel tableModel = new DefaultTableModel(data, cols);
    				table.setModel(tableModel);
    			}
    			
    			//清空文本框
    			public void clear() {
    				tfUser.setText(null);//清空用户文本框
    				tfIdentify.setText(null);//清空身份证文本框
    				tfAccount.setText(null);
    				tfDeposit.setText(null);
    				tfRemain.setText(null);
    			}
    			
    		}
    	
    	
    	public static void main(String[] args) {
    		new BankJPanel();
    
    	}
    
    }
    

    运行结果:

    展开全文
  • C++编写一个通讯录管理程序

    千次阅读 2007-03-24 22:01:00
    程序应提供的基本管理功能有: 添加:即添加一个人的记录到通信录中 显示:即在屏幕上显示所有的通信录中的人员信息,应能分屏显示。 存储:即将通讯录信息保存在一个文件中。 装入:即将文件中的信息读入程序。 ...
    程序应提供的基本管理功能有: 
    添加:即添加一个人的记录到通信录中
    显示:即在屏幕上显示所有的通信录中的人员信息,应能分屏显示。
    存储:即将通讯录信息保存在一个文件中。
    装入:即将文件中的信息读入程序。
    查询:可根据姓名查找某人的相关信息,若找到显示姓名,地址,电话号码和邮政编码。
    修改:可修改一个人的除姓名外其它信息。
    3.测试数据
    程序应输入不少于10个人员的通信信息,应考滤到人员可以同名的情况。
    4实现提示
    程序可用一个单向连接表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个CPERSON来实现,作为链表的值指针指向这些CPERSON类对象,通过链表的遍历可以操作这些数据。
    5选做内容
    为了加快数据定位查找的速度,采用常用优先的方法对链表的各个节点进行排序,即一旦操作了一个人员的数据,他的数据就将被用到链表的链首。这样经过有限次操作,经过查阅的人员的信息就将排在链表的前端。虽然不能说链表的节点一定是最常用的,但长用的节点一定回排在较靠前的部分,链表查找时所要走的平均距离一定较短 
    展开全文
  • (1)每学生的基本信息包括:学号,姓名,性别,出生日期,所属学院,专业,年级等,其中学号不允许重复。。 (2)采用交互工作方式,输入N学生的基本信息,N的值大于10。 (3)建立数据文件,存入所输入的N...
  • 4、①员工根据任意信息查询与其相关的所有信息; ②高级用户查询所有的信息与对其信息的修改; ③用户对自己帐号,密码的查询及密码修改; 5、显示、查询、修改。 6.完成信息数据的统计,并用柱状图显示...
  • print("你正在进行管理员操作...") admin = input("请输入管理员密码:").strip() if admin == 'admin': new_account = input('new_account:') new_password = input('new_password:') new_name = input('new_...
    def printInfo(StudentData,StudentName):
        """
        :param StudentData:
        :param StudentName:
        :return:
        """
        student = StudentData[StudentName]
        student_Info = """
        ----------------------
        name:   %s
        age:    %s
        sex:    %s
        no:     %s
        ----------------------
        """%(student[2],student[3],student[4],student[5])
    
        print(student_Info)
    
    def createStudent(StudentData,username,password,name,age,sex,no):
        """
        :param StudentData:
        :param username:
        :param password:
        :param name:
        :param age:
        :param sex:
        :param no:
        :return:
        """
        student = [username,password,name,age,sex,no]
        StudentData.setdefault(student[0],student)
        f =  open('account','r+',encoding='utf8')
        f.seek(0)
        f.truncate()
        for st in StudentData:
            row = ','.join(StudentData[st])
            f.write('%s\n'%row)
        f.flush()
        f.close()
    
    def saveFile(StudentData):
        """
    
        :param StudentData:
        :return:
        """
        f = open('account', 'r+', encoding='utf8')
        f.seek(0)
        f.truncate()
        for st in StudentData:
            row = ','.join(StudentData[st])
            f.write('%s\n' % row)
        f.flush()
        f.close()
    
    def readFile():
        """
        :return: accouts 从文件将数据提出并转化为dict
        """
        f = open('account','r',encoding='utf8')
        data = f.readlines()
        accounts = {}
        for line in data:
            line = line.strip()
            if not line.startswith('#'):
                items = line.split(",")
                accounts[items[0]] = items
        f.close()
        return accounts
    
    def login(StudentData,account,password):
        """
        :param StudentData:
        :param account:
        :param password:
        :return:
        """
        if account in StudentData.keys():
            if password == StudentData[account][1]:
                return 1
            else:
                print("密码输入错误!")
                return None
        else:
            print("不存在该用户!")
            return None
    
    def changeInfo(StudentData,account):
        columnData = ["Name  Age   Sex   No"]
        print(columnData)
        for index, i in enumerate(StudentData[account]):
            if index>1:
                print("%s. %s"%(index-1,i))
    
    
    if __name__ == "__main__":
        menu = """
            0.更换账户
            1.查看信息
            2.修改信息
            3.修改密码 
            4.创建用户(需要管理员密码)
               
        """
        StudentData = readFile()
        num = 0
        while num < 3:
            account = input("account:")
            password = input("password:")
            num+=1
            while login(StudentData,account,password):
                print("welcome %s ".center(50, '-') % account)
                print(menu)
                user_choice = input('>>>').strip()
                if user_choice.isdigit():
                    user_choice = int(user_choice)
                    if user_choice == 1:
                        printInfo(StudentData, account)
                    if user_choice == 2:
                        changeInfo(StudentData, account)
                        ch = input('>>>').strip()
                        if ch.isdigit():
                            ch = int(ch)
                            for i in range(5):
                                if ch == i:
                                    print("old:%s"%(StudentData[account][ch+1]))
                                    new = input("new:").strip()
                                    StudentData[account][ch+1]=new
                                    saveFile(StudentData)
                                    break
                                else:
                                    print("未输入规定范围内数字")
                        else:
                            print("你输入的不是数字")
                    if user_choice == 3:
                        old = input("请输入旧密码:").strip()
                        if old == StudentData[account][1]:
                            new = input("输入新的密码:").strip()
                            StudentData[account][1] = new
                            saveFile(StudentData)
                            print("修改成功!")
                        else:
                            print("密码输入错误!")
                    if  user_choice == 4:
                        print("你正在进行管理员操作...")
                        admin = input("请输入管理员密码:").strip()
                        if admin == 'admin':
                            new_account = input('new_account:')
                            new_password = input('new_password:')
                            new_name = input('new_name:')
                            new_age =  input('new_age:')
                            new_sex = input('new_sex:')
                            new_no = input('new_no:')
                            createStudent(StudentData,new_account,new_password,new_name,new_age,new_sex,new_no)
                        else:
                            print("密码输入错误!")
                    if user_choice == 0:
                        break
        print("你输入错误超过3次。。。")
    
    
    
    
    
    
    

    展开全文
  • 使用Qt5编写一个学生管理系统

    千次阅读 多人点赞 2019-10-02 12:33:41
    程序使用Qt5编写一个学生管理系统 首先介绍一下项目框架,项目包含一个主窗口mainwindow Mainwindow使用的就是最常见的Mainwindow带对话框的,带标题栏等等的窗口 两个子窗口(一个学生信息录入界面,一个学生...

    程序使用Qt5编写了一个学生管理系统

    首先介绍一下项目框架,项目包含一个主窗口mainwindow

    Mainwindow使用的就是最常见的Mainwindow带对话框的,带标题栏等等的窗口
    在这里插入图片描述
    两个子窗口(一个学生信息录入界面,一个学生信息查询界面),这两个窗口都是dialog without buttons的dialog窗口
    在这里插入图片描述
    在这里插入图片描述
    下面截图是程序pro的框架,类Mianwindow是主窗口,类dialog是录入信息窗口,类query是查询窗口。
    在这里插入图片描述

    小程序使用到的主要控件:

    1. Qlabel
    2. QLineEdit
    3. QRadioButton
    4. QComboBox
    5. QCheckBox
    6. QPushButton
    7. QTable View(这个稍微复杂一点,其余都很基础)

    附上我写基本过程和这个小程序源码

    首先我先写的录入学生信息界面,ui源码量太大,我就不写了,需要的可以给我发邮件zhangyin.29@163.com
    下面贴上 dialog.h源码

    #ifndef DIALOG_H
    #define DIALOG_H
    
    #include <QDialog>
    #include <QString>
    namespace Ui {
    class Dialog;
    }
    
    class Dialog : public QDialog
    {
        Q_OBJECT
    
    public:
        explicit Dialog(QWidget *parent = 0);
        ~Dialog();
        void clear_interface();
        void writetofile(QString cnt);
    private slots:
        void on_btn_ok_clicked();
    
        void on_btn_cancel_clicked();
    
    private:
        Ui::Dialog *ui;
    };
    
    #endif // DIALOG_H
    

    下面贴上dialog.cpp源码

    #include "dialog.h"
    #include "ui_dialog.h"
    #include <QMessageBox>
    #include <QList>
    #include <QAbstractButton>
    #include <QCheckBox>
    #include <QFile>
    #include <QTextStream>
    #include <QIODevice>
    Dialog::Dialog(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Dialog)
    {
        ui->setupUi(this);
    }
    
    Dialog::~Dialog()
    {
        delete ui;
    }
    
    void Dialog::on_btn_ok_clicked()
    {
        QString name = this->ui->le_name->text();
        QString id = this->ui->le_id->text();
        QString sex = this->ui->sexGroup->checkedButton()->text();
        QString age = this->ui->cbb_age->currentText();
        QString faculty=this->ui->cbb_collage->currentText();
        QList<QAbstractButton *>ins_list=this->ui->insGroup->buttons();
        QString ins;
        int i = 0;
        for (i = 0;i<ins_list.length();i++){
            QAbstractButton *che =ins_list.at(i);
    
            if (che->isChecked()){
                ins +=che->text()+" ";
            }
    
        }
    
    
        QString content;
        content = name+'\n'+id+'\n'+age+'\n'+sex+'\n'+faculty+'\n'+ins;
        QString cnt;
        cnt = name+" "+id+" "+age+" "+sex+" "+faculty+" "+ins+'\n';
        if (name.length()<1 ||id.length()<8){
            QMessageBox::critical(this,"错误","信息填写不完整","确定");
        }
        else{
            int ret = QMessageBox::question(this,"please confirm information",content,"确定","取消");
            if (ret == 0){
                clear_interface();
                writetofile(cnt);
            }
        }
    //    msgBox.setText("请确认信息.");
    //    msgBox.setInformativeText(name +'\n'+ id );
    //    //msgBox.setStandardButtons(QMessageBox::Save| QMessageBox::Discard | QMessageBox::Cancel);
    //    //msgBox.setDefaultButton(QMessageBox::Save);
    //    msgBox.addButton("确定", QMessageBox::AcceptRole);
    //    msgBox.addButton("取消", QMessageBox::RejectRole);
    //    int ret = msgBox.exec();
    
    }
    
    void Dialog::clear_interface()
    {
        this->ui->le_name->clear();
        this->ui->le_id->clear();
        this->ui->radioButton_man->setChecked(true);
        this->ui->cbb_age->setCurrentIndex(0);
        this->ui->cbb_collage->setCurrentIndex(0);
        QList<QAbstractButton *>ins_list = this->ui->insGroup->buttons();
        int i = 0;
        for (i = 0;i <ins_list.length();i++){
            QAbstractButton *box = ins_list.at(i);
            box->setChecked(false);
        }
    }
    
    void Dialog::writetofile(QString cnt)
    {
        QFile file("stu.txt");
        if(! file.open(QIODevice::Append | QIODevice::Text)){
            QMessageBox::critical(this,"错误","文件打开失败","确认");
            return;
        }
        QTextStream out(&file);
        out<<cnt;
        file.close();
    
    }
    
    void Dialog::on_btn_cancel_clicked()
    {
        this->close();
    }
    

    然后我写的是主界面,这个很简单,拖几个控件就可以

    下面是mainwindow.h文件源码

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private slots:
        void on_actionaddStu_triggered();
    
        void on_actionqueryStu_triggered();
    
    private:
        Ui::MainWindow *ui;
    };
    
    #endif // MAINWINDOW_H
    

    下面是mianwindow.cpp源码

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include "dialog.h"
    #include "query.h"
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_actionaddStu_triggered()
    {
        Dialog a;
    //    a.show();
        a.exec();
    }
    
    void MainWindow::on_actionqueryStu_triggered()
    {
        Query b;
        b.exec();
    }
    

    最后是查询界面源码,query源码,首先是query.h

    #ifndef QUERY_H
    #define QUERY_H
    
    #include <QDialog>
    #include <QFile>
    #include <QList>
    #include <QString>
    #include <QStandardItem>
    #include <QStandardItemModel>
    namespace Ui {
    class Query;
    }
    
    class Query : public QDialog
    {
        Q_OBJECT
    
    public:
        explicit Query(QWidget *parent = 0);
        ~Query();
        int readFromFile();
        void doquery(int index,QString cnt);
        void display(int row,QStringList subs);
    private slots:
        void on_btn_search_clicked();
    
    private:
        Ui::Query *ui;
        QList<QString> stu_lines;
        QStandardItemModel *model;
    };
    
    #endif // QUERY_H
    

    接下来是Query.cpp源码

    #include "query.h"
    #include "ui_query.h"
    #include <QMessageBox>
    #include <QTextStream>
    #include <QDebug>
    
    Query::Query(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Query)
    {
        ui->setupUi(this);
        if (readFromFile() == -1){
            QMessageBox::warning(this,"严重错误","文件打开失败");
            this->close();
        }
        this->model = new QStandardItemModel;
        //设置表头
    
    
        this->ui->tableView->setModel(model);
    
    }
    
    Query::~Query()
    {
        delete ui;
    }
    
    int Query::readFromFile()
    {
        QFile file("stu.txt");
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
    //        QMessageBox::critical(this,"错误","文件读取失败","确认");
            return -1;
        }
    
        QTextStream in(&file);
        while (!in.atEnd()) {
            QString line = in.readLine();
            this->stu_lines.append(line);
        }
        file.close();
        return 0;
    }
    
    void Query::on_btn_search_clicked()
    {
        this->model->clear();
    
        this->model->setHorizontalHeaderItem(0,new QStandardItem("姓名"));
        this->model->setHorizontalHeaderItem(1,new QStandardItem("学号"));
        this->model->setHorizontalHeaderItem(2,new QStandardItem("性别"));
        this->model->setHorizontalHeaderItem(3,new QStandardItem("年龄"));
        this->model->setHorizontalHeaderItem(4,new QStandardItem("院系"));
        this->model->setHorizontalHeaderItem(5,new QStandardItem("兴趣"));
        this->ui->tableView->setColumnWidth(0,50);
        this->ui->tableView->setColumnWidth(1,200);
        this->ui->tableView->setColumnWidth(2,50);
        this->ui->tableView->setColumnWidth(3,50);
        this->ui->tableView->setColumnWidth(4,100);
        this->ui->tableView->setColumnWidth(5,300);
    
        int index = this->ui->cbb->currentIndex();
        QString cnt = this->ui->le_cnt->text();
        doquery(index,cnt);
    }
    
    void Query::doquery(int index, QString cnt)
    {
        int i = 0;
        int row = 0;
        for (i=0;i<stu_lines.length();i++){
            QString line = stu_lines.at(i);
            line = line.trimmed();
            QStringList list = line.split(" ");
            switch (index) {
            case 1:
                if (cnt == list.at(0)){
                    display(row++,list);
                }
                break;
            case 2:
                if (cnt == list.at(1)){
                    display(row++,list);
                }
                break;
             case 3:
                if (cnt == list.at(4)){
                    display(row++,list);
                }
                break;
            default:
                break;
            }
        }
    }
    
    void Query::display(int row, QStringList subs)
    {
    
        int i = 0;
        for(i = 0;i<5;i++){
            this->model->setItem(row,i,new QStandardItem(subs.at(i)));
        }
        QString ins;
        for(int i=5;i<subs.length();i++){
            ins+=subs.at(i)+" ";
        }
        this->model->setItem(row,5,new QStandardItem(ins));
    }
    

    最后是main函数.cpp源码

    #include "dialog.h"
    #include <QApplication>
    #include "mainwindow.h"
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    

    程序稍微需要一些新知识的有两个方面

    1. Qt的容器相关概念,这个可以看帮助文档
      这里把这个项目用的容器在这里说明一下:
      QList是一个容器类,<QAbstractButton *>代表的是容器类里面存储元素的类型,然后ins_list代表的是,我理解为列表名称,然后就是通过Qt中的at方法读取第几个列表元素,然后进行拼接字符串操作。
        QList<QAbstractButton *>ins_list=this->ui->insGroup->buttons();
        QString ins;
        int i = 0;
        for (i = 0;i<ins_list.length();i++){
            QAbstractButton *che =ins_list.at(i);
    
            if (che->isChecked()){
                ins +=che->text()+" ";
            }
    

    后面在查询的时候也使用了一次容器类
    QList<QString> stu_lines;
    这个是在query.h中的privite的私有变量中定义的。
    然后在query.cpp里可以直接用了
    while (!in.atEnd()) { QString line = in.readLine(); this->stu_lines.append(line); }
    2 .控件中的table view使用:
    table view是基于MVC框架设计的。
    表格中一个小格属于QStandardItem类
    一个整个表格属于QStandardItemModel
    我们在.h文件中定义一个privite变量QStandardItemModel *model
    然后在构造函数中实例化一个变量
    this->model = new QStandardItemModel;
    有了这个model指针对象后,就可以使用model的一些内容函数;
    如设置表头setHorizontalHeaderItem(int 列,内容)

    this->model->setHorizontalHeaderItem(0,new QStandardItem("姓名"));
        this->model->setHorizontalHeaderItem(1,new QStandardItem("学号"));
        this->model->setHorizontalHeaderItem(2,new QStandardItem("性别"));
        this->model->setHorizontalHeaderItem(3,new QStandardItem("年龄"));
        this->model->setHorizontalHeaderItem(4,new QStandardItem("院系"));
        this->model->setHorizontalHeaderItem(5,new QStandardItem("兴趣"));
    

    管理外观的,使用table view自己的函数

    this->ui->tableView->setColumnWidth(0,50);
        this->ui->tableView->setColumnWidth(1,200);
        this->ui->tableView->setColumnWidth(2,50);
        this->ui->tableView->setColumnWidth(3,50);
        this->ui->tableView->setColumnWidth(4,100);
        this->ui->tableView->setColumnWidth(5,300);
    

    最后在把管理内容的model,显示在table view中

    this->ui->tableView->setModel(model)this->ui->tableView->setModel(model)```
    

    这就是典型的MVC思想。与上一篇博客中计算器使用类似
    大家有问题可以相互交流,共同进步,本人就是编程小白一个。
    我的邮箱是 zhangyin.29@163.com

    展开全文
  • 基于python编写一个名片管理系统

    千次阅读 2019-04-19 17:22:32
    我们小做一个名片管理系统,首先要确定系统的框架,要实现增删改查的功能,可以定义 1:增加 2:查看 3:查询(并修改)4:退出系统,我们确定了这几项功能,然后我们就可以编写程序了。 功能列表 1 新建...
  • 用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别, 还有三门课比如语,数,外的成绩,并且按照要求对其进行排序输出
  • C语言编写学生成绩信息管理系统

    万次阅读 多人点赞 2020-07-06 18:27:13
    用C语言设计学生成绩信息管理系统介绍代码结构体数组的定义main_interface()函数add_infor()函数browse_infor()函数 介绍 软件方面采用的是Visual Studio 2019 IDE工具。 程序方面采用结构体数组,成员包括学号、...
  • 用c#编写一个学生信息添加程序,学生信息包括学号,姓名,性别,有不用数据库做出来的吗,之是一个简单的小程序
  • python编写一个用户登录程序

    万次阅读 2017-05-17 18:34:52
    print('|---新建用户:N/n---|') print('|---登录账号:E/e---|'...print('|---退出程序:Q/q---|') contact=dict() while 1: a=input('请输入指令代码:') if a=='N' or a=='n': name=input('请输入用户名:') i
  • Python编写简单的学生信息管理系统

    千次阅读 2020-11-08 19:11:31
    初学Python,编写简单的学生信息管理系统,望大牛能给出继续编写以及优化的建议。 # 学生信息有姓名、性别、年龄、学号、班级。 # 基本功能展示: """ ============================ 欢迎使用【学生信息管理系统】 ...
  • 编写一个图形用户界面程序,包含两个按钮,一个信息标签(label)和一个显示面板,两个按钮分别为“掷骰子”和“移动”,在显示面板中显示一个圆圈,随机设定圆圈的初始位置,当点击“掷骰子”按钮,随机产生移动...
  • 用Python编写一个简易的图书管理系统

    千次阅读 多人点赞 2019-12-07 21:04:07
    预期功能   1.本系统包括登录主界面、管理系统主界面以及各功能分支界面。   2.登录界面可以实现用户注册、用户登录和退出程序的功能。...  在编写程序之前,我们需要导入sys库,并且创建两空列表book...
  • 用Android Studio创建一个名为“手机信息页面”的程序,该程序用于展示手机设置页面的信息。1.运行效果图2. 设计思路(实现原理)1)将准备好的八个图标复制到res/drawable文件夹下2)创建一个垂直的线性布局,并在...
  • 利用数据结构Hashtable或HashMap以及对象输入输出流编写一个学籍管理系统。功能有: 1. 启动程序时,从文件中加载旧数据。 2. 离开程序时,保存数据到文件中。 3. 添加一位学生信息。 4. 查找,删除,修改学生信息。...
  • 编写一个程序,要求设置一个Employee 类和一个Manager类,经理类继承雇员类的获取名字、工资、日期方法,经理类添加一个获取奖金的方法,经理的工资为奖金与基本薪水的总额,打印出所有雇员和经历的名字,工资,日期...
  • 要求是使用链表、函数、结构体,要有排序和统计功能。今天天时间了,求救,另有答谢。QQ2501166592,解决联系这,急用!!!!对了,最好能附加上流程图,,,程序里稍微来点注释。
  • 用Java语言编写一个班级点名的程序

    万次阅读 2015-03-29 22:27:35
    一、要求:用Java语言编写一个班级点名的程序 二、时间:2015、3、26 三、实现代码: package dianming; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import...
  • 编写一个小型学生管理系统,包括成绩管理和信息管理两部分功能。 主菜单包括: (1)成绩管理 (2)信息管理 (3)退出系统 成绩管理菜单包括: (1)单科成绩录入 (2)查找最高分 (3)成绩查询 (4...
  • 不管你们觉得难不难,反正对于零基础的我来说,不是一个难字可以了得。最后只能找资料来寻求一些思路,看了一些这样的帖子以后,思路明晰了不少,不过感觉他们搞的有些太复杂了,于是站在前人的肩膀上,再结合我自己...
  • python编写简单通讯录管理程序

    千次阅读 2020-10-13 22:35:38
    输入数字 1 进行好友添加,输入数字 2 删除好友,输入数字 3 和 4 分别进行好友信息修改和查询,接着根据用户选择的处理方式来进行针对性的好友信息管理。 #操作菜单模块 def operate_menu(): print("操作菜单:" ...
  • 在C语言环境下(Turbo C或VC)编写一个简单的管理学生学籍的应用程序。 通过本实验,使学生能够在C语言环境下熟练地编写基本的应用程序。 实验意义 通过本实验,使学生能够进一步理解C语言中结构和数组的使用...
  • 通过JAVA编写一个简单的雇员管理系统小项目

    千次阅读 多人点赞 2017-10-21 21:35:08
     * 项目:公司职员薪水管理系统  * 作者:zyj0813  * 项目需求:  * 1、添加新员工  * 2、根据员工号显示该员工信息  * 3、显示所有员工信息  * 4、删除员工信息  * 5、统计公司的平均薪水  * 6、...
  • 1.4 编写一个HelloWorld程序学习一种编程语言或编程环境,一般都首先编写一个“Hello World”程序。我们也用Qt Creator编写一个“Hello World”程序,以初步了解Qt Creator设计应用程序的基本过程,对使用Qt ...
  • 有若干个学生,每个学生含有学号,姓名,成绩,程序要求:编写一个inputdata函数用于输入N个学生的数据,编写一个outputdata函数用于输出N个学生的数据,编写一个avgdata函数用于计算且输出N个学生的平均成绩。...
  • 用基础的C++语言编写一个简单的员工工资管理系统系统功能简单 但可以进行更多功能的改进代码较为简单 很多地方仅是为了方便调试仍有许多不足的地方需要改进代码如下#include&lt;iostream&gt; #include&...
  • 微信小程序风靡全国已经好多年了,首先是微信小程序,后面百度等多个平台都发布了自己的小程序了,可我还从未尝试过开发一个玩玩,其实对于一个程序员而言,开发一个程序实在不是什么难事情,所以今天就要聊此心愿...
  • /*需求:学生管理系统  功能:对学生的信息进行管理 ... 管理员:一个(账号-String;密码-String);  学生的信息:  学号:String;姓名:String;  存储数据:两个数组(学号;姓名)-String  */ im
  • 用C语言编写的超市商品信息管理系统

    万次阅读 多人点赞 2015-04-19 21:35:41
    printf("\n\t\t\t\t超市商品信息管理系统\n"); printf("\t\t\t****************************\n");  printf("\t\t\t1.商品的录入\n"); printf("\t\t\t2.修改某个商品的信息\n"); printf("\t\t\t3.删除...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 568,072
精华内容 227,228
关键字:

编写一个信息管理程序