Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Ghast0529
9 / 9 / 15
Регистрация: 29.11.2015
Сообщений: 43
#1

Простая система регистрации с 3 операциями - C#

08.06.2016, 13:02. Просмотров 235. Ответов 3
Метки нет (Все метки)

Решил сделать одно тестовое задание. Нужно реализовать простую систему регистрации с 3 операциями:
  1. «register username password» — зарегистрировать нового пользователя с именем «username» и установить для него пароль «password». Если такой пользователь уже есть в базе данных, необходимо выдать ошибку «fail: user already exists». Иначе нужно вывести сообщение «success: new user added».
  2. «login username password» — войти в систему от имени пользователя «username» с паролем «password». Если такого пользователя не существует в базе данных, необходимо выдать «fail: no such user». Иначе, если был введен неправильный пароль, нужно выдать «fail: incorrect password». Иначе, если пользователь уже находится в системе в данный момент, необходимо вывести «fail: already logged in». Иначе нужно вывести сообщение «success: user logged in».
  3. «logout username» — выйти из системы пользователем «username». Если такого пользователя не существует, необходимо вывести «fail: no such user». Иначе, если пользователь не находится в системе в данный момент, следует выдать «fail: already logged out». Иначе необходимо выдать сообщение «success: user logged out».
Вроде всё учёл в коде, но при проверке пишет, что выводится неверный ответ, и я понятия не имею, где может быть ошибка. Может кто увидит?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            int k = int.Parse(Console.ReadLine());      // кол-во вводимых строк
            List<string> logged = new List<string>();
            Dictionary<string, string> d = new Dictionary<string, string>();
            for (int i = 0; i < k; i++)
            {
                string[] s = Console.ReadLine().Split();
                string l = s[1];
                switch (s[0])
                {
                    case "register":
                        if (d.ContainsKey(l))
                            Console.WriteLine("fail: user already exists");
                        else
                        {
                            d.Add(l, s[2]);
                            Console.WriteLine("success: new user added");
                        }
                        break;
                    case "login":
                        string p = s[2];
                        if (d.ContainsKey(l))
                        {
                            string pass;
                            d.TryGetValue(l, out pass);
                            if (!logged.Contains(l))
                                if (p == pass)
                                {
                                    Console.WriteLine("success: user logged in");
                                    logged.Add(l);
                                }
                                else Console.WriteLine("fail: incorrect password");
                            else Console.WriteLine("fail: already logged in");
                        }
                        else Console.WriteLine("fail: no such user");
                        break;
                    case "logout":
                        if (d.ContainsKey(l))
                            if (logged.Contains(l))
                            {
                                Console.WriteLine("success: user logged out");
                                logged.Remove(l);
                            }
                            else Console.WriteLine("fail: already logged out");
                        else Console.WriteLine("fail: no such user");
                        break;
                }
            }
 
            Console.ReadKey();
        }
    }
}

http://www.cyberforum.ru/csharp-beginners/thread1833541.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2016, 13:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Простая система регистрации с 3 операциями (C#):

Написать перечисление с арифметическими операциями
Напишите перечисление с арифметическими операциями: add, sub, mul, div. ...

Создать класс - очередь с перегруженными операциями ++и --
Создать класс - очередь с перегруженными операциями ++и --. В классе должны...

Математическая библиотека с основными операциями линейной алгебры
Нужно библиотека в которой есть функции вычислений линейной алгебры. Подскажите...

Не пользуясь ни какими другими арифметическими операциями, кроме умножения получить а^4 и а^20 за 5 операций
Дано действительное число а, не пользуясь ни какими другими арифметическими...

Не пользуясь никакими другими арифметическими операциями,кроме умножения получить а^21 за 6 операций
Дано действительное число а.Не пользуясь никакими другими арифметическими...

3
valera_21
365 / 351 / 91
Регистрация: 05.01.2010
Сообщений: 1,458
Завершенные тесты: 5
08.06.2016, 13:12 #2
Цитата Сообщение от Ghast0529 Посмотреть сообщение
но при проверке пишет
при какой еще проверке?
имена переменных - ужас
0
Ghast0529
9 / 9 / 15
Регистрация: 29.11.2015
Сообщений: 43
08.06.2016, 13:14  [ТС] #3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            int k = int.Parse(Console.ReadLine());      // кол-во вводимых строк
            List<string> logged = new List<string>();   // залогиненные юзеры
            Dictionary<string, string> d = new Dictionary<string, string>();      // логин, пароль
            for (int i = 0; i < k; i++)
            {
                string[] s = Console.ReadLine().Split();
                string l = s[1];     // логин
                switch (s[0])
                {
                    case "register":
                        if (d.ContainsKey(l))
                            Console.WriteLine("fail: user already exists");
                        else
                        {
                            d.Add(l, s[2]);
                            Console.WriteLine("success: new user added");
                        }
                        break;
                    case "login":
                        string p = s[2];          // пароль
                        if (d.ContainsKey(l))
                        {
                            string pass;
                            d.TryGetValue(l, out pass);
                            if (!logged.Contains(l))
                                if (p == pass)
                                {
                                    Console.WriteLine("success: user logged in");
                                    logged.Add(l);
                                }
                                else Console.WriteLine("fail: incorrect password");
                            else Console.WriteLine("fail: already logged in");
                        }
                        else Console.WriteLine("fail: no such user");
                        break;
                    case "logout":
                        if (d.ContainsKey(l))
                            if (logged.Contains(l))
                            {
                                Console.WriteLine("success: user logged out");
                                logged.Remove(l);
                            }
                            else Console.WriteLine("fail: already logged out");
                        else Console.WriteLine("fail: no such user");
                        break;
                }
            }
 
            Console.ReadKey();
        }
    }
}
0
Tsin
720 / 465 / 183
Регистрация: 30.12.2012
Сообщений: 1,264
Записей в блоге: 2
Завершенные тесты: 3
08.06.2016, 15:05 #4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            RegSystem registerSystem = new RegSystem();
            registerSystem.LogMessage += registerSystem_LogMessage;
 
            //you code goes here
        }
 
        static void registerSystem_LogMessage(string msg)
        {
            Console.WriteLine(msg);
        }
    }
 
    public class RegSystem
    {
        private HashSet<UserInfo> _db;
 
        public RegSystem()
        {
            _db = new HashSet<UserInfo>();
        }
 
        public void Register(string username, string password)
        {
            var user = _db.FirstOrDefault(x => x.Name == username);
 
            if (user == null)
            {
                _db.Add(new UserInfo(username, password));
                OnLogMessage("success: new user added");
            }
            else
            {
                OnLogMessage("fail: user already exists");
            }
        }
 
        public void Login(string username, string password)
        {
            var user = _db.FirstOrDefault(x => x.Name == username);
 
            if (user == null)
            {
                OnLogMessage("fail: no such user");
                return;
            }
 
            if (user.Password != password)
            {
                OnLogMessage("fail: incorrect password");
                return;
            }
 
            if (user.Online)
            {
                OnLogMessage("fail: already logged in");
                return;
            }
 
            user.Online = true;
            OnLogMessage("success: user logged in");
        }
 
        public void Logout(string username)
        {
            var user = _db.FirstOrDefault(x => x.Name == username);
 
            if (user == null)
            {
                OnLogMessage("fail: no such user");
                return;
            }
 
            if (!user.Online)
            {
                OnLogMessage("fail: already logged out");
                return;
            }
 
            user.Online = false;
        }
 
        #region log
 
        public event Action<string> LogMessage;
 
        private void OnLogMessage(string cause)
        {
            if (LogMessage != null)
                LogMessage(cause);
        }
 
        #endregion log
    }
 
    public class UserInfo
    {
        public string Name { get; set; }
        public string Password { get; set; }
        public bool Online { get; set; }
 
        public UserInfo(string name, string password)
        {
            Name = name;
            Password = password;
            Online = false;
        }
    }
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2016, 15:05
Привет! Вот еще темы с решениями:

Абстрактный класс Pair (пара значений) с виртуальными арифметическими операциями и методом вывода на экран
Подумал может кому пригодится :) Наследование В программах требуется ...

Система уравнений с битовыми операциями
Доброе время суток, друзья! Помогите пожалуйста решить задачу: Дана система...

Вычисление выражений с операциями отношения и логическими операциями
Лабораторная Работа № 5 Тема: Вычисление выражений с операциями отношения и...

Система регистрации
Здравствуйте. Снова нужна Ваша помощь. Не везет мне как-то с лабораторной. Во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru